シェルでテキストを強調表示

シェルでテキストを強調表示

私はシェルのテキストの背景を強調するために、次の方法を使用してきました。

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 4ANSIカラーコードを使用します(4はANSIカラーブルーの番号)。

おすすめ記事