Bash

在終端標題中顯示目前 TTY/PTY

  • August 7, 2016

我試圖通過自定義我的文件來弄清楚如何使目前的 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 在他們的文章中指出了這一點,這使得需要做什麼變得更加清楚。

要設置視窗標題,請發出轉義序列 ,其中和分別是轉義字元和響鈴字元。由於您是在 bash 提示符內執行此操作,因此必須使用轉義序列來告訴 bash 這不會在終端內產生任何輸出。\e]2;*TITLE*\a``\e``\a``\[…\]

您可以使用參數擴展來截斷/dev/前綴,並tty一勞永逸地呼叫,因為它不會改變。

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

引用自:https://unix.stackexchange.com/questions/301739