2008-09-15 96 views
4

當我構建* nix管道命令時,我發現我想在構建下一個階段之前查看一個階段的輸出以驗證正確性,但我不想重新運行每個階段。有誰知道一個程序,將有助於此?它會自動將最後一個階段的輸出用於任何新階段。我通常通過將每個命令的結果發送到一個臨時文件(即tee或每次運行一個命令)來做到這一點,但對於程序來說,這將是一件好事。unix管道命令的調試器

我想像一個標籤式接口,其中每個選項卡標有每個管道命令,選擇一個選項卡顯示將該命令應用於前一個結果的輸出(至少一百行)。

+0

開球需要我做的體力勞動,這個程序會自動做。 – 2008-09-15 15:23:17

回答

5

使用「三通」的中間結果複製出來一些文件,以及將它們傳遞到管道的下一個階段,就像這樣:

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

tee(1)是你的朋友。它將其輸入發送到指定的文件和stdout。

將它粘在你的管道之間。例如:

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

如果你需要雙向通信(帶netcat的IE)您也可以使用管道:

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

via

1

還有 「光伏」 命令 - 可用debian/Ubuntu的repostitories,它顯示你的管道吞吐量。

從該名男子頁的一個例子: 傳輸從另一個進程中的文件,並通過預期的大小,以PV:

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