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

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

シェルプロンプト(例:で定義したBashプロンプト)PS1にGNU画面セッション名とウィンドウタイトルを表示する方法はありますか?

答え1

screenScreenは(1)マンページにいくつかの環境変数を提供します。

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

「作成時」は、ウィンドウ番号を再指定すると(screennumberコマンドを使用して)シェルに変更が通知されず、$ WINDOWはまだ最初のウィンドウ番号と同じであることを意味します。

次のようなものを使用できます。

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

答え2

私は常に正しいスクリーンセッション名を使用します。その後、画面のSTY環境変数をPS1に追加し、数値IDを削除することができました(dimo414のおかげで)。私はいつもセッションにいないので、中かっこなどで飾りません。簡単な例:

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

答え3

私はこれを使用します:

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

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

メモ:

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

答え4

私は通常、次の名前付き画面を使用します。screen -S vim ## see: screen -h

画面セッション名を画面に表示するようにPS1プロンプトを取得するには(スクリーンセッションを通常の端末セッションと区別するため)、2つの部分からなるアプローチを実行する必要があります。

  1. ファイルにヒントを設定します~/.screenrc
  2. 通常のBASHエイリアスを介して(スクリーンセッション内)ファイルをインポートします~/.bashrc
# -----------------------------------------------------------------------------
# ~/.screenrc    ## or whatever you want to name it

PS1='[\u@\h (screen: ${STY#[0-9]*.}) \w]$ '
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# ~/.bashrc

alias ssrc='source ~/.screenrc'    ## or whatever you named it (comment above)
# -----------------------------------------------------------------------------

使用法:

[me@vps1360 ~]$ screen -S test

  # -----------------------------------------------------------------------------
  # Named screen session:

  [me@vps1360 ~]$ ssrc
  [me@vps1360 (screen: test) ~]$    ## PS1 prompt with screen session name
  # Ctrl-a d
  [detached from 9278.test]
  # -----------------------------------------------------------------------------

[me@vps1360 ~]$

関連情報