GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie entscheidet ein Programm, ob es eine farbige Ausgabe haben soll oder nicht?

Wenn ich einen Befehl von einem Terminal ausführe, das eine farbige Ausgabe ausgibt (wie ls oder gcc ), wird die farbige Ausgabe gedruckt. Nach meinem Verständnis gibt der Prozess tatsächlich ANSI-Escape-Codes aus, und das Terminal formatiert die Farbe.

Wenn ich jedoch denselben Befehl von einem anderen Prozess (z. B. einer benutzerdefinierten C-Anwendung) ausführe und die Ausgabe auf die eigene Ausgabe der Anwendung umleite, bleiben diese Farben nicht bestehen.

Wie entscheidet ein Programm, ob Text farbig ausgegeben wird oder nicht? Gibt es eine Umgebungsvariable?

Akzeptierte Antwort:

Die meisten dieser Programme geben standardmäßig nur Farbcodes an ein Terminal aus; sie prüfen, ob ihre Ausgabe ein TTY ist, indem sie isatty(3) verwenden . Normalerweise gibt es Optionen, um dieses Verhalten zu überschreiben:Farben in allen Fällen deaktivieren oder Farben in allen Fällen aktivieren. Für GNU grep zum Beispiel --color=never deaktiviert Farben und --color=always aktiviert sie.

In einer Shell können Sie den gleichen Test mit -t durchführen test Operator:[ -t 1 ] wird nur erfolgreich sein, wenn die Standardausgabe ein Terminal ist.


Linux
  1. Wie leite ich die Ausgabe eines Programms in eine Zip-Datei um?

  2. Wie Grep-Zeilen, die nicht mit „#“ oder „;“ beginnen?

  3. Wie sendet man Tastenanschläge (f5) vom Terminal an ein Gui-Programm?

  4. „Schwanz -f | Iconv -fsjis“ gibt nichts aus?

  5. Wie funktioniert der Exit-Befehl auf einem Unix-Terminal?

So beheben Sie den Fehler „Repository hat keine Release-Datei“ in Ubuntu

So kompilieren Sie C, C++ und Java mit Terminal unter Linux

So leiten Sie die Programmausgabe als Eingabe um

Wie kopiere ich die Terminalausgabe?

in der Linux-Konsole, wie man die Ausgabe NICHT umschließt

Wie kann ein Prozess in der ps-Ausgabe einen anderen Namen haben?