GNU/Linux >> Linux の 問題 >  >> Linux

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

色付きの出力( ls など)を出力する端末からコマンドを実行すると またはgcc )、色付きの出力が印刷されます。私の理解では、プロセスは実際にはANSIエスケープコードを出力しており、端末は色をフォーマットします。

ただし、別のプロセス(カスタムCアプリケーションなど)で同じコマンドを実行し、出力をアプリケーション自体の出力にリダイレクトすると、これらの色は持続しません。

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

承認された回答:

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

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


Linux
  1. プログラムの出力をZipファイルにリダイレクトする方法は??

  2. ターミナルからGUIプログラムにキーストローク(f5)を送信する方法は?

  3. 「tail-f| Iconv -fsjis」は何も出力しませんか?

  1. Docker bash プロンプトでカラー出力が表示されない

  2. Linux コンソールで、出力をラップしない方法

  3. プロセスがps出力で異なる名前を持っているように見えるのはなぜですか?

  1. Thesqldumpでエラーが発生しない場合にのみGzipで圧縮するにはどうすればよいですか?

  2. ターミナルでマルチスレッドGrepを開始する方法は?

  3. GPG には十分なエントロピーがありません