画面:セッションのウィンドウを一覧表示します(非対話型)。

画面:セッションのウィンドウを一覧表示します(非対話型)。

非対話型端末でスクリーンセッションのウィンドウを一覧表示する方法はありますか?

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

残念ながら、端末の幅がフィットを超えると切り捨てられます。 (デフォルトではコマンドが実行され、メッセージ行に表示されますが、返品現在の標準出力にコピーします)。

関連情報