管道、重定向和文本过滤速查

作者:

Shell 的效率很大一部分来自把简单工具串在一起。理解标准输入、标准输出和标准错误后,很多临时分析都不需要写脚本。

三种常见重定向

command > output.txt
command >> output.txt
command 2> error.txt
command > all.txt 2>&1

> 会覆盖文件,>> 会追加。修改重要文件前,不应把未经检查的命令输出直接重定向过去;先输出到临时文件并校验更可靠。

管道中的过滤

journalctl -u ssh --since today | grep -i 'failed'
ss -lntp | awk 'NR==1 || /:22 /'
du -xhd1 /var | sort -h
cut -d: -f1 /etc/passwd | sort

grep 负责筛选行,cut 适合规则分隔符,awk 更适合按列和条件处理。数据结构复杂时,JSON 应优先交给 jq,而不是用正则硬拆。

tee:既观察又保存

command | tee result.txt
command | tee -a result.txt

tee 会同时把内容显示在终端并写入文件,适合保留诊断过程。需要管理员权限写系统文件时,应明确最终目标,先做语法检查,再用原子替换,避免一条错误管道直接破坏配置。

管道很强,但也会隐藏中间步骤的失败。用于自动化时可以启用 set -o pipefail,让管道中任意命令失败都能被检测到。