shell(终端或壳)命令行工具,充当用户与内核(硬件)之间的翻译官。

shell采用的解释器有很多,默认使用的是Bash(Bourne-Again Shell),很强大,应用广泛。

1. 帮助手册

两种方式

  • man top 查看手册
  • ps –help 请求帮助

man命令查看的帮助内容往往很长,可以通过以下快捷键快速定位查找:

表1 man 命令中常用按键以及用途

按键 用途
空格键 向下翻一页
PaGe down 向下翻一页
PaGe up 向上翻一页
home 直接前往首页
end 直接前往尾页
/ 从上至下搜索某个关键词,如“/linux”
? 从下至上搜索某个关键词,如“?linux”
n 定位到下一个搜索到的关键词
N 定位到上一个搜索到的关键词
q 退出帮助文档

2. 常用命令

1. 基本常用
  • ls -a/-l/-d/-t 详细了解下重要的几个参数

  • cd / pwd

  • echo $SHELL

  • reboot / poweroff

  • date

    1
    2
    3
    4
    5
    date "+%Y-%m-%d %H:%M:%S"
    2017-08-24 16:29:12
    date -s "20170901 8:30:00" # 设置系统时间
    Fri Sep 1 08:30:00 CST 2017
    hwclock –w # 将系统时间同步到硬件时间
  • wget

    表 2 wget 命令的参数以及作用

    参数 作用
    -b 后台下载模式
    -P 下载到指定目录
    -t 最大尝试次数
    -c 断点续传
    -p 下载页面内所有资源,包括图片、视频等
    -r 递归下载
    1
    wget -r -p http://www.linuxprobe.com  # 递归下载整个页面
  • ps

    表 3 ps 命令的参数以及作用

    参数 作用
    -a 显示所有进程(包括其他用户的进程)
    -u 用户以及其他详细信息
    -x 显示没有控制终端的进程

    常见的进程状态:

    • R(运行): 进程正在运行或在运行队列中等待。
    • S(中断): 进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该
      状态。
    • D(不可中断): 进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
    • Z(僵死): 进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数
      后将进程释放。
    • T(停止): 进程收到停止信号后停止运行。
  • top 键入后,还有很多交互操作,比如:按1,查看各CPU core使用情况

  • pidof 快捷方便,可以查看某个服务的全部进程号 e.g. pidof sshd

  • kill / killall killall 可以杀掉有多个协同进程的服务 e.g. killall httpd

2. 系统状态查看
  • uname -a/-r/-m 系统版本 cat /etc/redhat-release
  • ifconfig inet: IP地址;ether: MAC地址; RX/TX收发数据量
  • uptime 查看启用的终端数量,系统负载等
  • who / last 查看当前/所有系统的登入主机的用户记录信息
  • history -c 清除; vim /etc/profile HISTSIZE 可以修改记录的数目; ./bash_history 保存历史命令的缓冲区
  • sosreport 收集系统配置及架构信息的诊断报告,会打包到 /var/tmp目录下
3. 文本查看和编辑
  • cat / more / less 一个比一个强大,more和less有很多快捷功能 -n: 显示行号

  • head / tail -n -f

  • tr 替换字符,注意是字符,不是单词 e.g. cat test.log | tr [a-z] [A-Z] 实现小写转大写显示

  • wc -l / -w / -c 文本统计指令

  • stat 相当于查看文件属性,常用于文件的存储、权限、时间信息查询

  • cut -d [自定义分割符号] -f [分割后的第几列] 按列提取文本信息

    cut -d: -f1 /etc/passwd 以冒号分割,给出第1列

  • diff -c / –brief A.txt B.txt 文件对比

    -c详细比较;--brief判断文件是否相同

  • grep [选项] [文件] global regular expression print(全局正则表达式)

    表 2-15 grep 命令的参数及其作用

    参数 作用
    -b 将可执行文件( binary)当作文本文件( text)来搜索
    -c 仅显示找到的行数
    -i 忽略大小写
    -n 显示行号
    -v 反向选择—仅列出没有“关键词”的行
    -E 扩展模式
    -q 安静模式,不向标准输出写任何东西,找到匹配的立即返回0
  • find [路径] [查找条件] [执行操作]

    表 4 find 命令中的参数以及作用

    参数 作用
    -name 匹配名称
    -perm 匹配权限( mode 为完全匹配, -mode 为包含即可)
    -user 匹配所有者
    -group 匹配所有组
    -mtime -n +n 匹配修改内容的时间( -n 指 n 天以内, +n 指 n 天以前)
    -atime -n +n 匹配访问文件的时间( -n 指 n 天以内, +n 指 n 天以前)
    -ctime -n +n 匹配修改文件权限的时间( -n 指 n 天以内, +n 指 n 天以前)
    -nouser 匹配无所有者的文件
    -nogroup 匹配无所有组的文件
    -newer f1 !f2 匹配比文件 f1 新但比 f2 旧的文件
    –type b/d/c/p/l/f 匹配文件类型(后面的字幕参数依次表示块设备、目录、字符设备、管道、 链接文件、文本文件)
    -size 匹配文件的大小( +50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件)
    -prune 忽略某个目录
    -exec …… {}; 后面可跟用于进一步处理搜索结果的命令

    举两个例子:

    1
    2
    find /etc -name "host*" -print  # -print可省略
    find . -name "*.txt" -exec cp {} /home/ \; # \; 一定不能少
4. 目录管理指令
  • mkdir -p 创建目录

  • touch 创建空白文件

    ​ 还有一个重要功能,就是修改文件的属性时间 -a / -m / -d:读取access,修改modify,同时读写double

    e.g. touch -d "2022-05-04 15:00" conf.yml

  • mv 移动和重命名

  • rm -rf 删除

  • cp 关注一些参数

    表 4 cp 命令的参数及其作用

    参数 作用
    -p 保留原始文件的属性
    -d 若对象为“链接文件”,则保留该“链接文件”的属性
    -r 递归持续复制(用于目录)
    -i 若目标文件存在则询问是否覆盖
    -a 相当于-pdr( p、 d、 r 为上述参数)
  • dd 按照指定大小和数据块来复制或转换文件

    1
    2
    dd if=/dev/zero of=560_file count=1 bs=560M
    dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso # 制作iso镜像文件
  • file 因为Linux下文件不以后缀标识文件类型,所以需要file命令查看

5. 打包和压缩
  • tar [选项] [文件]

    表 5 tar 命令的参数及其作用

    参数 作用
    -c 创建压缩文件
    -x 解开压缩文件
    -t 查看压缩包内有哪些文件
    -z 用 Gzip 压缩或解压
    -j 用 bzip2 压缩或解压
    -v 显示压缩或解压的过程
    -f 目标文件名
    -p 保留原始的权限与属性
    -P 使用绝对路径来压缩
    -C 指定解压到的目录

    常用组合

    1
    2
    tar -czvf result.tar.gz /result    # 打包
    tar -xzvf result.tar.gz -C /home/user # 解包