ANSI转义序列,如何从键盘输入转义字符?

时间:2013-07-23 16:29:06

标签: linux bash unix escaping

问题:

  • 我最近发现了一个关于在回显时更改bash中文本颜色的页面,这非常有用,因为它解释了如何通过一系列击键输入转义作为单个字符。不幸的是,这是一台学校的电脑,历史没有保存。从那时起我就找不到这个页面了。

问题:

  • 如果有人知道输入转义字符^[的按键顺序,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

可以使用反斜杠序列\e在解释反斜杠序列的命令中生成转义键。

例如:

echo -e "Text can be \e[1;41mred\e[m or \e[1;45mmagenta\e[m"
for back in {30..37}; do
  echo -n $back:
  for fore in {40..47}; do
    printf "\e[1;%2d;%2dm%2d\e[m " $back $fore $fore
  done
  printf "\n"
done

上面未说明的可能性是bash转义解释字符串:$'\e[1m'


尽管使用vt转义序列(如上所述)很容易并且大多数(如果不是所有常用的)unix终端仿真器都支持,顽固分子会坚持你学会使用tput命令:

 printf "Here is a %sbold red%s word\n" "$(tput bold)""$(tput setf 4)" "$(tput sgr0)"

恕我直言,弄清楚魔法输出符号(参见debian / ubuntu系统上的man 5 terminfo)并不像查找xterm控制序列那样容易(谷歌最后三个字),但是YMMV。