プログラムはカラー出力かどうかをどのように決定しますか?

プログラムはカラー出力かどうかをどのように決定しますか?

lsカラー出力(たとえば、または)を印刷する端末でコマンドを実行すると、gccカラー出力が印刷されます。私が理解しているように、プロセスは実際に出力されます。ANSIエスケープコード、ターミナル書式の色。

ただし、別のプロセス(カスタムCアプリケーションなど)を介して同じコマンドを実行し、出力をアプリケーションの独自の出力にリダイレクトしても色は保持されません。

プログラムは、テキストをカラー形式で出力するかどうかをどのように決定しますか?環境変数はありますか?

ベストアンサー1

デフォルトでは、ほとんどのプログラムはカラーコードを端末に出力します。以下を使用して、出力がTTYであることを確認します。isatty(3)。通常、この動作をオーバーライドするオプションがあります。すべての状況で色を無効にするか、すべての状況で色を有効にします。grepたとえば、GNUの場合、--color=never色を無効にして--color=always有効にします。

シェルでは、以下を使用して同じテストを実行できます。-t test演算子:[ -t 1 ]標準出力が端末の場合にのみ成功します。

おすすめ記事