
私はシェルのテキストの背景を強調するために、次の方法を使用してきました。
tput smso;printf " TEXT ";tput rmso;
を使用せずに同じ目標を達成するにはどうすればよいですかtput
(printfの色などの書式設定を意味します\e[0m
)。
答え1
エスケープシーケンスは端末によって異なる場合があります。これは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
「実行モードのハイライト」であり、多くの端末がテキストを際立たせるために逆方向ビデオを使用しますが、逆方向ビデオでは機能しません。tput rev
キャンセルしてビデオを反転したい場合はtput sgr0
、背景色を設定するにはtput setab 4
ANSIカラーコードを使用します(4はANSIカラーブルーの番号)。