画面にテキストを印刷するBashスクリプトを書いています。
echo "Some Text"
テキストをフォーマットできますか?大胆にしたいです。
これを行う最も互換性のある方法は、tput
を使用して、端末に送信する正しいシーケンスを見つけることです。
bold=$(tput bold)
normal=$(tput sgr0)
その後、変数$bold
および$normal
を使用して、次のものをフォーマットできます。
echo "this is ${bold}bold${normal} but this isn't"
与える
これはboldですが、そうではありません
ユーザーがフォーマットのサポートを明示的にオフにしていないvt100互換端末でbashが実行されていると思います。
最初に、-e
オプションを使用して、echo
の特殊文字のサポートを有効にします。後で、次のようなANSIエスケープシーケンスESC[1m
を使用します。
echo -e "\033[1mSome Text"
ANSIエスケープシーケンスの詳細については、こちらをご覧ください。 ascii-table.com/ansi-escape-sequences-vt-100.php
文字列にスタイルを適用するには、次のようなコマンドを使用できます。
echo -e '\033[1mYOUR_STRING\033[0m'
説明:
-e
オプションは、エスケープ(バックスラッシュ)文字列が解釈されることを意味します可能な整数は次のとおりです。
理論的にはそうです:
# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line
# Using tput
tput bold
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL
# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line.
しかし実際には、代わりに「高輝度」色として解釈される場合があります。
(ソース: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )