シェルスクリプト(この場合はbash)が与えられると、デバッグ出力はbashまたは他のサポートシェルを使用して作成または渡すことができset -x
ます-x
。
その出力をファイル./script.sh 2> out.log
またはbash -x script.sh 2> out.log
。
screen
しかし、stderrをまたは同じ端末マルチプレクサにどのように送信しますかtmux
?
主にスクリプトがターミナル表示モード(TUI)を変更するときに便利なので、stderrを送信すると他のウィンドウ/ターミナルでより快適にデバッグできます。
答え1
tty
コンテンツを送信したい端末で呼び出されます。たとえば、印刷/dev/pts/3
してから、目的のコンテンツを別の端末からこのファイルにリダイレクトします。このように:
bash -x script.sh 2> /dev/pts/3
これはスタンドアロン端末エミュレータまたはtty(ログインしている場所)でtmux
機能します。screen
あるシェルで呼び出され、tty
別のシェルで話された内容をリダイレクト/印刷します。
私はパイプラインをデバッグするときに同様のアプローチを使います。例:
foo | tee /dev/pts2 | filter1 | tee /dev/pts3 | filter2
tmuxコマンドは、ステータス行の左右の内容を印刷display '#{pane_tty}'
します。これは/dev/pts/3
、ターゲットウィンドウにシェルがない場合に便利です(したがって簡単にはtty
実行できません)。現在のウィンドウにするウィンドウを選択してをクリックし、prefix:コマンドを入力してをクリックしますEnter。