色付きのシェル出力に関するマニュアルページはありますか?

色付きのシェル出力に関するマニュアルページはありますか?

ご存知のように、色分けされた出力は、特殊な文字シーケンスによって作成されます。たとえば、次のようになります。

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 に関しては役に立ちません。

  • ウェブ検索で見つかる他のソースのほとんどは、他のソースからのコピー(引用されたものなど)などであり、原則として実際の標準にはほとんど注意が払われません。

関連情報