Linux 管道与重定向入门:用 | 和 > 把命令串起来
在 Linux 命令行里,单个命令往往只能做一件事。真正让命令行变得顺手的是两样东西:管道与重定向。它们不改变命令本身,只是改变数据的来去方向:一个命令的输出,变成另一个命令的输入;屏幕上的结果,变成文件里的记录。
一、重定向:把输出存进文件
命令默认把结果写到屏幕上,这在终端里叫标准输出。用 > 可以把它改写到文件里:
echo "hello" > hello.txt
执行后,屏幕上什么都没有,内容写进了 hello.txt。注意 > 会覆盖原文件,如果只想追加,要用 >>:
echo "world" >> hello.txt
与之对应的是 <,它把文件当作命令的输入,例如 wc -l < hello.txt 会统计文件行数,不用先打开文件。
错误信息走的是另一条通道,叫标准错误。2> 可以单独重定向它,2>&1 则把错误和正常输出合并到同一个地方,排查问题时很常用。
二、管道:把命令串起来
管道符号 | 的作用,是把前一个命令的输出直接交给后一个命令处理,中间不需要临时文件:
ps aux | grep nginx
这一行先列出所有进程,再从中筛选出包含 nginx 的行。管道可以接很多节,例如先排序、再去重、再计数:
cat access.log | sort | uniq -c | sort -nr | head -5
整条命令像一条流水线,每一步只做一件小事,组合起来却能完成复杂的统计。理解了这一点,许多看似复杂的命令就拆得开了。
三、几个容易混淆的点
第一,> 与 | 的方向不同:前者把输出写到文件,后者把输出交给下一个命令;第二,> 会清空文件,>> 才是追加,写重要文件前先想一想;第三,管道传的是数据,不是文件名,想对文件列表用管道,可以搭配 xargs,例如 find . -name “*.log” | xargs grep -l “error”。
四、从一个小例子开始练
先在练习目录里做三个小实验:用 echo 与 > 写一个文件,用 >> 追加一行,再用 cat 文件 | wc -l 数一数行数。熟练之后,再试着把 ls、grep、sort、head 用管道串起来。命令行的学习不需要一次记住所有选项,先把“输出去哪、从哪来”这两件事弄清楚,后面的命令自然会越用越顺。
- 点赞
- 收藏
- 关注作者
评论(0)