Unveveiling the Control Character of Emulator Terminal

首先我们要知道控制字符的表现和 Emulator Terminal 有关系,可以通过 echo $TERM 来查看当前终端的类型。

There are a link about xterm.

ESC 控制字符

\033 是八进制的转义字符,对应 ASCII 上的 ESC ,是控制字符的一种,用作控制序列的开始。

此外需要提示的是:

\x 表示 16 进制,\0 表示 8 进制

因此 \0x1b 等于 \033

颜色

格式

\033[xx;xx;..m
  1. 前景色和背景色:
    • 3037: 前景色,范围是黑色到白色。 echo -e “\033[31m 红色字 \033[0m” echo -e “\033[32m 绿色字 \033[0m” echo -e “\033[33m 黄色字 \033[0m” echo -e “\033[34m 蓝色字 \033[0m” echo -e “\033[35m 紫色字 \033[0m” echo -e “\033[36m 天蓝字 \033[0m” echo -e “\033[37m 白色字 \033[0m”
    • 4047 :背景景色,范围是黑色到白色。
  2. 文本样式:
    • 0: 重置所有文本属性,恢复默认值。
    • 1: 加粗或粗体文本。
    • 2: 弱化的颜色或模糊文本(并非所有终端支持)。
    • 3: 斜体文本(并非所有终端支持)。
    • 4: 下划线。
    • 7: 反显,交换前景色和背景色。
  3. 特殊效果:
    • 5: 闪烁效果(并非所有终端支持)。
    • 8: 隐藏文本(并非所有终端支持)。
  4. 删除线:
    • 9: 删除线(并非所有终端支持)。

如果多个效果叠加在一起,使用分号进行分割,比如 \033[31;5;240m 表示:

  • 31: 这是设置前景色的参数。数字 31 表示红色的颜色码,这意味着后面的文本将会显示为红色。
  • 5: 这是一个特殊的参数,通常用于触发闪烁或闪光的效果。在某些终端中,数字 5 可以表示闪烁,但并非所有终端都支持这个效果。这个参数在大多数情况下可能不会产生显著影响。
  • 240: 这是设置背景色的参数。数字 240 可能代表一种特定的背景颜色,具体颜色值因终端而异。在大多数情况下,这可能是一种比较深的灰色。

光标

格式

\033[xx q

样式

echo -e -n "\033[0 q" # changes to blinking block
echo -e -n "\033[1 q" # changes to blinking block also
echo -e -n "\033[2 q" # changes to steady block
echo -e -n "\033[2 q" # changes to blinking underline
echo -e -n "\033[3 q" # changes to steady underline
echo -e -n "\033[4 q" # changes to blinking bar
echo -e -n "\033[6 q" # changes to steady bar

光标移动

  • 将光标移动到指定位置:\033[<行>; <列>H\033[<行>;<列>f
  • 光标上移/下移/左移/右移:\033[<n>A\033[<n>B\033[<n>C\033[<n>D
  1. 清屏:
    • 清除屏幕:\033[2J
    • 清除屏幕并将光标移到左上角:\033[2J\033[H
  2. 窗口标题:
    • 设置窗口标题:\033]0;<标题>\007
  3. 属性设置:
    • 加粗/粗体文本:\033[1m
    • 斜体文本:\033[3m
    • 重置所有属性:\033[0m
  4. 滚动:
    • 向上滚动一行:\033[S
    • 向下滚动一行:\033[T