Ksh

如何在不更改提示字元串的情況下更改終端標題?

  • January 10, 2017

我已經自定義了我的命令提示符以顯示具有某種顏色和完整路徑的目前目錄。現在我想將視窗的標題設置為僅目錄名稱(不是完整路徑)。您能否建議如何在 korn shell 中實現這一目標。謝謝。

我發現實現這一點的方法是為 cd 創建一個別名。我將以下程式碼放入.profile文件中

xcd() { cd $*; echo -ne "\033]0;$(basename $PWD)\007"; }
alias cd='xcd'

非常感謝 Kusalananda 提供了我真正正在尋找的解決方案:

cd() { command cd "$@"; echo -ne "\033]0;${PWD##*/}\007"; }

根據此站點:如何更改 xterm 的標題:不同外殼的範例

ksh 提供的函式和擴展方式很少,因此我們必須在提示符中插入轉義字元串以使其動態更新。此範例生成 username@hostname: directory 的標題和 ksh$ 的提示。

case $TERM in
    xterm*)
        HOST=`hostname`
        PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ '
        ;;
    *)
        PS1='ksh$ '
        ;;
esac

然而, $ PWD produces the full directory path. We can remove the prefix of $ HOME/ 從目錄中使用 $ {…##…} construct. We can also use $ {…%%…} 截斷主機名:

HOST=`hostname`
HOST=${HOST%%.*}
PS1='^[]0;${USER}@${HOST}: ${PWD##${HOME}/}^Gksh$ '

請注意,提示字元串中的 ^[ 和 ^G 是 ESC 和 BEL 的單個字元(可以使用 Cq ESC 和 Cq Cg 在 emacs 中輸入)。

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