シェルプロンプトにGNU画面のセッション名とウィンドウタイトルを表示する


11

シェルのプロンプトでGNU Screenセッション名とウィンドウタイトルを表示する方法はありますか(たとえば、で定義されたBashプロンプトPS1)。

回答:


14

画面はいくつかの環境変数を提供します(screen(1)マンページから):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

「作成時」とは、(画面のnumberコマンドを使用して)ウィンドウの番号を付け替えた場合、シェルに変更が通知されず、$ WINDOWが最初のウィンドウ番号と同じであることを意味します。

あなたは次のようなものを使うことができます:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
パーフェクト!これは私が探していたものです。ところで、ウィンドウ番号の代わりにウィンドウタイトルを取得する方法はありますか?
brandizzi '19

私が知っていることではありません。画面用のAPIはなく、コマンドを発行しても出力はありません。画面の現在のウィンドウに移動します。例えばscreen -xr 2466 -X windows
Arcege '19

おそらく再番号付けのケースに該当しますが、それが設定されている場合にウィンドウの名前にアクセスする方法はありCtrl-a Aますか?
Thalis K.

1
GNU screen-Q(query)オプションを使用してコンパイルされている場合はtitlewindowsおよびなどのコマンドを実行して、データをstdoutに表示できますが、末尾の改行はありません。
Arcege

3

私は常に正確なスクリーンセッション名を使用しています。次に、数値IDを取り除いた画面のSTY env変数を(おかげでdimo414)PS1に追加できます。私はいつも中かっこをしているわけではないので、中括弧などでそれを装飾することはしません。簡単な例:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

私はこれを使います:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

${STY}
ウィンドウ番号を含む(「作成時」に言及されている)プロセス番号を削除します
(から返されるscreen -Q title)ウィンドウタイトルを含めます

ノート:

  • 初めて実行するときscreen -Qは、リターンキーの入力を待ちます
  • Ca CAを使用してウィンドウタイトルを設定し、.profileを入手してプロンプトを更新します

5
を使用${STY#[0-9]*.}すると、を介してパイプする必要がなくなりsedます。
dimo414 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.