Bashシェルから色を取得する

Bashシェルから色を取得する

私はこれを持っています:

ql_gray='\033[1;30m'
ql_magenta='\033[1;35m'
ql_cyan='\033[1;36m'
ql_orange='\033[1;33m'
ql_green='\033[1;32m'
ql_no_color='\033[0m'

私は次のように使用します:

echo "${ql_magenta}quicklock: could not acquire lock with name '${qln}'${ql_no_color}."

しかし、私はそれを理解します:

\033[1;35mquicklock: could not acquire lock with name '/Users/me/.quicklock/locks/_oresoftware.lock'\033[0m.

制御文字を認識するには、いくつかのフラグを設定する必要がありますか?

エンドユーザーが制御文字を認識できることを確認できるフラグはありますか?認識されない場合は、上記の設定を次のように設定できます。

ql_gray=''
ql_magenta=''
ql_cyan=''
ql_orange=''
ql_green=''
ql_no_color=''

Bash バージョン 3 以降をサポートする必要があります。

ベストアンサー1

これを行うポータブルな方法は、以下を使用することです。tput:

ql_gray=$(tput setaf 7)
ql_magenta=$(tput setaf 5)
ql_cyan=$(tput setaf 6)
ql_orange=$(tput setaf 3)
ql_green=$(tput setaf 2)
ql_no_color=$(tput sgr0)

これは現在の端末設定を考慮します。公式カラーリストは次の場所に文書化されています。terminfo(5)マンページしかし、実験が必要な場合があります。たとえば、上記のリストでは、7は正式に白(ただし、ほとんどの端末では明るい灰色で終わります)、3は正式に黄色です(ただし、ほとんどの端末では濃い黄色またはオレンジ色で表示されます)。TERM=dumb色を呼び出す前に設定して色を無効にできますtput

おすすめ記事