Rog*_*mbe 21 io-redirection tee stdout stdin
我想将标准输出从一个进程发送到另一个进程的标准输入,但也发送到控制台。例如,将 stdout 发送到 stdout+stderr。
例如,我的git edit
别名如下:
git status --short | cut -b4- | xargs gvim --remote
Run Code Online (Sandbox Code Playgroud)
我希望将文件名列表发送到屏幕以及xargs
.
那么,是否有类似tee
的实用程序可以做到这一点?这样我就可以执行以下操作:
git status --short | \
cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
xargs gvim --remote
Run Code Online (Sandbox Code Playgroud)
Vin*_*ert 17
tee
可以通过使用复制到当前控制台 tee /dev/tty
git status --short | cut -b4- | tee /dev/tty | xargs gvim --remote
Run Code Online (Sandbox Code Playgroud)
这是错误的,请阅读评论。/dev/stdout
或者,您可以使用或/dev/stderr
但如果您的命令在脚本中,它们可以被重定向。请注意,/dev/tty
它将始终是控制台(并且可能不存在于非交互式 shell 中)。
比/dev/tty
以下更通用的解决方案:
start cmd:> echo foo | tee /dev/stderr
foo
foo
Run Code Online (Sandbox Code Playgroud)