BashでPROMPT_COMMANDが見えない値に設定されるのはなぜですか?

BashでPROMPT_COMMANDが見えない値に設定されるのはなぜですか?

RHEL6とCentOS 6では、次のように/etc/bashrc設定しますPROMPT_COMMAND

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

私が知っている限り、これらのオプションはすべて印刷されて見えません。何が役に立ちますか?

PROMPT_COMMANDプロンプトが表示される前に(PS1通常)これが実行されることを知っています。見えないものをエコーするのはなぜ役に立たないのかわかりません。

答え1

\033(エスケープされた)文字の8進コード。これは、エコー文字列が端末制御シーケンスEscと呼ばれる良いヒントです。PROMPT_COMMAND例の両方のシーケンスは、端末のタイトルをに設定しているように見えますuser@host:pwd

最初のケースでは、xterm*ウィンドウ名とアイコンのタイトルを設定します。詳細な手順についてはリストをご覧ください。xterm制御シーケンス見つかるまで下にスクロールします。OSC Pt;下にオペレーティングシステムの制御(OSCはESC ]、STはESC \)。

2番目のケースは、screen端末エミュレータの場合です。画面制御シーケンス、説明するESC _ 画面のハード状態の設定(簡単に言えば、画面ウィンドウのタイトルです。)

関連情報