输出前管道出错

时间:2015-04-29 05:40:15

标签: shell io-redirection fish

让你有一组命令,有些命令如下:

 begin;
     echo “Starting Test";
     ls;
     bad_command -xyz;
 end

如果您没有重定向输出或错误,结果是预期的,即

Starting Test
foo.txt
someotherfile.png
someDir
Unknown command: ‘bad_command’ 

但是,我是通过将最后一行更改为end 2&>1 | open -f -a TextEdit来将整个块传递给TextEdit,错误在文件中首先出现,并且订单搞砸了。管道到其他命令时也会发生这种情况。为什么会发生这种情况,我该如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

您遇到此问题,因为管道将缓冲stdout而不是stderr,因此您首先获得stderr输出。解决此问题的唯一方法是不使用管道,而是将输出重定向到临时文件。然后,使用该文件来完成您需要做的事情。