Linux学习日志3:shell_重定向_管道

一、重定向

在看sh文件的时候,会发现明明echo或这报错了却没有显示出来,这是因为它们将输出存入别的地方了。

Linux shell中,执行程序时,它使用三个标准I/O流,每个流都由一个数字文件描述符表示:

0 - stdin,标准输入流。

1 - stdout,标准输出流。

2 - stderr,标准错误流。

基本上你可以:
1>.重定向stdout到一个文件

ls-l
#显示当前目录下所有文件的具体消息,并打印到屏幕上
ls-l >/home/ls-l.txt
#​将ls-l的stdout重定向至文件,stdout将不会出现在终端
​

command > file

command 1> file

将命令的stdout重定向至文件,stdout将不会出现在终端。

如果文件已经存在,将会覆盖

ls -a | tee 1.txt
#在终端也能看到,也能保存到文件里面

command | tee output.txt

将命令的stdout复制至文件,此时终端依然能看到stdout

如果文件已经存在,将会覆盖

tee是linux的一个命令

command | tee -a output.txt

将命令的stdout复制至文件,此时终端依然能看到stdout。

如果文件已经存在,新数据将会添加至文件末尾

2>.重定向stderr到一个文件

ls-l 
#因为ls和-l之间没有空格所以会报错 

ls-l 2>/home/learn_shell/wrong_ls-l.txt

command 2> output.txt

如果没加2会被认为是将stdout重定向,依然会报错

将命令的stderr重定向至文件,stderr将不会出现在终端。

如果文件已经存在,将会覆盖。

command 2>> output.txt

将命令的stderr重定向至文件,stderr将不会出现在终端。

如果文件已经存在,新数据将会添加至文件末尾

要禁止在屏幕上显示错误消息,也不想把文件存到具体文件将stderr重定向到/dev/null

/dev/null 有点像垃圾堆,无底洞往里面丢就是咯

command 2> /dev/null

3>.重定向stdeer到stdout

ls-a &> 1.txt

command &> output.txt

command >output.txt 2>&1

将命令的stdout与stderr都重定向至文件,此时终端将没有任何输出。

如果文件已经存在,将会覆盖。

command &>> output.txt

将命令的stdout与stderr都重定向至文件,此时终端将没有任何输出。

如果文件已经存在,新数据将会添加至文件末尾。

command |& tee output.txt

将命令的stdout与stderr都复制至文件,此时终端依然能看到stdout与stderr

如果文件已经存在,将会覆盖

command |& tee -a output.txt 

将命令的stdout与stderr都复制至文件,此时终端依然能看到stdout与stderr

如果文件已经存在,新数据将会添加至文件末尾

二、管道

将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe)

command1 | command2 | command3 | ...

这里需要注意,command1 必须有正确输出,而 command2 必须可以处理 command2 的输出结果;而且 command2 只能处理 command1 的正确输出结果,不能处理 command1 的错误信息

 例如之前重定向中有用到的 :

command | tee file.txt

这里就是用了管道的思想,tee 可以将命令结果 通过管道 输出到 多个文件中

Linux Shell管道详解_qingdao666666的博客-CSDN博客_shell的管道操作是什么意思

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值