管道是Linux/Unix系统中最重要的进程间通信机制之一,它允许将一个进程的输出直接作为另一个进程的输入。管道符号是 |
。
基本语法:
command1 | command2
command1 | command2 | command3 | ... | commandN
例如统计当前目录下文件数量:
ls | wc -l
command1 | tee file.txt | command2
这会将command1的输出保存到file.txt同时传递给command2
mkfifo mypipe
command1 > mypipe &
command2 < mypipe
command1 2>&1 | command2
将标准错误(stderr)也通过管道传递
diff <(command1) <(command2)
command1 | (command2 & command3) | command4
ps aux | awk '{print $1, $4}' | sort -k2 -nr | head -5
bash
find . -name "*.log" | xargs grep "error"
sort
操作很耗资源tail -f /var/log/syslog | grep --line-buffered "error" | awk '{print $1, $2, $5}'
while true; do ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head; sleep 5; done
掌握这些管道技巧可以显著提高Linux命令行操作的效率和灵活性。