深色模式
管道与重定向
摘要:
|把一个命令的输出喂给下一个命令,>/>>把输出写进文件。它们是 Linux 命令行效率的核心。
一、管道 |
bash
cat access.log | grep "404" | wc -l # 数 404 行数
ps aux | grep nginx | awk '{print $2}' # 提取 nginx 的 PID1
2
2
二、输出重定向 > 与 >>
bash
ls -l > out.txt # 覆盖写入(原内容清空)
ls -l >> out.txt # 追加写入
command 2> err.txt # 只把错误写进 err.txt
command > out.txt 2>&1 # 标准输出+错误都写进 out.txt
command &> all.txt # 同上简写(bash)1
2
3
4
5
2
3
4
5
三、输入重定向 <
bash
mysql < backup.sql # 把文件内容作为命令输入1
四、黑洞与 tee
bash
command > /dev/null # 丢弃输出
command | tee out.txt # 既显示又写入文件1
2
2
排障组合
bash
# 跑命令并把正常/错误输出都留档,方便事后排查
deploy.sh > /tmp/deploy.log 2>&11
2
2
验证
- [ ]
cmd1 | cmd2能把前者输出传给后者 - [ ]
>覆盖、>>追加行为正确 - [ ]
2>&1能把错误也写进同一文件
常见坑
>误清空:本想追加用成>,重要日志被清空。追加用>>。- 重定向顺序:
> file 2>&1顺序不能反,先重定向 stdout 再合并 stderr。 - 管道只传 stdout:stderr 默认不过管道,需
2>&1先合并。