Gibt es eine Möglichkeit, die Farbe von an Kopf, Ende, weniger usw. übergebenem Text beizubehalten?

Gibt es eine Möglichkeit, die Farbe von an Kopf, Ende, weniger usw. übergebenem Text beizubehalten?

Gibt es eine Möglichkeit, die Farbgebung von Text beizubehalten, der durch die Pipe |an head, tail, lessusw. übergeben wird?

Antwort1

lsIch gehe davon aus, dass Sie die Terminalfarbcodes weiterleiten und beibehalten möchten. Sie können ls --color=always(anstelle des Standardwerts --color=auto) angeben, wodurch die Codes beibehalten werden, aber das garantiert nicht, dass das Gerät, zu dem Sie die Weiterleitung durchführen, diese zu verstehen weiß.

Wenn Sie glarkstattdessen verwenden grep, wird versucht, die Anzeige mit Farben durchzuführen.

Wenn Sie es verwenden, lesswird -Rversucht, es mit Farben anzuzeigen.

Antwort2

Es hängt vom Programm ab, das die Ausgabe in der Pipe generiert.

head, tail, usw. sind nicht diejenigen, die die Farben entfernen, sondern das Programm, das die Daten generiert, prüft normalerweise, ob die Ausgabe an die Konsole (farbig), eine Datei oder eine Pipe (nicht farbig) geht.

ich fandein weiteres SU-Q&Azeigt, wie man Programme so manipuliert, dass die Ausgabe so erfolgt, als ob sie die Ausgabe an eine Konsole senden würden (Emulieren einer Konsole mit unbuffer)

Antwort3

Unter Mac OS X man lswird die CLICOLOR_FORCEUmgebungsvariable erwähnt.

Durch das Hinzufügen export CLICOLOR_FORCE=1zu ~/.zshrcoder ~/.bashrcwerden, abhängig von der verwendeten Shell, die Farben beim Weiterleiten lsan andere Befehle wie less, head, und beibehalten tail.

Antwort4

In Betracht ziehen

bat

Eine Alternative zu

cat

Installieren

brew install bat

--args --flags wie

--languageUnd--theme

Beispiele

head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark

verwandte Informationen