unix管道命令的调试器

时间:2008-09-15 15:10:14

标签: shell terminal

当我构建* nix管道命令时,我发现我想在构建下一个阶段之前看到一个阶段的输出以验证正确性,但我不想重新运行每个阶段。有谁知道一个有助于此的程序?它会使最后一个阶段的输出自动用于任何新阶段。我通常通过将每个命令的结果发送到一个临时文件(即tee或一次运行一个命令)来做到这一点,但是程序处理它会很好。

我设想类似于选项卡式界面,其中每个选项卡都标有每个管道命令,并选择一个选项卡显示将该命令应用于上一个结果的输出(至少一百行)。

4 个答案:

答案 0 :(得分:5)

使用'tee'将中间结果复制到某个文件中,并将它们传递到管道的下一个阶段,如下所示:

cat /var/log/syslog | tee /tmp/syslog.out | grep something | tee /tmp/grep.out | sed 's/foo/bar/g' | tee /tmp/sed.out | cat >>/var/log/syslog.cleaned

答案 1 :(得分:2)

如果您需要双向通信(即使用netcat),也可以使用管道:

mknod backpipe p
nc -l -p 80 0<backpipe | tee -a inflow | nc localhost 81 | tee -a outflow 1>backpipe

via

答案 2 :(得分:1)

tee(1)是你的朋友。它将其输入发送到指定的文件和stdout。

将它粘在你的管道之间。例如:

ls | tee /tmp/out1 | sort | tee /tmp/out2 | sed 's/foo/bar/g'

答案 3 :(得分:1)

还有“pv”命令 - 可在debian / ubuntu repostitories中找到,它可以显示管道的吞吐量。

手册页中的示例: 从另一个进程传输文件并将预期大小传递给pv:

          cat file | pv -s 12345 | nc -w 1 somewhere.com 3000