Bel*_*dez 6 bash prompt terminal-emulator escape-characters
在 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
Run Code Online (Sandbox Code Playgroud)
据我所知,所有这些选项都是隐形打印的。这有什么用?
我知道这PROMPT_COMMAND
是在显示提示之前执行的(PS1
通常)。我不明白为什么回声不可见的东西有任何用处。
\033
是Esc
(Escape) 字符的八进制代码,这是一个很好的提示,表明您的回显字符串PROMPT_COMMAND
是终端控制序列。您示例中的两个序列看起来都将终端标题设置为user@host:pwd
.
第一种情况,xterm*
设置窗口名称和图标标题。详细解释请查看xterm 控制序列列表,向下滚动直到找到OSC P s;点; ST在操作系统控制下(OSC 是ESC ]
,ST 是ESC \
)。
第二种情况是针对screen
终端模拟器,在屏幕控制序列列表中,它解释了ESC _
设置屏幕的hardstatus(简单地说,就是屏幕窗口的标题)。