'screen -S name'で作成された複数の画面セッションを実行し、に表示できるようにしたいステータスバーname現在の画面セッションを作成するために使用しました。
しかし、私はこれを達成できないようです。何か案は?
screen
には、キャプションバーとハードステータスバーの2つのステータスバーがあり、どちらも man screen の「STRINGESCAPES」セクションで指定された文字列エスケープを使用します。残念ながら、セッション名を直接参照するエスケープはありません。
ただし、これを可能にするハックがあります。
screen
は、$STY
変数を使用してセッション名をシェルに渡します。シェルがウィンドウタイトルを設定しようとすると( これらのメソッドの1つ を使用)screen
はその試みをキャプチャし、紛らわしいことに「ウィンドウハードステータス」と呼ばれるものに保存します。使用できるエスケープ:%h
。
したがって、キャプションまたはハードステータスバーのいずれかが%h
を含むように設定されていて、シェルがウィンドウタイトルを$STY
に設定しようとした場合、%h
は次の場合にセッション名に置き換えられます。バーが表示されます。
セッション名を表示する最も簡単な方法は
C-a :
sessionname
(sessionname
の後に名前を指定せずに)
man screen の「CUSTOMIZATION」セクションを参照してください。
https://superuser.com/a/212520/151988 から言い換えると、これを〜/ .screenrcに入れます。
screen
screen $Shell -c 'screen -X caption always "$STY"'
スーパーユーザーは、$STY
を必要とせず、代わりにbacktick
screenconfigコマンドとscreen -ls
を使用するこれに対する答えを持っています: https://superuser.com/a/ 21252
他に何も機能しない場合(私は)、回避策として、番号0のウィンドウを作成し、タイトルを画面名に設定できます。
screen -S myscreen
C^a :title "myscreen"
Max_cantorが SuperUser Answer で述べているように、セッション名のエスケープ文字をバージョン4.1.0に追加する必要があります。 見た目 エスケープ文字機能は2008年に比較的小さなパッチで追加されました。勇気がある場合は、開発バージョン4.1.0のコピーを自分でgitして試してみてください。 。
機会があれば開発版で試してみます。