web-dev-qa-db-ja.com

Bashでは太字のテキストをどのように出力しますか?

画面にテキストを印刷するBashスクリプトを書いています。

echo "Some Text"

テキストをフォーマットできますか?大胆にしたいです。

205
JamesRat

これを行う最も互換性のある方法は、tputを使用して、端末に送信する正しいシーケンスを見つけることです。

bold=$(tput bold)
normal=$(tput sgr0)

その後、変数$boldおよび$normalを使用して、次のものをフォーマットできます。

echo "this is ${bold}bold${normal} but this isn't"

与える

これはboldですが、そうではありません

367
psmears

ユーザーがフォーマットのサポートを明示的にオフにしていないvt100互換端末でbashが実行されていると思います。

最初に、-eオプションを使用して、echoの特殊文字のサポートを有効にします。後で、次のようなANSIエスケープシーケンスESC[1mを使用します。

echo -e "\033[1mSome Text"

ANSIエスケープシーケンスの詳細については、こちらをご覧ください。 ascii-table.com/ansi-escape-sequences-vt-100.php

41
Michał Trybus

文字列にスタイルを適用するには、次のようなコマンドを使用できます。

echo -e '\033[1mYOUR_STRING\033[0m'

説明:

  • echo -e--eオプションは、エスケープ(バックスラッシュ)文字列が解釈されることを意味します
  • \ 0-エスケープされたシーケンスは、スタイルの開始/終了を表します
  • 小文字のm-シーケンスの終わりを示します
  • 1-太字属性(詳細は以下を参照)
  • [0m-すべての属性、色、フォーマットなどをリセットします。

可能な整数は次のとおりです。

  • -通常のスタイル
  • 1-太字
  • 2-薄暗い
  • 4-下線付き
  • 5-点滅
  • 7-リバース
  • 8-不可視
36
avivamg

理論的にはそうです:

# 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

13
roufamatic