您的位置:首页 > 其它

几个容易混淆的重定向

2013-06-10 21:53 232 查看
进程预定义了三个文件描述符,分别是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中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: