端末タイトルに現在のTTY/PTYを表示

端末タイトルに現在のTTY/PTYを表示

私のファイルをカスタマイズして現在のTTYセッションを現在のターミナルウィンドウのタイトルバーに表示する方法を理解しようとしていますが、うまくいく.bashrc問題があるようです。

私はこれをしようとします。

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a | $(tty | cut -d/ -f3,4)\]$PS1"

しかし、これを行うと、期待した結果は出ません。代わりに、それはまるで。

| pts/0user@hostname ~$

このようにタイトルバーの代わりに開いた端末画面で。

user@host ~ | pty/0

私の.bashrcファイルには次のようになります。

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a | $(tty | cut -d/ -f3,4)\]$PS1"
    ;;
*)
    ;;
esac
  • -

これで解決しました。

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w | $(tty | cut -d/ -f3,4)\a\]$PS1"

投稿でこの点を指摘した@Gillesに感謝します。おかげで、やるべきことがより明確になりました。

答え1

ウィンドウのタイトルを設定するには:エスケープシーケンス \e]2;TITLE\aここで\e\aおよびはそれぞれエスケープ文字とベル文字です。 bashプロンプト内でこれを行うため、\[…\]ターミナル内で出力が生成されないことをbashに通知するには、エスケープシーケンスがその中になければなりません。

あなたはそれを使用することができますパラメータ拡張プレフィックスを切り捨てて変更されないので、一度だけ呼び出してください/dev/tty

TTY=$(tty)
PS1="\\[\\e[2;${TTY#/dev/}\\a\\]$PS1"

関連情報