`tput sgr0` 的 ANSI 转义等效项是什么?

Tom*_*ale 2 terminal tput ansi

为了避免子shell,tput sgr0ANSI兼容终端的ANSI转义等效项是什么?

Tho*_*key 9

您可以通过查看 : 的输出来回答这个问题infocmp:使用-1选项为给定的设置TERM(即“ansi”)每行打印一个功能,简化了grep

infocmp -1 ansi |grep sgr0=
Run Code Online (Sandbox Code Playgroud)

并看到(例如)

sgr0=\E[0;10m,
Run Code Online (Sandbox Code Playgroud)

这告诉你你可以做

printf '\033[0;10m'
Run Code Online (Sandbox Code Playgroud)

获得相同的效果

tput -T ansi sgr0
Run Code Online (Sandbox Code Playgroud)

但是您使用的不是ANSI,而是某些特定的终端,尽管您使用的终端相似,但并非所有终端都相同。您的TERM变量更有可能设置为“xterm”之类的东西,它(省略终端类型)给出

sgr0=\E(B\E[m,
Run Code Online (Sandbox Code Playgroud)

公共部分是\E[m,它是 的 terminfo 语法\033[m。每个序列中的其他字符正在重置备用字符集(并且可能取决于终端类型)。