OSWikiHK: 请协力 GPLv3 的中文翻译工作。

改變終端機模擬器的標題

OSWikiHK,自由中文開源知識庫

Jump to: navigation, search

在一般 xterm (X Terminal) 相容的終端機上,輸出「ESC]0;」(ESC 的 ASCII 八進位為 033),著住輸出直到「BELL」(ASCII 八進位為 007)為止的文字都會變成終端機的標題:

echo -ne "\033]0;Hello, world\!\007"; read

留意因為 PROMPT_COMMAND 的設定,當您執行完以上命令回到顯示提示符時會回復系統預設,所以在命令後面加上「; read」讓您看到效果後再按Enter 鍵才回到提示符。

要想終端機標題顯示當前目錄路徑,並每次改變當前目錄時,終端機標題都自動更新,就要借助環境變數 PROMPT_COMMAND。PROMPT_COMMAND 的值為一個命令,每次 shell 顯示提示符時就會執行 PROMPT_COMMAND 所指的命令一次。Fedora 就用在 /etc/bashrc 的以下幾行讓終端機標題跟著當前目錄自動更新:

# are we an interactive shell?
if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
                fi
                ;;
        screen)
                if [ -e /etc/sysconfig/bash-prompt-screen ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
                else
                PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
                fi
                ;;
        *)
                [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
            ;;
    esac
    # Turn on checkwinsize
    shopt -s checkwinsize
    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
fi
Personal tools