web-dev-qa-db-ja.com

`tput sgr0`に相当するANSIエスケープとは何ですか?

サブシェルを回避するために、ANSI互換端末のtput sgr0に相当するANSIエスケープは何ですか?

1
Tom Hale

infocmpの出力を見ると、それに答えることができます。

infocmp -1 ansi |grep sgr0=

と見て(例えば)

sgr0=\E[0;10m,

それはあなたができることをあなたに伝えます

printf '\033[0;10m'

と同じ効果を得るには

tput -T ansi sgr0

ただし、使用しているのは[〜#〜] ansi [〜#〜]ではなく、特定の端末と使用しているものは似ていますが、すべてが同じというわけではありません。 TERM変数が「xterm」のようなものに設定されている可能性が高くなります。これは(端末タイプを省略して)次のようになります。

sgr0=\E(B\E[m,

共通部分は\E[mで、これは\033[mのterminfo構文です。各シーケンスの他の文字は、代替文字セットをリセットしています(端末の種類によって異なります)。

6
Thomas Dickey