linux的标准输入输出

0: 代表标准的std_in
1: 代表标准的std_out
2: 代表标准的std_err

重定向:

2>file,  将标准错误输出重定向到文件中。
1>file, 将标准输出重定向到文件中。
2>&1, 将标准的错误输出重定向到标准输出, 错误输出将会显示在终端上,效果和不加是一样的,因为默认的错误输出就是终端。那如果我们想达到一个把错误输出既显示在终端上又把这个错误记录到文件中的目的,我们这样写: ls FILE_NOT_EXIST | tee file,行不行呢? 这样写是不行的,这样只能是把标准输出的内容写到文件和标准输出中,而没有把标准的错误输出写到文件中去。要达到上面的目的只能这样写:
ls FILE_NOT_EXIST 2>&1 | tee file
也就是tee命令只能是从标准输出中读取内容,而不能从标准错误输出中读取内容,为此,我们只能是首先把标准错误的输出重定向到标准输出中,然后再用tee命令读出,写到标准输出和文件中去。

NOTE:
       要特别注意linux对管道,重定向处理的顺序,shell是从命令行的后面向前处理,例如:
ls feffe 2>&1 >/dev/null

feffe是系统中不存在的一个文件,我们现在要把ls的错误输出放到/dev/null中去,那上面的写法能不能达到我们的目的呢? 答案是不能,因为shell处理这种情况是从后向前处理命令行,首先会把系统的标准输出的东西重定向到/dev/null,然后再把标准错误输出重定向到标准输出,因此,我们应该这样写:

ls feffe >/dev/null 2>&1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值