tput sgr0
为了避免使用子 shell, ANSI 兼容终端的ANSI 转义等效项是什么?
答案1
你可以通过查看输出来回答这个问题infocmp
: 使用-1
对于给定的设置,每行打印一个功能的选项TERM
(即“ansi”),简化grep
:
infocmp -1 ansi |grep sgr0=
并看到(例如)
sgr0=\E[0;10m,
这告诉你你可以做
printf '\033[0;10m'
获得与以下相同的效果
tput -T ansi sgr0
但你没有使用美国国家标准协会,而是一些特定的终端,尽管您使用的终端相似,但并非所有终端都相同。您的情况更有可能是TERM
变量设置为类似“xterm”的值,(省略终端类型)给出
sgr0=\E(B\E[m,
共同的部分是\E[m
,这是 terminfo 语法\033[m
。每个序列中的其他字符正在重置备用字符集(并且可能取决于终端类型)。