非対話型端末でスクリーンセッションのウィンドウを一覧表示する方法はありますか?
screen -S 'screen_name' -X windows
~によるとgnu.org、このコマンドはウィンドウのリストを表示しますメッセージ行の使用。
これは対話型コンソールには問題ありませんが、他のプログラムで読み取れるように標準出力に印刷する必要があります。
これを行う方法はありますか?
解決策
私が見つけた最良の方法は、次のコマンドを使用してWindows IDのリストを取得することです。 (発行者:Stephen Harris)
screen -S 'pid.screen_name' -Q windows
これにより、印刷時にウィンドウ名が切り捨てられますが、実際には出力の合計サイズは切り捨てられません。したがって、スクリーンセッションに約20個のウィンドウがある場合、これは出力です。
> screen -S 'pid.screen_name' -Q windows
0 bash 1 bash 2 bash 3 bash 4 bash 5 bash 6 bash 7 bash 8 bash 9 bash 10 bash 11 bash 12 bash 13 bash 14 bash 15 bash 16 bash 17 bash 18 bash 19 bash 20 bash
私は非常に多数のウィンドウでこの方法を試しました。
この方法では、スクリーンセッション内のウィンドウの数を解析し、次を使用して各ウィンドウに対して「タイトル」コマンドを実行できます。
screen -S 'pid.screen_name' -p %window_id% -Q title
%window_id%
コマンドの各ウィンドウIDに置き換えますwindows
。
今回はウィンドウタイトルがまったく切り取られません。したがって、フルスクリーン名が標準出力として印刷されます。
答え1
-Q
このオプションは利用可能です
% screen -S 2908.pts-0.mymachine -Q windows
0- spam 1* news 6 ksh
残念ながら、端末の幅がフィットを超えると切り捨てられます。 (デフォルトではコマンドが実行され、メッセージ行に表示されますが、返品現在の標準出力にコピーします)。