这个人一直在困扰我一段时间。是否可以将stdout
和stderr
重定向到终端输出和到程序?
我理解可以将输出重定向到文件,并stdout
与tee
重定向,但我希望它转到程序(我的编辑器[TextMate])以及终端输出......当然这是可能的(我知道它可能与zsh ...)
答案 0 :(得分:31)
您可以使用命名管道,该管道专门用于您描述的情况。
mkfifo some_pipe
command_that_writes_to_stdout | tee some_pipe \
& command_that_reads_from_stdin < some_pipe
rm some_pipe
或者,在Bash:
command_that_writes_to_stdout | tee >(command_that_reads_from_stdin)
答案 1 :(得分:20)
是否可以将stdout和stderr重定向到终端输出和程序?
我不确定将stdout和stderr组合在一个编辑器的输入上是多么有用,但这样的东西能做你需要的吗?
input_prog 2>&1 | tee /dev/tty | my_editor
答案 2 :(得分:2)
我实际上并不知道TextMate是否可以将文件作为标准输入进行编辑,这看起来有点奇怪。我怀疑你想将stdout / stderr发送到一个文件并在那里编辑,在这种情况下你需要:
progname 2>&1 | tee tempfile ; textmate tempfile
2>&1
重定向stderr
(文件句柄2)转到与stdout
(文件句柄1)相同的位置,以便它们最终都在一个流中。然后tee
命令将其写入tempfile
以及stdout
。
然后,一旦完成该过程,就会在临时文件上调用编辑器。
如果它可以接受标准输入进行编辑,请使用:
progname 2>&1 | tee /dev/tty | textmate