我想拆分stdout和stderr,并且能够在程序执行期间并排查看它们。
我所知道的所有解决方案都需要将一个或两个流重定向到文件。
我的解决方案:
tail -f
两个文件重定向到单独的终端窗口或tmux / screen内。这需要3个终端 - 1个用于命令调用,2个用于预览。taif -f
文件重定向到单独的终端中。这需要2个终端 - 1个用于命令调用和stdout,1个用于stderr预览。这两种解决方案都不方便,因为您必须运行多个命令并在终端之间切换。
这个问题有更好的解决方案吗?有没有办法避免重定向到文件?
答案 0 :(得分:5)
如果是您要避免的文件创建,则可以执行此操作...
启动新终端,然后在其中输入tty
以查找该终端的设备专用文件,例如/dev/ttys002
然后在原始终端中,运行如下命令:
yourProgram 2> /dev/ttys002
我用它作为测试程序:
#!/bin/bash
for i in {0..30}; do
echo hi
echo hi to stderr >&2
done
答案 1 :(得分:2)
因为OP专门并排询问,一个选项:tmux! (tmux有点重,但它确实很好地拆分窗格我想这样的例子:)
$ tmux
拆分你的窗格:
左右:
^ b + %
( ^ b 表示ctrl + b)
上下:
^ b + “
关注错误窗格:
^ b + ↑↓→← + 输入
$ tty
,复制错误窗格的设备文件
重点关注输出窗格:
^ b + ↑↓→← + 输入
$ your-command 2>/dev/pts/N
其中/dev/pts/N
是您从其他窗格执行的值
纯! :相机闪光灯: