デバッグ出力を端末マルチプレクサに送信する

デバッグ出力を端末マルチプレクサに送信する

シェルスクリプト(この場合は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

関連情報