私はいつもシェルのテキストの背景を強調するために以下の方法を使用しています。
tput smso;printf " TEXT ";tput rmso;
tput
(printfの色に\e[0m
のような何らかの方法でフォーマットすることを意味します)を使用せずに同じことを達成するにはどうすればよいですか?
そのためのエスケープシーケンスは、端末固有である可能性があります。それがtput
を使用することの要点です。 tputsは、$TERM
変数の値に基づいて、データベース内の正しいエスケープシーケンスを検索します。
私の端末で:
$ tput smso | sed -n l
\033[3m$
$ tput rmso | sed -n l
\033[23m$
だから私はできる:
$ printf '\033[3m%s\033[23m\n' "stand out"
しかし、それが他の端末で機能するかどうかはわかりません。
毎回tput
を呼び出したくない場合は、一度実行して出力を保存できます。
smso=$(tput smso) rmso=$(tput rmso)
printf '%s\n' "${smso}stand out${rmso}"
smso
は「StartModeStand-Out」であり、リバースビデオ用ではありませんが、多くの端末はテキストを目立たせるためにリバースビデオを使用していることに注意してください。リバースビデオが必要な場合はtput rev
(tput sgr0
でキャンセル)です。背景色を設定する場合は、ANSIカラーコードにtput setab 4
を使用します(4はANSIカラーの青色の数字です)。 )。