200字
Linux系统中二十二个重要但不常用的自带工具指令介绍
2025-12-02
2025-12-02

Linux操作系统以其强大的命令行工具集著称。除了 grepfindtar等日常高频命令外,系统还内置了大量功能专一、设计精巧的工具。它们在特定场景下能极大提升效率,却常因“不常用”而被忽视。本文将按类别介绍其中二十余个这样的工具,并辅以实例说明。

一、 文件与数据处理类

这类工具专注于文件的比较、转换、分割与校验。

1. cmp

  • 简介:逐字节比较两个文件是否完全相同。与 diff输出差异内容不同,cmp只报告第一个不同字节的位置,适合快速校验二进制文件。
  • 示例
    # 比较两个编译后的二进制文件
    cmp file1.bin file2.bin
    # 输出:file1.bin file2.bin differ: byte 123, line 4
    # 静默比较,仅通过退出码表示结果(0相同,1不同)
    cmp -s file1.bin file2.bin && echo "Files are identical"
    

2. comm

  • 简介:逐行比较两个已排序文件,输出三列:仅文件1有的行、仅文件2有的行、两个文件共有的行。是分析集合交集、差集的利器。
  • 示例
    # 准备两个已排序的名单文件
    sort list1.txt > list1_sorted.txt
    sort list2.txt > list2_sorted.txt
    # 找出只在list1中的人
    comm -23 list1_sorted.txt list2_sorted.txt
    # 找出两个列表共有的人
    comm -12 list1_sorted.txt list2_sorted.txt
    

3. split

  • 简介:将大文件分割成若干小文件。常用于处理日志归档、网络传输大文件前的分片。
  • 示例
    # 将large.log按每1000行分割,生成文件前缀为log_part_
    split -l 1000 large.log log_part_
    # 按文件大小分割,每个小文件100M
    split -b 100M huge_backup.tar.gz backup_part_
    

4. cksum / md5sum / sha256sum

  • 简介:计算文件的校验和(CRC)、MD5或SHA256哈希值。用于验证文件完整性,确保传输或存储过程中未被篡改。
  • 示例
    # 计算文件的CRC校验和
    cksum important.zip
    # 计算并保存MD5值到文件
    md5sum package.iso > package.iso.md5
    # 之后验证文件是否损坏
    md5sum -c package.iso.md5
    

5. rsync

  • 简介:强大的远程(或本地)文件同步与备份工具。它通过差异算法只传输文件中变化的部分,效率极高,支持断点续传、保持属性等。
  • 示例
    # 本地目录同步(模拟运行,显示将要执行的操作)
    rsync -avn ~/Documents/ /backup/Documents/
    # 实际执行同步,保持权限、时间戳,并压缩传输
    rsync -avz ~/Documents/ /backup/Documents/
    # 通过SSH同步到远程服务器,并删除目标端源端已不存在的文件
    rsync -avz --delete ~/www/ user@remotehost:/var/www/
    

二、 文本处理与过滤类

6. grep

  • 简介:虽然常用,但其部分高级功能常被忽略。用于在文本中搜索匹配模式的行。
  • 示例
    # 基础搜索
    grep "error" /var/log/syslog
    # 显示匹配行及其后3行上下文
    grep -A 3 "panic" kernel.log
    # 递归搜索目录下所有文件,只输出匹配的文件名
    grep -rl "TODO" ./src/
    # 使用Perl兼容正则表达式(PCRE),功能更强大
    grep -P "\d{3}-\d{4}" contacts.txt
    

7. tail

  • 简介:输出文件尾部内容。除了常见的看日志,其 -f(follow)模式是监控日志实时增长的经典用法。
  • 示例
    # 查看文件最后10行(默认)
    tail /var/log/auth.log
    # 查看最后50行
    tail -n 50 app.log
    # **实时追踪**日志文件的新增内容(运维必备)
    tail -f /var/log/nginx/access.log
    # 结合grep实时监控包含“ERROR”的日志行
    tail -f app.log | grep --line-buffered ERROR
    

8. column

  • 简介:将输入格式化为对齐的列,类似于表格。对于美化 psmount等命令的输出非常有用。
  • 示例
    # 将逗号分隔的CSV数据格式化成整齐的表格
    echo "Name,Age,City\nAlice,30,New York\nBob,25,London" | column -t -s,
    # 格式化mount命令的输出,使其更易读
    mount | column -t
    

9. paste

  • 简介:水平合并多个文件的行,默认以制表符分隔。与 cut垂直切割相反。
  • 示例
    # 将两个文件的行并排合并
    paste names.txt ages.txt
    # 用指定分隔符(如冒号)合并
    paste -d ':' names.txt ages.txt > users.txt
    

10. fmt

  • 简介:简单的文本格式化程序,将长段落重新格式化为指定宽度,保持单词完整。
  • 示例
    # 将文本格式化为每行最大80个字符
    fmt -w 80 long_paragraph.txt
    # 从标准输入读取并格式化
    echo "This is a very long line that needs to be wrapped properly." | fmt
    

三、 系统监控与进程管理类

深入观察系统内部状态的工具。

11. lsof

  • 简介:列出(List)打开文件(Open Files)的进程。在Linux中“一切皆文件”,因此它可用来查看进程打开的常规文件、目录、网络连接、管道等。
  • 示例
    # 查看哪个进程在使用某个文件
    lsof /var/log/syslog
    # 查看某个进程(如PID为1234)打开的所有文件
    lsof -p 1234
    # 查看所有监听TCP端口的进程
    lsof -iTCP -sTCP:LISTEN
    # 查看谁在使用80端口
    lsof -i :80
    

12. nc (netcat)

  • 简介:网络的“瑞士军刀”,可用于TCP/UDP数据的读写、端口扫描、临时端口监听、文件传输等。
  • 示例
    # 监听端口9999,接收到的数据保存到文件
    nc -l -p 9999 > received_file
    # 在另一台机器上,向该端口发送文件
    nc remote_host 9999 < file_to_send
    # 快速测试远程主机端口是否开放
    nc -zv google.com 80
    

13. watch

  • 简介:定期执行指定命令,并全屏显示其输出。用于监控命令结果的变化。
  • 示例
    # 每2秒监控一次系统内存使用情况
    watch -n 2 free -h
    # 监控目录下文件数量的变化,并高亮差异
    watch -d 'ls -la | wc -l'
    

14. time

  • 简介:注意是shell内置命令或 /usr/bin/time。用于测量命令执行所消耗的实际时间、用户态CPU时间、内核态CPU时间。
  • 示例
    # 测量一个脚本的运行时间详情
    /usr/bin/time ./my_script.sh
    # 输出类似:0.50user 0.10system 0:00.65elapsed 93%CPU ...
    

15. pidof

  • 简介:根据进程名查找其PID(进程ID),比用 psgrep组合更简洁。
  • 示例
    # 查找nginx主进程的PID
    pidof nginx
    # 配合kill命令使用
    kill $(pidof some_service)
    

四、 网络与通信类

处理网络配置和调试。

16. nslookup / dig

  • 简介:DNS查询工具。dig功能更强大,输出格式更规范,适合脚本调用。
  • 示例
    # 查询域名的A记录
    dig example.com
    # 查询MX记录(邮件服务器)
    dig mx example.com
    # 使用特定DNS服务器查询
    dig @8.8.8.8 example.com
    

17. traceroute / tracepath

  • 简介:追踪数据包从源主机到目的主机经过的所有路由节点,用于诊断网络延迟和路由问题。tracepath无需root权限。
  • 示例
    # 追踪到目标主机的路径
    traceroute google.com
    tracepath google.com
    

18. hostname

  • 简介:显示或设置系统的主机名。其 -I选项可以快速列出所有非回环的IP地址。
  • 示例
    # 显示本机所有IP地址(非常实用)
    hostname -I
    # 显示完整的域名(FQDN)
    hostname -f
    

五、 用户与权限管理类

19. chage

  • 简介:更改用户密码的“年龄”信息,即密码过期策略。比直接编辑 /etc/shadow文件更安全。
  • 示例
    # 查看用户“alice”的密码过期信息
    chage -l alice
    # 设置用户密码30天后过期,提前7天警告
    chage -M 30 -W 7 alice
    

20. getfacl / setfacl

  • 简介:获取和设置文件/目录的访问控制列表(ACL),用于实现比传统 rwx更精细的权限控制。
  • 示例
    # 查看文件详细的ACL权限
    getfacl shared_folder/
    # 授予特定用户“bob”对目录的读写执行权限
    setfacl -m u:bob:rwx shared_folder/
    # 设置默认ACL,使在此目录下新建的文件继承ACL
    setfacl -d -m u:bob:rwx shared_folder/
    

六、 其他实用工具

21. cal

  • 简介:在终端显示日历。支持显示指定年月、全年日历等。
  • 示例
    # 显示当前月日历
    cal
    # 显示2024年全年日历
    cal 2024
    # 显示2024年7月的日历
    cal 7 2024
    

22. bc

  • 简介:一个任意精度的计算器语言,支持交互式和脚本式计算,尤其适合浮点和进制转换运算。
  • 示例
    # 交互式计算
    echo "scale=10; 10/3" | bc  # 输出 3.3333333333
    # 进制转换:将255转换为二进制和十六进制
    echo "obase=2; 255" | bc  # 输出 11111111
    echo "obase=16; 255" | bc  # 输出 FF
    
Linux系统中二十二个重要但不常用的自带工具指令介绍
作者
YeiJ
发表于
2025-12-02
License
CC BY-NC-SA 4.0

评论