几个容易混淆的重定向

进程预定义了三个文件描述符,分别是STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO。分别是标准输入,标准输出,标准错误输出。

例如:

$cat file1  默认输出是标准输出

$tee     默认从标准输入读入

$noexistcommand


现在我们不想对上面三个输入输出走默认的途径,例如我要输出到文件中去;我要从文件中读取,而不是标准输入;我不想在终端打印错误怎么办呢?

$cat file1 > output.txt 将输出重定向到文件中,这个命令等同于 $ cat file1 1> output.txt

$tee < input.log 将输入重定向到input.log, 这个命令等同于 $tee 0< input.log

$noexistcommand 2> err.txt


来点更为复杂的例子:

$tee < input.log >output.log 输入来自input.log,输出到output.log

书中有个例子挺好:

./a.out  > outfile 2>&1

将标准输出重定向到outfile,标准出错重定向到&1,而标准输出已经重定向到outfile,即标准输出和标准出错都重定向到outfile中。

./a.out 2>&1 > outfile

首先讲标准错重定向到标准输出,再将标准输出重定向到了outfile。这样标准错误将与标准输出相关联,标准错误与outfile相关联。标准错误输出到终端,标准输出将写到outfile中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值