我echo -n $'\e]0;Hello World\a'
在我正在处理的代码库的 shell 脚本中发现了这一点。它到底是做什么的?它肯定不会回显任何可见的内容。
注意,我使用的是 Ubuntu 12.04.5。
答案1
答案2
在 XTerm(或任何模拟它的程序)中,它将窗口的标题设置为“Hello World”。\e]
是“操作系统命令”(OSC)的 ASNI 转义代码,这本质上意味着它由操作系统来定义它的含义;在 XTerm 中,<OSC>0;text<bel>
用于设置窗口标题。
看维基百科, 和Edward Moy 的 XTerm 序列列表(搜索“操作系统控制”部分)。
答案3
\e]0;
不是有效的 ANSI 代码,要获得“正常显示”,它必须是\e[0m
。如 Ƭᴇcʜιᴇ007 链接下的文本所示,您可以按相同顺序组合多个:
$ echo -en "\e[0;31;7m 测试 \e[0m" 测试 $ _
那TEST
将是反向红色
请注意,转义序列解析需要 -e。-n 产生回显不是在末尾打印 (CR+)LF。
更好的方法是使用tput
命令来使用 terminfo 代码 -man 5 terminfo
虽然技术性很强但可能相当完整。为什么要使用 tput?因为终端并不总是 ANSI,所以 terminfo 试图通过为尽可能多的终端提供单一接口来“解决”这个问题。
...所以- 和- 如果您有一个 ANSI 终端echo "$(tput sgr0)"
一样。echo -e "\e[0m"