Linux Shell 常用命令

常用操作命令

Linux 系统中常用管理命令

  • ls 列出目标目录中所有的子目录和文件(ls命令就是list的缩写)
    • a: –all 列出目录下的所有文件,包括以 . 开头的隐含文件
    • A: 同-a,但不列出“./”(表示当前目录)和“../”(表示当前目录的父目录)。
    • c: 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合
    • l:显示 ctime 但根据名称排序否则:根据 ctime 排序
    • C: 每栏由上至下列出项目–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是’never’、’always’或’auto’其中之一
    • d: –directory 将目录象文件一样显示,而不是显示其下的文件。
    • D: –dired 产生适合 Emacs 的 dired 模式使用的结果
    • f: 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
    • g: 类似 -l,但不列出所有者-G, –no-group 不列出任何有关组的信息
    • h: –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
    • si: 类似 -h,但文件大小取 1000 的次方而不是 1024
    • H: –dereference-command-line 使用命令列中的符号链接指示的真正目的地
    • indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
    • i: –inode 印出每个文件的 inode 号
    • I: –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
    • k: 即 –block-size=1K,以 k 字节的形式表示文件的大小。
    • l: 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
    • L: –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
    • m: 所有项目以逗号分隔,并填满整行行宽
    • o: 类似 -l,显示文件的除组信息外的详细信息。
    • r: –reverse 依相反次序排列
    • R: –recursive 同时列出所有子目录层
    • s: –size 以块大小为单位列出所有文件的大小
    • S: 根据文件大小排序
  • pwd 显示当前目录
  • mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。
    • -m, –mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
    • -p, –parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
    • -v, –verbose 每次创建新目录都显示信息
    • –help 显示此帮助信息并退出–version 输出版本信息并退出
  • rm 是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。
    • -f, –force 忽略不存在的文件,从不给出提示。
    • -i, –interactive 进行交互式删除
    • -r, -R, –recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
    • -v, –verbose 详细显示进行的步骤
    • –help 显示此帮助信息并退出
    • –version 输出版本信息并退出
  • cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一。
    • -a, –archive 等于-dR –preserve=all
    • –backup[=CONTROL 为每个已存在的目标文件创建备份
    • -b 类似–backup 但不接受参数
    • –copy-contents 在递归处理是复制特殊文件内容
    • -d 等于–no-dereference –preserve=links
    • -f, –force 如果目标文件无法打开则将其移除并重试(当 -n 选项 存在时则不需再选此项)
    • -i, –interactive 覆盖前询问(使前面的 -n 选项失效)
    • -H 跟随源文件中的命令行符号链接
    • -l, –link 链接文件而不复制
    • -L, –dereference 总是跟随符号链接
    • -n, –no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
    • -P, –no-dereference 不跟随源文件中的符号链接
    • -p 等于–preserve=模式,所有权,时间戳–preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
    • -R, -r, –recursive 复制目录及目录内的所有项目
  • mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),经常用来备份文件或者目录。
    • -b :若需覆盖文件,则覆盖前先行备份。
    • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    • -u :若目标文件已经存在,且 source 比较新,才会更新(update)
    • -t : –target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
  • touch 命令用于新建文件或者更新文件更改时间
    • -a 只更改存取时间
    • -c 不创建任何文件
    • -d <时间日期> 使用指定的日期时间,而非现在的时间
    • -m 只更改变动时间
    • -r <参考文件或目录> 把指定目录的日期时间,设置成跟参考文件或目录相同
    • -t <日期时间> 使用指定的日期时间,而非现在的时间
  • ln 创建链接命令
    • -s 创建指向文件/目录的软链(没有 -s 默认创建硬链接)
    • 目录不能创建硬链接

文件查找

  • which 查找命令所在文件显示路径
    • +命令参数
  • whereis 查找可执行命令,会创建文件系统的数据库,查找时在保存的数据库中查找
    • updatedb 更新保存的数据库
    • -b 只查找二进制文件
    • -B <目录> 只在设置的目录下查找二进制文件
    • -f 不显示文件名前的路径名称
    • -m 只查找说明文件
    • -M<目录> 只在设置的目录下查找原始说明文件
    • -s 只查找原始代码文件
    • -S <目录> 只在设置的目录下查找原始代码文件
    • -u 查找不包含指定类型的文件
  • find [查找范围] [命令参数] [搜索的内容]
    • -name 按文件名进行查找
    • -size 按文件大小查找
    • -time 安装修改时间搜索
    • -perm 按文件权限搜索
    • -type 按文件类型查找

文件内容管理

  • cat 创建及显示文件内容
    • -n 从开始对所有输出的行进行编号
    • -b 和 -n 类似,对空白行不标号
    • -s 当遇到连续两行以上的空白行,就代换为一行空白行
    • -A 显示不可打印字符,行尾显示”$”
  • more 全屏或分页方式显示文件内容
    • 空格 向后翻页
    • Ctrl + b 向前翻页
  • less 和more类似,能更方便的浏览文件
    • \ 可进行搜索,有高亮提示
    • n 下一个搜索定位位置
  • diff 检测两个文件的区别
    • -y -w 并排文件输出显示
    • -u 统一格式输出
  • grep [选项] [匹配字符串模式] [搜索字符串] 文本搜索命令

历史记录

查看用户历史操作,shell命令记录默认保存在用户目录的.bash_history中

  • history
    • 选项
      • -c 清空历史命令
      • -w 把缓存中的历史命令写入历史命令保存
    • 快捷方式
      • “!n” 重复执行第n条历史命令
      • “!!”重复执行上一条命令
      • “! 字串”重复执行最后一条以改字串开头的命令
      • <CTRL + r> Shell进入增量搜索模式,选择相应命令后按再次执行该命令

输入输出重定向

将程序及设备输入输出重定向到其他位置

输出重定向

  • 命令 [ ] 文件
    • > :覆盖的方式写入到指定文件中
    • >>: 追加的方式写入到指定文件中
    • 命令>>文件1 2>>文件2
      把正确的结果写入文件1 错误的结果写入文件2
    • &>> 无论命令成功与否,都保存到文件中
    • 命令>>文件 2>&1
      无论命令成功与否,都保存到文件中,错误输出保存到前面文件当中

编辑命令行快捷键

控制命令

  • Ctrl +
    • l: 清屏(与clear命令相同)
    • o: 执行当前命令,并选择上一条命令
    • s:阻止屏幕输出(当前正在执行的命令不再打印信息)
    • q:允许屏幕输出(使用crtl+s后,用crtl+q恢复)
    • c:终止当前正在执行的命令
    • z:挂起命令,把当前进程转到后台运行,使用fg(foreground的缩写)命令恢复
    • d:退出当前Shell

编辑命令

  • 光标移动
    • Crtl +
      • a: 移到命令行首
      • e:移到命令行尾
      • f: 前移(向右移动)一个字符
      • b:后移(向左移动)一个字符
      • xx: 再命令行首和光标之间移动
    • Alt +
      • f:前移(向右移动)一个单词
      • b: 后移(向左移动)一个单词
  • 补全 删除 粘贴
    • tab: 自动补全命令

    • Ctrl +

      • u:从光标处删除至命令行首
      • k:从光标处删除至命令行尾
      • w:从光标处删除至字首
      • Alt + d:从光标处删除至字尾
      • d:删除光标处(或光标后)的字符(如果光标前后没有字符,即命令行为空的时候,则会退出shell)
      • h:删除光标前的字符(与backspace键相同)
      • Alt + Backspace 与 Ctrl + w 类似,分隔符有些差别
      • y: 粘贴至光标后

      命令的任务调度

  • 命令结尾后加&将命令置于后台运行
  • Ctrl + z 将当前任务置于后台
  • jobs 查看后台运行任务
  • fg + 编号 将后台任务回复到前台
  • bg + 编号 将后台暂停的命令变成继续执行

命令执行顺序

命令执行控制字符

  • &:将命令置于后台执行
  • ;:将多个命令组合起来按顺序执行
  • && :仅当前面命令执行成功后再执行后面命令
  • || :仅当前面命令执行失败后再执行后面命令

环境变量

PATH 环境变量

  • 添加环境变量
    • echo $HOME
    • 查询显示环境变量
    • export PATH:$PATH:/home/data
    • 只在当前环境下生效
    • 长期生效应改变户主目录下的 .profile 或 .bashrc 文件
    • 修改系统目录下的 profile 的文件
  • 常用命令
    • env:显示所有的环境变量
    • set:显示所有的本地定义的Shell变量
    • unset :删除指定的环境变量
      • f:仅删除函数
      • v:仅删除变量
    • readonly 设置变量只读
      • f: 定义只读函数
      • a:定义只读数组变量
      • p:显示系统中全部只读变量列表

用户与用户组管理

用户管理命令

  • useradd 添加新用户

    • +[用户名] 创建新用户
  • password 为用户添加密码

    • +[用户名] 配置用户密码

    目录和文件的属性

    文件和目录的属性即权限的配置

    • _ rw- r– r–
  • 文件类型

      • 常规文件
    • d 目录文件
    • b block device 即设备块文件
    • c character device 即字符设备文件
    • l symbolic link 即符号链接文件,又称软连接文件
    • p pipe 即命名管道文件
    • s socket 即套接字文件,用于两个进程进行通信
  • 权限分配

    • 文件所有者 rwx 421 (读写执行)
    • 文件所属组
    • 其他用户
  • chmod 选项 权限 文件名

  • 修改文件或目录的权限

    • who (u g o a)
    • opr (+ - =)
    • per (r w x)
    • 数字法 (777)
    • -R 对目录进行操作
  • chown 选项 所有者/所属组 文件

  • 修改文件和目录的所有者和所属组


压缩与归档

文件的归档与压缩

常见的压缩文件

  • *.Z compress 程序压缩的文件
  • *.gz gzip 程序压缩的文件
  • *.bz2 bzip2 程序压缩的文件
  • *.tar tar打包的数据,没有压缩过
  • *.tar.gz tar打包的数据,其中并且经过gzip的压缩
  • *.tar.bz tar打包的数据,其中并且经过bzip的压缩

压缩命令

  • gzip bzip2
    • -9 表示高压缩比,多在创建压缩包时用到
    • -d 表示解开已经压缩过的文件 或guzip

归档命令

  • tar
    • -c 创建 .tar 格式的包文件
    • -x 解开 .tar 格式的包文件
    • -C 解包时指定释放发目标文件
    • -z 调用 gzip 程序进行压缩或解压
    • -j 调用 bzip2 程序进行压缩或解压

磁盘分区与挂载

磁盘分区及设备挂载

  • fdisk 磁盘分区管理

    • -l 查看磁盘分区
    • +磁盘设备名 在交互界面进行分区
  • df 磁盘管理

    • -a 列出所有的文件系统,包括系统特有的/proc等文件
    • -k 以KBytes的容量显示各文件系统
    • -m 以MBytes的容量显示各文件系统
    • -h 以较易阅读的格式自行显示
    • -H 以 M=1000K 取代 M = 1024K 的进位方式
    • -T 显示文件系统类型
  • mkfs 创建文件系统(格式化)

    • -t 文件系统类型 分区设备
  • mount 挂载文件系统、IOS镜像到指定文件夹

    • [-t 类型] 存储设备 挂载点目录
    • -o loop ISO镜像文件 挂载点目录
  • umount 卸载已挂载的文件系统

    • 储存设备位置
    • 挂载点目录
  • 开机自动挂载配置

    • /etc/fstab 文件中进行配置

网络管理

网络管理即状态监测

  • ifconfig 显示网络接口的配置信息

    • 网络接口名 查看具体某一网络接口的信息
    • 网络接口 ip地址 [子网掩码] 配置ip地址
    • 接口名 up/down 开启或禁用网络端口
    • hw ether MAC地址 修改网卡的硬件地址
    • 接口名:序号 IP地址 设置虚拟网卡地址
  • netstat 查看系统的网络链接状态、路由表、接口统计等信息

    • -a 显示所有活动链接
    • -n 以数字形式显示
    • -p 显示进程信息
    • -t 查看TCP协议相关信息
    • -u 查看UDP协议相关信息
    • -r 显示路由表信息

进程管理

linux 启动流程

Image

  • ps 查看静态的进程统计信息
    • -aux
    • -elf
  • top 实时显示系统进程的信息