许多人发现将终端的标题设置为反映动态信息非常有用,例如用户登录的主机名、当前工作目录等。
在运行中的 xterm 中,可以使用 XTerm 转义序列来更改窗口和图标标题。以下序列在这方面非常有用
ESC]0;stringBEL
-- 将图标名称和窗口标题设置为 stringESC]1;stringBEL
-- 将图标名称设置为 stringESC]2;stringBEL
-- 将窗口标题设置为 stringESC
是转义字符 (\033),而 BEL
是响铃字符 (\007)。
在 xterm 中打印这些序列之一将导致窗口或图标标题被更改。
注意:这些序列适用于大多数 xterm 衍生版本,例如 nxterm
、color-xterm
和 rxvt
。其他终端类型通常使用不同的转义序列;有关示例,请参阅附录。有关 xterm 转义序列的完整列表,请参阅 ctlseq2.txt 文件(随 xterm 发行版提供)或 xterm.seq 文件(随 rxvt 发行版提供)。
对于在 shell 生命周期内保持不变的信息,例如主机和用户名,只需在 shell rc 文件中简单地 echo 转义字符串就足够了。
echo -n "\033]0;${USER}@${HOST}\007"
应该会生成类似 username@hostname
的标题,假设 shell 变量 $USER
和 $HOST
已正确设置。echo
所需的选项可能因 shell 而异(请参阅下面的示例)。
对于在 shell 生命周期内可能发生变化的信息,例如当前工作目录,确实需要在每次提示符更改时应用这些转义序列。这样,字符串会在您发出的每个命令后更新,并且可以跟踪诸如当前工作目录、用户名、主机名等信息。一些 shell 提供了用于此目的的特殊功能,有些则没有,我们必须将标题序列直接插入到提示符字符串中。这将在下一节中进行说明。