Gibt es eine Methode , um die Ausgabe von bis zu kolorieren cat
, die Art und Weise grep
tut.
Für grep
in den meisten Konsolen zeigt es eine farbige Ausgabe Hervorhebung der Schlüsselwörtern durchsucht. Andernfalls können Sie es erzwingen, indem Sie aufrufen. grep --color
Gibt es eine generische Möglichkeit, die Ausgabe eines Programms entsprechend Ihrer persönlichen Wahl zu färben?
Soweit ich weiß, ist das Programm selbst nicht für die Farben verantwortlich. Es ist die Hülle.
Ich verwende die Standard-Shell in FreeBSD 5.2.1, die anscheinend seit der Epoche keine Farben mehr gesehen hat.
unix
syntax-highlighting
color-scheme
Lelouch Lamperouge
quelle
quelle
Antworten:
cat
mit Syntax Hervorhebung ist einfach außerhalb des Geltungsbereichs.cat
ist nicht dafür gedacht. Wenn Sie nur den gesamten Inhalt einer Datei in irgendeiner Weise farbig gestalten möchten (mit derselben Farbe für die gesamte Datei), können Sie Terminal-Escape-Sequenzen verwenden, um die Farbe zu steuern.Hier ist ein Beispielskript, das die Farbe basierend auf dem Dateityp auswählt (Sie können so etwas verwenden, anstatt es
cat
direkt aufzurufen ):Das obige (auf einem Terminal, das diese Escape-Sequenzen unterstützt) druckt jede Textdatei als 'fett' und jede Binärdatei als rot. Sie können
strings
anstelle voncat
zum Drucken von Binärdateien verwenden und die Logik verbessern, um sie an Ihre Anforderungen anzupassen.quelle
cat
/grep
/any particular program
cat
Aufruf durch einen ersetzen, der$cmd
als $ 1 initialisiert wird, wenn zwei Argumente vorhanden sind, oder als Standard, wenn nur eines vorhanden ist. Dann schreiben Sie einfach :colorful.sh grep file
.pygmentize
ist nicht in der Lage zu färben. Irgendwelche Tipps?Ich würde
pygmentize
aus dem Python-Paket empfehlenpython-pygments
. Möglicherweise möchten Sie den folgenden praktischen Alias definieren (es sei denn, Sie verwenden ihnccat
aus dem ccrypt-Paket).Und wenn Sie Zeilennummern möchten:
quelle
highlight
Befehls.alias ccat='highlight -O ansi'
alias dog='pygmentize -g'
, weil Hunde cooler sind als Katzen!#!/bin/bash \n pygmentize -g $1 | less -R
nyancat
.Optionen:
pygementize ist gut. Ich habe einen Alias:
Aber Highlight ist eine weitere weit verbreitete Alternative
Installation:
Möglicherweise müssen Sie Folgendes installieren
pygments
:und für
highlight
Pakete, die auf allen Distributionen leicht verfügbar sindIn Aktion:
Ich füge unten für beide Aufnahmen hinzu, um einen guten Vergleich der Hervorhebungen zu erzielen
Hier ist
pygmentize
in Aktion:und das ist
highlight
:quelle
highlight
funktionierte hervorragend für meine Bedürfnisse und einfach zu installieren, danke. Wenn Sie Dateien ohne Erweiterungen anzeigen möchten (z. B. .bash_aliases), fügen Sie--syntax=bash
zusätzlich hinzu-O ansi
, um sie zu erzwingen.highlight
ist 34x schneller als dieses Python-Programm. Die Kraft der klassischen Sprachen ist stark.highlight
, die Sie hinzufügen möchten ,--force
um den Alias, sonst wird es einen Fehler für Dateiformate werfen , dass er nicht versteht, während alscat
Ersatz Sie wollen die Ausgabe noch zeigen , ohne Hervorhebung, das ist , was der--force
Fall ist. Alles zusammen:alias cat="highlight -O ansi --force"
-O ansi
standardmäßig HTML ausgegeben wird :-)Ab Ende April 2018:
Das Projekt ist ein Katzenklon mit Unterstützung für in Rust geschriebene Farben und Anpassungen. Es bietet nicht nur Syntaxhervorhebung mit mehreren Themen, sondern auch Git-Integration. Wie in der Dokumentation beschrieben:
Es ist natürlich viel schneller als pygementize und erstickt nicht, wenn es mit großen Dateien konfrontiert wird.
Quellcode und Binärversionen + Installationsanweisungen finden Sie im Github-Repository sowie einen Vergleich mit alternativen Programmen .
quelle
bat
standardmäßig im interaktiven Modus bleiben.cat
Verwenden Sie es mit-pp
Argumenten, damit es sich ähnlicher verhält . Ein Alias wiealias cat="bat -pp"
ist wahrscheinlich das, wonach die Leute suchen.vimcat
ist Single-File (Shell-Skript) und funktioniert gut:http://www.vim.org/scripts/script.php?script_id=4325
Das letzte Update ist ab Dezember 2013. Hinweis: Sie können die Dateityperkennung durch erzwingen
vimcat -c "set ft=<type>"
.quelle
~/.vimrc
sodass die Syntaxhervorhebung sowohl beim Bearbeiten (vim) als auch beim Ausdrucken (vimcat) gleich ist. Beachten Sie, dass sich eine aktualisierte Version von vimcat im Vimpager-Repository befindet .vimpager
verwendet mein vim-Farbschema nicht.vimcat
(1 ~ 2 Sekunden Ausführungszeit) viel langsamer alspymentize
(~ 200 ms), was viel langsamer alshighlight
(~ 20 ms) ist, was viel langsamer alscat
(~ 2 ms) ist. Auf der anderen Seite,vimcat
Griffe mehr Dateitypen und ist genauer alshightlight
undpygmentize
, und es ist immer noch schneller als erstesvim
dann:q
. Damit verdient es mir meine Wahl für diese spezielle Aufgabe.Das Tool, das Sie suchen, ist wahrscheinlich supercat (hier ist eine kurze Einführung, die vom Linux Journal veröffentlicht wurde).
Mir ist klar, dass diese Antwort zu spät ist und die OP-Anforderungen nicht vollständig erfüllt. Ich füge es also nur als Referenz hinzu (es könnte für andere Leute nützlich sein, die nach einer Möglichkeit suchen, die Ausgabe von Textdateien einzufärben).
quelle
Es gibt eine kolorierte Version von cat - ccat . Erhalten Sie es von https://github.com/jingweno/ccat/ .
Installation unter Linux / Windows / macOS
Es ist eine einzelne eigenständige ausführbare Datei. Um sie zu installieren, können Sie die Binärversion für Ihr Betriebssystem von https://github.com/jingweno/ccat/releases entpacken und beispielsweise die ccat- Binärdatei nach kopieren
/usr/local/bin
.Wenn Sie Binärdateien vermeiden möchten oder wenn für Ihre Plattform keine Binärdatei vorhanden ist (z. B. Himbeer-Pi usw.), können Sie alternativ aus dem Quellcode kompilieren, sofern Sie über eine funktionierende
go
Entwicklungsumgebung verfügen (apt install golang
unter Debian-basierten Linuxen oderbrew install golang
auf dem Mac):Installation auf dem Mac über Homebrew
Alias zu
cat
So ersetzen Sie regelmäßig
cat
durchccat
Add-In~/.bashrc
:ccat
ist in Go implementiert , es handelt sich also um eine native Binärdatei, die viel schneller ausgeführt wird als Python-basierte Lösungen, wie z. B. pylements , das dahinter stehende Modulpygmentize
. Ich habe keinen merklichen Geschwindigkeitsunterschied zwischencat
und gesehenccat
.quelle
brew install ccat
es genug zu sein, keine Notwendigkeitbrew tap
mehr.Der beste Weg , und der einfachste Weg , es zu tun , wenn Sie in Ihrem Rechner haben vim ist die Verwendung ,
vimcat
die mit kommtvimpager
Programm.git clone git://github.com/rkitover/vimpager cd vimpager sudo make install
Führen Sie vimcat aus:
vimcat index.html
quelle
highlight
und 3x langsamer alsbat
bei einem 30-Zeilen-Bash-Skript auf meinem Computer.source-highlight
Vielleicht ist es möglich, interessante
source-highlight
Veröffentlichungen unter GNU zu finden : ein anderes Paket alshighlight
.Auszug aus
apt-cache show source-highlight
:Ich habe einen Alias gemacht (Cat und PCat, siehe unten) und dies ist ihre Ausgabe
Sie können auf Debian basierend mit installieren
und füge es als Alias hinzu, z. B. in deinem
.bash_aliases
mit so etwas wie der folgenden Zeile.Oder Sie können einen ähnlichen Alias erstellen (ohne dass
-i
am Ende die Möglichkeit besteht, ein Pipe-In durchzuführen ).Unter den Optionen, die aus
man source-highlight
den-s
Unterstreichungen gelesen werden können , ist es möglich , die Hervorhebung per Befehlszeile auszuwählen oder zu erzwingen oder diese Aufgabe dem Programm zu überlassen:quelle
less
mitsource-highlight
, jemand auf GitHub gibt die Antwort:export LESSOPEN="| source-highlight -f esc -i %s -o STDOUT"
undexport LESS=" -R "
. Sehr nützlich, wennpygmentize
es nicht verfügbar ist und nicht installiert werden kann.Das ist nicht richtig. Das Terminal interpretiert nur die Farbcodes, die an das Terminal ausgegeben werden. Abhängig von seiner Fähigkeit kann es bestimmte Formatierungs- / Farbcodes ignorieren.
Auf der Manpage scheint es nicht so zu sein, dass Katze das Ausmalen ihrer Ausgabe unterstützt. Selbst wenn es das Färben wie grep unterstützen würde, was sollte es in der Textdatei färben? Syntax, die die erforderlichen Kenntnisse der zugrunde liegenden Sprache hervorhebt, die nicht im Rahmen eines einfachen Dienstprogramms wie cat liegen.
Sie können leistungsfähigere Editoren wie vim, emacs, gedit usw. auf der Unix-Plattform ausprobieren, wenn es Ihr Ziel ist, den hervorgehobenen Code zu sehen.
quelle
cat
Nicht zum Drucken von Dateien mit Zeilennummern, nicht zum Komprimieren mehrerer Leerzeilen, nicht zum Betrachten nicht druckender ASCII-Zeichen, sondern zum Verketten von Dateien." - von UNIX Style oder cat -v Als schädlich eingestuft .Unter OSX einfach machen
brew install ccat
.https://github.com/jingweno/ccat . Wie cat, zeigt jedoch Inhalte mit Syntaxhervorhebung an. Eingebaut in Go.
quelle
Fledermaus macht genau das und kann auf Katze ausgerichtet werden
alias cat='bat'
quelle
Alte Frage, die nur für die Aufzeichnung beantwortet wurde, um die Lösung bereitzustellen, die ich letztendlich verwendet habe. Vielleicht ist das ein bisschen hacky (wahrscheinlich nicht die ursprüngliche Absicht des Parameters), aber:
alias cgrep = 'grep -C 9000'Katze was auch immer | cgrep 'snozzberries'..
grep -C N
liefert N Kontextzeilen über und unter dem gefundenen Element. Wenn es größer als der Eingang ist, ist der gesamte Eingang enthalten. In diesem Fall stellen wir nur sicher, dass es größer ist als jeder typische Terminalausgang, den wir manuell betrachten möchten. Dies ist im Allgemeinen das, was Sie beim Hervorheben tun möchten.BEARBEITEN: Diese unten von Beni Cherniavsky-Paskin vorgeschlagene Lösung ist jedoch überlegen - sie entspricht (und hebt hervor) entweder dem gesuchten Wort oder dem Zeilenanfang (nicht hervorhebbar). Das Nettoergebnis ist genau das, was Sie wollen.
Das ist die neue beste Lösung, die ich für dieses Problem gesehen habe, danke Beni.
quelle
egrep 'snozzberries|$'
In dieser Frage wurde /superuser/602294/is-there-colorizer-utility-that-can-take-command-output-and-colorize-it-accordin
grcat
/grc
tool als Alternative zu empfohlensupercat
.Mann von grc und von
grcat
; es ist Teil des grc-Pakets ( Quellen ):quelle
Ich habe das kleine Skript geschrieben, um die Färbung mit durchzuführen
pygmentize
.Und dann einen Alias für das Skript erstellen.
alias cat=colorize_via_pygmentize
. Vergessen Sie auch nicht, dies in ~ / .bashrc zu speichern .quelle
Wenn Sie nur möchten, dass ein Einzeiler die
cat
Ausgabe auf eine bestimmte Farbe einstellt , können Sie anhängenalias cat="echo -en 'code' | cat - "
zu deinem
~/.$(basename $SHELL)rc
Hier ist eine Übersicht mit Farbcodes: https://gist.github.com/chrisopedia/8754917
Ich mag
'\e[1;93m'
, das ist hochintensiv gelb. Es sieht aus wie das:quelle
Verwenden Sie einfach vim und diese vimrc-Datei .
Einzeiler:
nano -v
kann auch eine Alternative sein.quelle
Platzieren Sie in Ihrem ~ / .bashrc
dann
quelle