Linux基础

基础系列(一)

Linux操作系统

  • 完整的类UNIX操作系统
  • Linux内核+GNU工具,如:CentOS,Ubuntu,Android

Linux工作原理
这里写图片描述

  • 应用程序通过shell实现对硬件的操作

Linux哲学思想

  • 一切皆文件(包括硬件)
  • 程序小型且单一
  • 链接程序形成流水线进行工作
  • 简洁的用户界面
  • 数据存储于文本中

开发接口标准

  • ABI:程序与操作系统之间的底层接口
  • API:源代码与库之间的接口

空间

  • user space:用户空间。必须通过系统接口才能向内核发出指令,不能直接调用系统资源
  • kernel space:内核空间。是Linux内核的运行空间,可执行任何命令,调用系统一切资源

SHELL

  • shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。接收用户的命令并交由内核执行
  • shell是高级程序设计语言,被称为Linux的命令解释器

执行命令

在shell中可执行的命令有两类

  • 内部命令:由shell自带,而且通过某命令形式提供
  • 外部命令:在文件系统路径下有对应的可执行程序文件

终端terminal

  • 查看当前终端设备:#tty
  • 设备终端(I/O)集合为物理终端(/dev/console)对应于设备文件
  • 虚拟终端(纯文本界面,/dev/tty#) #为1-6。Ctrl+Alt+F[1-6]切换
  • 图形终端(/dev/tty7)
  • 串行终端(/dev/ttyS#)
  • 伪终端(/dev/pts/#)

帮助手册

使用帮助手册之前,使用type命令查看是内部命令还是外部命令

  • 语法:type [COMMAND]

  • 内部命令:

help COMMAND

这里写图片描述
- 外部命令:

COMMAND --help
man COMMAND

这里写图片描述

基础系列(二)

文件系统

这里写图片描述

  • Linux文件系统分层标准(Filesystem Hierarchy Standard)为一个倒置的树状结构,通过根的自引用可以访问到文件系统之下的各个文件
  • 标准Linux文件系统(如ext4),文件名称大小写敏感,文件名最长255个字节,包括路径在内文件名称最长4095个字节
  • /boot:引导文件存放目录,内核文件、引导加载器都存放于此目录
  • /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /lib:启动时程序依赖的基本共享库文件以及内核模块文件
  • /lib64:专用于x86_64系统上的辅助共享库文件存放位置
  • /etc:配置文件目录
  • /home/USERNAME:普通用户家目录
  • /root:管理员的家目录
  • /media:便携式移动设备挂载点
  • /mnt:临时文件系统挂载点
  • /dev:设备文件及特殊文件存储位置
  • b: block device,随机访问
  • c: character device,线性访问
  • /opt:第三方应用程序的安装位置
  • /srv:系统上运行的服务用到的数据
  • /tmp:临时文件存储位置

索引节点

  • inode(index node)表中包含文件系统所有文件列表

一个索引节点是在一个表项,包含有关文件的信息( 元数据 ),包括:

  • 文件类型,权限,UID,GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据

硬链接

  • 语法:ln filename [linkname]
  • ls -i 显示文件的inode
  • 不同文件路径指向同一个inode
  • 创建硬链接会增加inode的引用计数
  • 对应于同一文件系统上一个物理文件
  • 无法跨分区、驱动器
  • 目录不支持硬链接,避免循环引用

删除文件时:
- rm命令递减计数的链接
- 文件存在需至少有一个链接数
- 链接数为零,文件被删除

软链接(符号链接)

  • 语法:ln -s filename [linkname]
  • 类似文件的快捷方式
  • 是指向另一个文件的路径;其大小为指向的路径字符串的长度;不增减目标的inode引用计数
  • 可指向目录、文件
  • 可跨分区

缺省(系统默认状态)

  • 程序大多都有I/O,且不止一个
  • 程序执行关联设备:标准输入,标准输出,错误输出

input 文件描述符:0

  • 缺省位置:/dev/stdin —〉keyboard

output 文件描述符:1

  • 缺省位置:/dev/stdout —〉terminal monitor

error 文件描述符:2

  • 缺省位置:/dev/stdout —〉terminal monitor

创建空文件和刷新时间

  • 语法:touch [OPTION]... FILE...

这里写图片描述

复制文件和目录

  • 语法:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST

移动和重命名文件

  • 语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

删除文件

  • 语法:
rm [OPTION]... FILE...

目录操作

  • tree 显示目录树
  • mkdir 创建目录
  • rmdir 删除空目录
  • rm -r 递归删除目录树

重定向

  • 输入:<,<<
  • 输出:>,>>
  • 错误输出:2>,2>>

管道

  • 语法:COMMAND1 | COMMAND2 | COMMAND3 |...
  • 用来连接命令,将前一个命令的输出作为后一个命令的输入
  • 最后一个命令会在当前shell进程的子shell进程中执行

基础系列(三)

用户和组管理命令

  • 用户管理命令

useradd 创建用户
usermod 用户属性修改
userdel 删除用户

  • 组帐号维护命令

groupadd 创建组
groupmod 组属性修改
groupdel 删除组

密码

  • 用户密码

语法:

passwd [OPTIONS] UserName
  • 组密码

语法:

gpasswd [OPTION] GROUP

基础系列(四)

正则表达式

  • 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本
  • 基本正则表达式:BRE
  • 扩展正则表达式:ERE

  • grep 文本过滤(模式:pattern)工具
    grep, egrep, fgrep(不支持正则表达式搜索)
    grep -E = egrep

  • sed stream editor,文本编辑工具

    语法:

sed [option]... 'script' inputfile...
  • awk Aho, Weinberger, Kernighan,Linux上的实现gawk,文本报告生成器,格式化文本输出

语法:

awk [options] 'program' file
awk [options] ‘programvar=value file
awk [options] -f programfile var=value file…
awk [options]  'BEGIN{ action;… } pattern{ action;… } END{ action;…}' file ...

VIM

  • vi: Visual Interface,文本编辑器
  • 行编辑器: sed
  • 全屏编辑器:nano, vi
  • VIM:Vi IMproved,是一个类似于vi的文本编辑器,在vi的基础上改进和增加了很多特性

配置VIM

  • 配置文件:永久有效

全局:/etc/vimrc

个人:~/.vimrc

  • 扩展模式:当前vim进程有效

  • 行号

    1. 启用:set nu
    2. 禁用:set nonu
  • 忽略大小写

    1. 启用:set ic
    2. 禁用:set noic
  • 自动缩进

    1. 启用:set ai
    2. 禁用:set noai
  • 智能缩进

    1. 启用:set si
    2. 禁用:set nosi
  • 高亮搜索

    1. 启用:set hlsearch
    2. 禁用:set nohlsearch
  • 语法高亮

    1. 启用:syntax on
    2. 禁用:syntax off
  • 显示tab和换行符^I和$显示

    1. 启用:set list
    2. 禁用:set nolist
  • 文件格式

    1. 启用Windows格式:set ff=dos
    2. 启用Unix格式:set ff=unix
  • 设置文本宽度

    1. 启用:set textwidth=65
    2. 禁用:set wrapmargin=15
  • 设置光标所在行的标识线

    1. 启用:set cul
    2. 禁用:set nocul
  • 复制保留格式

    1. 启用:set paste
    2. 禁用:set nopaste

基础系列(五)

程序包管理器

  • 将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
    • debian:deb文件,dpkg包管理器
    • redhat:rpm文件, rpm包管理器
    • rpm:
      1. Redhat Package Manager
      2. RPM Package Manager

管理RPM包

  • 使用包管理器:rpm
  • 使用前端工具:yum,dnf
  • 语法:

安装:

rpm {-i|--install} [install-options] PACKAGE_FILE…

升级:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...

查询:

rpm {-q|--query} [select-options] [query-options]

卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

yum

  • Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
  • yum客户端配置文件:
    /etc/yum.conf:为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置
  • 语法:

显示仓库列表:

yum repolist [all|enabled|disabled]

显示程序包:

yum list

安装程序包:

yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)

升级程序包:

yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)

检查可用升级:

yum check-update

卸载程序包:

yum remove | erase package1 [package2] [...]

搜索:

yum search string1 [string2] [...]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值