Gibt es eine Möglichkeit, Text an Kopf, Schwanz usw. weiterzuleiten, um ihn einzufärben?

26

Gibt es eine Möglichkeit Einfärben von Text zu halten durch das Rohr geleitet |zu head, tail, lessusw.?

Timofey Gorshkov
quelle
Ein bestimmtes Ausgabeprogramm? Dies hängt vom Programm ab, das die Daten über die Pipe sendet. head, tailUsw. sind nicht diejenigen , die Farben zu entfernen, ist es das Programm die Daten zu erzeugen , die in der Regel überprüfen , ob die Ausgabe an die Konsole (farbig) wird, eine Datei oder ein Rohr (nicht gefärbt).
KurzedMetal

Antworten:

15

Ich nehme an, Sie leiten von lsund möchten die Terminal-Farbcodes beibehalten. Sie können sagen ls --color=always(anstelle der Standardeinstellung von --color=auto), dass die Codes erhalten bleiben, aber das garantiert nicht, dass das, an das Sie weiterleiten, weiß, wie man sie versteht.

Wenn Sie glarkstattdessen verwenden grep, wird versucht, mit Farben anzuzeigen.

Wenn Sie lessmit -Rihm versuchen , mit Farben angezeigt werden soll .

phogg
quelle
6
Ich richte aus git. Ich habe festgestellt, dass es eine ähnliche Konfiguration hat (z. B. git config color.diff always), die die Färbung beibehält.
Timofey Gorshkov
1
@Errandir Das Problem bei dieser Konfiguration ist, dass jedes Skript oder jeder Befehl, der die git diffAusgabe als Eingabe verwendet, unterbrochen wird, da immer die ANSI-Escape-Codes ausgegeben werden.
KurzedMetal
@Errandir, danke! Ich habe keine Skripte, die auf einer sauberen Ausgabe von Git Diff beruhen, also funktioniert das für mich !! Vielen Dank !
Ashutosh Jindal
Ich habe dies für grep verwendet: grep "string" file.txt | headum sicherzustellen, dass das Ergebnis von grep farbig ist, habe ich es soeben ingrep "string" file.txt --color=always | head
Emil Stenström
13

Dies hängt von dem Programm ab, das die Ausgabe in der Pipe generiert.

head, tailUsw. sind nicht diejenigen , die Farben zu entfernen, ist es das Programm die Daten zu erzeugen , die in der Regel überprüfen , ob die Ausgabe an die Konsole (farbig), eine Datei oder ein Rohr (nicht gefärbt) wird

Ich fand eine weitere SU- Frage und Antwort, in der gezeigt wurde, wie Piping-Programme so ausgegeben werden, als würden sie Ausgaben an eine Konsole senden (eine Konsole mit emulieren unbuffer).

KurzedMetal
quelle
Gibt es eine Möglichkeit, die Kolorierung im color=autoModus zu halten (damit das Programm denkt, dass die Ausgabe an die Konsole anstatt an die Pipe geht)?
Timofey Gorshkov
@KurzedMetal Wie funktioniert ein Programm, zum Beispiel head, tailusw., feststellt, dass es verrohrt auf ein anderes Programm wird (so dass sie Daten ohne Farben erzeugen können, etc).
Jorge Bucaran
@JorgeBucaran stackoverflow.com/a/7601564/236871
KurzedMetal