在 shell 脚本中,通道符(|)用于将一个命令的输出作为另一个命令的输入。下面是生产中通道符经常使用到的样例:
1.统计文件行数
cat file.txt | wc -l
- cat file.txt:输出文件内容。
- wc -l:统计行数。
- 组合后:统计 file.txt 文件的行数。
2.查找特定进程
ps aux | grep nginx
- ps aux:列出所有进程。
- grep nginx:过滤包含 nginx 的行。
- 组合后:查找与 nginx 相关的进程。
3.排序并去重
sort file.txt | uniq
- sort file.txt:对文件内容排序。
- uniq:去除重复行。
- 组合后:对文件内容排序并去重。
4.分页查看长输出
ls -l /usr/bin | less
- ls -l /usr/bin:列出 /usr/bin 目录的详细信息。
- less:分页查看输出。
- 组合后:分页查看 /usr/bin 目录的内容。
5.统计单词频率
cat file.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
- cat file.txt:输出文件内容。
- tr ' ' '\n':将空格替换为换行符,使每个单词占一行。
- sort:对单词排序。
- uniq -c:统计每个单词的出现次数。
- sort -nr:按出现次数降序排列。
- 组合后:统计文件中单词的频率并排序。
6.查找大文件
find /var/log -type f -size +100M | xargs ls -lh
- find /var/log -type f -size +100M:查找 /var/log 目录下大于 100MB 的文件。
- xargs ls -lh:将找到的文件传递给 ls -lh 显示详细信息。
- 组合后:查找并显示 /var/log 目录下大于 100MB 的文件。
7.压缩日志文件
cat access.log | gzip > access.log.gz
- cat access.log:输出日志文件内容。
- gzip:压缩数据。
- > access.log.gz:将压缩后的数据保存到文件。
- 组合后:压缩日志文件并保存。
8.实时监控日志
tail -f /var/log/syslog | grep error
- tail -f /var/log/syslog:实时输出系统日志。
- grep error:过滤包含 error 的行。
- 组合后:实时监控系统日志中的错误信息。
9.计算目录大小
du -sh /home | cut -f1
- du -sh /home:计算 /home 目录的大小并以人类可读格式显示。
- cut -f1:提取第一列(即大小)。
- 组合后:显示 /home 目录的大小。
10.批量重命名文件
ls *.txt | sed 's/\(.*\)\.txt/mv & \1.doc/' | sh
- ls *.txt:列出所有 .txt 文件。
- sed 's/\(.*\)\.txt/mv & \1.doc/':生成 mv 命令,将 .txt 改为 .doc。
- sh:执行生成的命令。
- 组合后:批量将 .txt 文件重命名为 .doc。