stdout和stderr - 并排预览

时间:2015-03-26 09:23:30

标签: bash stdout stderr tmux gnu-screen

我想拆分stdout和stderr,并且能够在程序执行期间并排查看它们。

我所知道的所有解决方案都需要将一个或两个流重定向到文件。

我的解决方案:

  1. 将stdout和stderr重定向到不同的文件,然后将tail -f两个文件重定向到单独的终端窗口或tmux / screen内。这需要3个终端 - 1个用于命令调用,2个用于预览。
  2. 仅将stderr重定向到文件,并将taif -f文件重定向到单独的终端中。这需要2个终端 - 1个用于命令调用和stdout,1个用于stderr预览。
  3. 这两种解决方案都不方便,因为您必须运行多个命令并在终端之间切换。

    这个问题有更好的解决方案吗?有没有办法避免重定向到文件?

2 个答案:

答案 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有点重,但它确实很好地拆分窗格我想这样的例子:)

  1. $ tmux
  2. 拆分你的窗格:

  3. 左右:

    ^ b +
    ^ b 表示ctrl + b)

  4. 上下:

    ^ b +

  5. 关注错误窗格:

    ^ b + ↑↓→← + 输入

  6. $ tty,复制错误窗格的设备文件

  7. 重点关注输出窗格:

    ^ b + ↑↓→← + 输入

  8. $ your-command 2>/dev/pts/N

    其中/dev/pts/N是您从其他窗格执行的值

  9. 纯! :相机闪光灯: