Bash
將調試輸出發送到終端多路復用器
給定一個 shell 腳本(本例中為 bash),可以使用
set -x
或-x
傳遞給 bash 或其他支持的 shell 來生成調試輸出。我知道如何將所述輸出重定向到文件
./script.sh 2> out.log
或bash -x script.sh 2> out.log
.但是如何將 stderr 發送到終端多路復用器,例如
screen
ortmux
?主要在腳本更改終端顯示方式(TUI)時有用,因此發送 stderr 可以在另一個視窗/終端中進行更舒適的調試。
tty
在您要發送內容的終端中呼叫。它將列印例如/dev/pts/3
然後將您想要的任何內容重定向到此文件,可能來自另一個終端。像這樣:bash -x script.sh 2> /dev/pts/3
這適用於
tmux
,screen
, 單獨的終端仿真器或 ttys(您登錄的地方)。在一個 shell 中呼叫tty
並重定向/列印到另一個 shell 中的任何內容。我使用類似的方法來調試我的管道。例子:
foo | tee /dev/pts2 | filter1 | tee /dev/pts3 | filter2
tmux 命令
display '#{pane_tty}'
將在狀態行中列印/dev/pts/3
左右。如果目標窗格中沒有 shell(因此您不能輕鬆地在tty
那裡執行),這將很有用。選擇窗格,使其處於目前狀態,點擊prefix``:
,鍵入命令和Enter
。