Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash中打印流的输出?_Bash - Fatal编程技术网

如何在bash中打印流的输出?

如何在bash中打印流的输出?,bash,Bash,我有一个输出流: xxx 2>&1 | grep 'Word:' | sed -e ... 某个命令的输出包含字:。我可以grep这个单词并执行其余的命令。它工作得很好。最后我得到了我期望的结果。但是现在我想在我的屏幕上的日志中显示完整的日志(因此流2>&1中的所有内容),然后再刷新单词:,完成我的工作 如果我做了xxx2>&1,那么我可以在屏幕上看到我想要的完整输出,但是因为我必须grep,它不再显示在我的命令xxx2>&1|grep'字中:'| sed-e… 我在想这样的事情

我有一个输出流:

xxx 2>&1 | grep 'Word:' | sed -e ...
某个命令的输出包含
字:
。我可以
grep
这个单词并执行其余的命令。它工作得很好。最后我得到了我期望的结果。但是现在我想在我的屏幕上的日志中显示完整的日志(因此流
2>&1
中的所有内容),然后再刷新
单词:
,完成我的工作

如果我做了
xxx2>&1
,那么我可以在屏幕上看到我想要的完整输出,但是因为我必须
grep
,它不再显示在我的命令
xxx2>&1|grep'字中:'| sed-e…

我在想这样的事情:

2>&1 | echo 2>&1 | grep 'Word:' | sed -e ...

但这不起作用。

tee
:将stdin以及命令行参数中指定的文件复制到stdout

您可以使用
tee
将stdin复制到stderr:

xxx 2>&1 | tee /dev/stderr | grep ...

如果
/dev/stderr
不可用,请使用
/proc/self/fd/2

注意
/proc/
在不同的操作系统中工作方式不同,如果安装了它的话。它不是bash的一部分。@ghoti也可以说
/dev/stdin | stdout | stderr
也不是bash的一部分。实际上,它们是bash的一部分。检查手册页“重定向”部分的底部。“如果运行bash的操作系统提供了这些特殊文件,bash将使用它们;否则,它将使用下面描述的行为在内部模拟这些文件。”@ghoti,但请稍候,当作为cmdline参数提供时,它是否仍能正常工作?我的意思是,bash是否“在内部”处理cmdline参数?