Hullo-端末が表示できる色の数を確認したい場合は、次の出力を読み取るだけです。
tput colors
...しかし、私が書いている端末が、太字、下線、逆ビデオ、点滅などの他のフォーマット要求をサポートできるかどうかを判断する方法がわかりません(うん!)。
tputを介して出力を設定する方法はわかりますが、試行する前に機能が存在するかどうかを判断していません。
機能がすべての端末に存在すると単純に想定する必要がありますか?
あなたはinfocmpこれのために、そしてgrepあなたが探している能力で使うことができます。結果が見つかった場合、その機能がサポートされます。
infocmp | grep bold
bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
さまざまな機能の名前を取得するには、terminfoのLinuxのマニュアルページを確認するか、名前の表形式のレイアウトについてはこちらを確認してください。
より簡単な方法があるかもしれませんが、実行することでterminfoデータベースにクエリを実行できます
infocmp $TERM
$TERM現在の端末の完全なエントリを表示します(サポートされている端末タイプの名前に置き換えます)。マニュアルページを読んで、特定のニーズに合わせて最も簡単に解析できる出力を作成する方法を理解することをお勧めします。
未定義の属性を使用してコマンドを試行すると、tputゼロ以外の終了コードが返されます。通常の出力がある場合は、それが有効にならないようにリダイレクトできます。
for attr in bold rev smul blink sshm
do
if ! tput "$attr" > /dev/null
then
echo "Attribute $attr is undefined"
fi
done
それ以外の場合、grepの出力を行う場合infocmpは、(これは1つです)オプションを使用して、-11行に1つずつ属性を出力します。
infocmp -1 | grep smul