Linux - 管道

本文详细介绍了Linux系统中管道和重定向的使用方法,包括如何使用管道(|)连接多个命令,实现命令之间的输出和输入传递;如何使用重定向(>)将命令的输出保存到文件中;以及如何组合使用标准输出(STDOUT)和标准错误(STDERR),实现复杂命令的构造。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的说,一个通道接受一个工具软件的输出,然后把那个输出输入到其他的工具软件,整个管道接受了一个过程的标准输出,并把这个标准的输出作为另一个过程的标准输入。如果你没有重新定向这个输出,这个输出就在屏幕上显示出来。使用一个通道,你可以重新定向这个输出,这样它就变成了另一个工具软件的标准的输入。

例如: grep best/home/* |more

  • 管道(|字符)能连接命令:
// 传送 command1 的标准输入给 command2 的标准输入,而不输出到屏幕
command1|command2
  • 结合多个工具的功能
command1|command2|command3

// 将sort.txt 中的数字排序并取唯一,将结果重定向到 newSort.txt 文件
cat sort.txt | sort-n | uniq > newSort.txt

重定向标准输出到一个程序:

  • less:一次查看一个页面的输入:
$ls -l /etc |less
使用 / 能查询输入
  • lpr:发送输入到打印机:
$echo "test print" | lpr
$echo "test print" | lpr -P printer_name

结合输出和错误:

  • 一些操作对STDOUT和STDERR都有影响:
// $>:重定向所有的输出
     $ find /etc –name passwd &> find.all
// 2>&1:重定向STDERR到STDOUT
// 通过一个管道来发送所有的输出是有用的
   $ find /etc –name passwd 2>&1|less
// ():结合多个应用程序的STDOUT
    $ (cal 2007 ;cal 2008)|less

重定向到多个目标(tee)

$ command1 | tee filename | command2

存储command1的stdout在filename里,然后通过管道传给command2:
使用:

故障诊断复杂的管道
同时查看和记载输出

从文件重定向STDIN:

  • 使用<重定向标准输入
  • 某些命令能接收数据的重定向从文件到标准输入:
// 把..bash_profile里的大写字符全部转换成小写字符
// 等效于:$ cat .bash_profile | tr ‘A-Z’ ‘a-z’
$ tr `A-Z` `a-z`<.bash_profile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值