
ご存知のように、色分けされた出力は、特殊な文字シーケンスによって作成されます。たとえば、次のようになります。
echo -e "\e[34m Hello\n \e[0m"
これにより、青色の「Hello」という単語が生成されます。これを行うには、Web で検索する必要がありましたが、ソースによって異なることが書かれている可能性があるため、困難です。マニュアルがいくつかあるはずだと思いましたが、見つけることができませんでした。またはapropos color
類似のものでさえも。そこで、質問です。信頼できるマニュアルはどこで見つけられるのでしょうか。
答え1
このページに記載できないほど多くの情報源があります。
- このコマンド
echo -e
は拡大ASCII 27(8進数33または「\033」)としてレンダリングされます\e
。これらを印刷するポータブルな方法は、printf
(POSIX) 標準と比較echo
(POSIX)。 この例は次のように書き直すことができます。
printf "\033[34m Hello\n \033[0m"
- カラーエスケープの基準はECMA-48(コード化文字セットの制御関数)。
- ECMA-48 の 8.3.117 SGR - SELECT GRAPHIC RENDITION には、8 つの前景色と 8 つの背景色を設定するための制御シーケンスがリストされています。
- また、コード 39/49「デフォルトの表示色 (実装定義)」と 38/48「将来の標準化のために予約済み。ISO 8613-6 [CCITT 勧告 T.416] で指定されているように、文字の前景色を設定するためのもの」もリストされています。つまり、別の組織による勧告はありますが、(24 年経った今でも) 標準の一部にはなっていません。
- よく読んでみると、この規格は多くの箇所で曖昧で、さまざまな解釈が可能であることに気づくだろう。構文これらの制御シーケンスについては説明していないが、行動そのためには、それぞれの端末のドキュメントを参照する必要があります。
- xtermのドキュメントは以下にあります。XTerm 制御シーケンス、これはDECのドキュメントに精通していることを前提としています。ホームページ
- 他の端末の場合、マニュアルページにはコントロールが列挙されている場合があります(Linuxコンソールの場合と同様)。コンソールコード)。
- 他の端末は「xterm」として文書化されています。議論についてはxterm FAQを参照してください。コントロールを数えてバージョンを比較する幸いなことに、カラーコントロールはたいてい互換性あり(ただしncurses FAQを参照)私の端末には色が付いていないスペースがいくつか表示されます)。
マニュアルページも読むことができます
tput
、これにより、terminfo
シェルスクリプトで機能を使う。この例は次のように書き直すことができる。printf '%s\n' "$(tput setaf 4)Hello$(tput setaf 0)"
いくつかの情報源、例えばBash プロンプト HOWTOそしてその高度な Bash スクリプト ガイド色については言及されていますが、(これらでさえ)原則として欠落や省略があり、ECMA-48 に関しては役に立ちません。
- ウェブ検索で見つかる他のソースのほとんどは、他のソースからのコピー(引用されたものなど)などであり、原則として実際の標準にはほとんど注意が払われません。