$PS1
現在のプロンプト(一部の色を含む)をウィンドウタイトル(ハードライン)とxtermウィンドウタイトル\u@\h:\w$(__git_ps1 "(%s)")\$
として使用したいと思います。screen
これはどのように達成できますか?
答え1
一つ不完全解決策は、$PS1
GNU画面でプロンプトを変更することです。まず、シェルのRCファイル(つまり~/.bashrc
、)を変更します。一つを探すケース評価内容$TERM
:
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
以下を追加以前すべてを網羅する(例*)
:):
screen)
PS1='\e]0;\u@\h:\w\a\ek\u@\h:\w\e\\\u@\h:\w$(__git_ps1 "(%s)")\$ '
;;
これによりハードステータスが修正されます。\e]0;...\a
これにより、ウィンドウのタイトルが変更されます。 \ek...\e\\
ハード状態は設定しないと表示されません。たとえば、次をに追加できます.screenrc
。
hardstatus alwayslastline
複雑なhardstatus string
オプションは引き続き重要な役割を果たします。現在動的に保存されているハード状態を次のように変更できます%h
。
hardstatus string '%{= kw}[ %h ] %=%{w}[ %{r}%l%{w} ]%{w}[%{y} %Y-%m-%d %C %A %{w}]%{w}'
これは、ハードステータス行を画面の左側の2つの括弧の間に保存されているハード状態に設定し、日付と時刻とともにCPU使用率を右に設定します。
例:
[ username@host:~ ] [ 0.00 0.01 0.00 ][ 2012-11-27 4:13 PM ]
ガイドライン
これにより、シェル履歴のカーソルオフセットが壊れる可能性が高くなります。 (上向き矢印を数回クリックして行を編集してみてください。どういう意味かわかります
$PS1
。$PS1
)これにより、xtermのタイトルバーが壊れ、GNU Screenを実行する前に設定された最後の状態に「固定」される可能性が高くなります。興味深いことに、タイトルバーを更新するvimなどのアプリケーションは引き続き機能します。
C-A A
コマンドプロンプトが更新されるまで、画面のタイトル(例:)を手動で設定することは引き続き機能します。
答え2
Bashを使用して、画面タイトルを$ YourVariable(screenrcタイトル変数%t)に動的に変更します。
export PROMPT_COMMAND="echo -ne '\033k$YourVariable\033\\'"
「screen」の内部ではない場合は、hardstatus(screenrcタイトル変数%h)を使用することもできます。これにより、ウィンドウ(ターミナルエミュレータ)のタイトルが変更されます。
export PROMPT_COMMAND="echo -ne '\033]0;$YourVariable\007'"