以下是一些 Linux 中相对不常见但功能强大的命令及其详细解释,适用于高级用户或特定场景:
1. 文本处理类
comm
用途:比较两个已排序文件的行差异,输出三列结果(仅第一个文件、仅第二个文件、共有的行)。
示例:
1 | comm file1.txt file2.txt |
参数:
-1:隐藏仅第一个文件独有的行-2:隐藏仅第二个文件独有的行-3:隐藏共有的行
join
用途:基于共同字段(类似 SQL JOIN)合并两个已排序的文件。
示例:
1 | join -1 2 -2 1 file1.txt file2.txt # 合并 file1 的第2列和 file2 的第1列 |
column
用途:将输入文本格式化为对齐的列(类似表格)。
示例:
1 | echo "Name Age\nAlice 30\nBob 25" | column -t |
输出:
1 | Name Age |
2. 系统监控与调试
pidstat
用途:监控进程的 CPU、内存、I/O 等资源使用情况(需安装 sysstat 包)。
示例:
1 | pidstat -d 2 # 每2秒显示进程的磁盘I/O统计 |
mpstat
用途:报告 CPU 使用情况(多核细化统计)。
示例:
1 | mpstat -P ALL 1 # 每1秒显示所有CPU核心的利用率 |
lsof 的高级用法
用途:列出被进程打开的文件或网络连接。
示例:
1 | lsof -i :80 # 查看占用80端口的进程 |
3. 网络工具
nc (netcat)
用途:网络调试工具(端口扫描、文件传输、代理等)。
示例:
1 | nc -zv example.com 80 # 检查端口是否开放 |
ss (Socket Statistics)
用途:查看网络连接信息(替代 netstat)。
示例:
1 | ss -tunap # 显示所有TCP/UDP连接及关联进程 |
4. 文件与磁盘
rename
用途:批量重命名文件(支持正则表达式)。
示例:
1 | rename 's/.txt/.md/' *.txt # 将所有.txt扩展名改为.md |
注意:不同发行版语法可能不同(Perl 或 C 版本)。
fallocate
用途:预分配或释放文件空间(无需填充内容)。
示例:
1 | fallocate -l 1G bigfile.img # 快速创建1GB的空文件 |
debugfs
用途:手动修复 ext2/3/4 文件系统(谨慎使用)。
示例:
1 | debugfs /dev/sda1 |
5. 时间与计划任务
chronyc
用途:监控和调整 chronyd 时间同步服务。
示例:
1 | chronyc tracking # 查看时间同步状态 |
6. 终端控制
script
用途:记录终端会话的所有输入输出。
示例:
1 | script -t 2> timing.log -a output.log # 记录操作并保存时间戳 |
回放:
1 | scriptreplay timing.log output.log |
7. 其他实用工具
tac
用途:反向输出文件内容(cat 的逆序版)。
示例:
1 | tac file.txt # 从最后一行开始显示 |
rev
用途:反转每行字符的顺序。
示例:
1 | echo "hello" | rev # 输出 "olleh" |
watch
用途:周期性执行命令并显示输出。
示例:
1 | watch -n 1 -d "ls -l" # 每秒刷新并高亮变化 |
cal 的高级用法
示例:
1 | cal -3 # 显示上/当前/下月 |
总结场景
- 文本分析:
comm,join,column - 系统调试:
pidstat,lsof,debugfs - 网络诊断:
nc,ss - 批量操作:
rename,fallocate - 记录与回放:
script
这些命令在特定场景下能显著提高效率,但需谨慎使用系统级工具(如 debugfs)。