Linux 管道与重定向入门:用 | 和 > 把命令串起来

举报
yd_283574177 发表于 2026/11/05 17:54:18 2026/11/05
【摘要】 本文介绍 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 用管道串起来。命令行的学习不需要一次记住所有选项,先把“输出去哪、从哪来”这两件事弄清楚,后面的命令自然会越用越顺。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。