Gibt es eine Möglichkeit, die Farbgebung von Text beizubehalten, der durch die Pipe |
an head
, tail
, less
usw. übergeben wird?
Antwort1
ls
Ich 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 glark
stattdessen verwenden grep
, wird versucht, die Anzeige mit Farben durchzuführen.
Wenn Sie es verwenden, less
wird -R
versucht, 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 ls
wird die CLICOLOR_FORCE
Umgebungsvariable erwähnt.
Durch das Hinzufügen export CLICOLOR_FORCE=1
zu ~/.zshrc
oder ~/.bashrc
werden, abhängig von der verwendeten Shell, die Farben beim Weiterleiten ls
an andere Befehle wie less
, head
, und beibehalten tail
.
Antwort4
In Betracht ziehen
bat
Eine Alternative zu
cat
Installieren
brew install bat
--args --flags wie
--language
Und--theme
Beispiele
head | bat --language=zsh -n -p --theme=gruvbox-dark
file.py | bat --language=py -n -p --theme=gruvbox-dark