这个 echo shell 命令的用途是什么?

这个 echo shell 命令的用途是什么?

echo -n $'\e]0;Hello World\a'在我正在处理的代码库的 shell 脚本中发现了这一点。它到底是做什么的?它肯定不会回显任何可见的内容。

注意,我使用的是 Ubuntu 12.04.5。

答案1

  • -n防止在末尾回显换行符。
  • $'是一个 Bash 命令,它导致字符串中的反斜杠转义字符按照 ANSI C 标准进行替换。更多信息
  • \e= 逃离。
  • \e]0;设置窗口标题的命令,在本例中将其设置为“Hello World”

有关 *nix Echo 的更多信息,请点击此处

答案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"

相关内容