Kann `cat` Dateien mit Code Markup in Farben anzeigen?

45

Manchmal möchte ich schnell den Inhalt einer Datei über die Befehlszeile anzeigen. Dafür verwende ich natürlich cat, aber es handelt sich oft um Quelldateien in Python , Java oder einfachem HTML . Für diese Dateien wäre es praktisch, wenn Sie catden Dateien eine Farbmarkierung geben könnten, damit sie einfacher gelesen werden können.

Kann catso etwas tun?

kramer65
quelle
Dies kann bereits eine Antwort hier haben
Wilf
ha @wilf fand ich den gleichen Code mit Google: D Auch erwähnenswert, dieses Thema auf SO: superuser.com/questions/84426/...
Rinzwind
@ Rinzwind - Ich suchte Stackoverflow, wie es kommen musste ;-)
Wilf
Diese Frage erinnert mich an cat -vals schädlich .
Schneeball

Antworten:

48

catkann das nicht. Aber vielleicht pygments kann in der Lage sein , Sie dort zu helfen. Es ist ein Python-Skript und kann entweder über apt-get installiert werden

sudo apt-get install python-pygments

oder einfach über easy_install heruntergeladen und installiert.

Es unterstützt viele Quellcode- Sprachen und auch Markup-Sprachen

Es wird von verwendet

pygmentize -g <filename>
txwikinger
quelle
5
Datei öffnen als pygmentize -g <filename>, der -gSchalter ist wichtig, um Dateien ohne Lexer zu verarbeiten. Wenn Sie beispielsweise versuchen, /etc/fstabzu öffnen, ohne dass -gdies fehlschlägt.
souravc
Thanks @souravc Hat es zur Antwort hinzugefügt. Interessanterweise scheint dieses Argument in der Manpage oder
Hilfeseite
2
Nun, ich habe viel damit gespielt. Sie können es finden, versuchen, pygmentize --help wenn -gübergeben, versuchen, den Lexer aus dem Dateiinhalt zu erraten, oder als Klartext durchgehen, wenn dies fehlschlägt (dies kann für stdin funktionieren).
Souravc
4
Dies ist die beste, dann alias Katze zu -g pygementize und du bist golden. Bei Fischen ist es so einfach funced cat... type pygmentize -g $argv... save..funcsave cat.
Elijah Lynn
in meinem habe bashrcich hinzugefügt: command -v pygmentize >/dev/null 2>&1 && alias cat='pygmentize -g'
Antonios Hadjigeorgalis
19

Nicht von catsich aus, aber Sie können so etwas wie Source Highlite oder Supercat oder Highlight verwenden

Quell-Highlight

Dieses Programm erstellt anhand einer Quelldatei ein Dokument mit Syntaxhervorhebung. Es bietet auch eine C ++ - Hervorhebungsbibliothek (neu) (seit Version 3.0).

Source-Highlight liest die Quellensprachenspezifikationen dynamisch, so dass es leicht erweitert werden kann (ohne die Quellen neu zu kompilieren), um neue Sprachen zu handhaben. Es liest auch die Ausgabeformatsspezifikationen dynamisch und kann daher leicht erweitert werden (ohne die Quellen neu zu kompilieren), um neue Ausgabeformate zu verarbeiten. Die Syntax für diese Angaben ist recht einfach (siehe Handbuch).

Das Handbuch zur Installation:

Ausführliche Anweisungen zum Aufbau und zur Installation finden Sie in der Datei INSTALL. Wenn Sie gewohnt sind, Linux-Software zu kompilieren, die mit Quellen geliefert wird, können Sie einfach den üblichen Schritten folgen, dh die heruntergeladene Datei in ein Verzeichnis entpacken und dann:

 cd <source code main directory>
 ./configure
 make
 make install

Supercat

Dies ist die Homepage von Supercat. Supercat ist ein Programm, das Text basierend auf übereinstimmenden regulären Ausdrücken / Zeichenfolgen / Zeichen koloriert. Supercat unterstützt HTML-Ausgabe sowie Standard-ASCII-Text. Im Gegensatz zu einigen vorhandenen Textfärbungsprogrammen müssen Sie in Supercat kein Programmierer sein, um Färbungsregeln zu erstellen.

Wenn Sie eine Supercat-Konfigurationsdatei für einen Standarddateityp geschrieben haben, zögern Sie nicht, mich unter "bug-spc (at) nosredna (dot) net" für eine mögliche Aufnahme in die Supercat-Distribution zu kontaktieren.

Oder mit einer Funktion ( Quelle ):

#!/bin/bash#!/bin/bash
if [ ! -t 0 ];then
        file=/dev/stdin
elif [ -f $1 ];then
        file=$1
else
        echo "Usage: $0 code.c"
        echo "or e.g. head code.c|$0"
        exit 1
fi
pygmentize -f terminal -g $file

Benötigt: Pygments ( sudo apt-get install python-pygments python3-pygments) Füge es als Funktion hinzu, um .functions zu aktivieren und gib ihm einen Namen wie color ()

Rinzwind
quelle
14

Wie aus dieser Antwort hier können Sie die Verwendung von python-pygmentsPaketen zu Highlight Sachen. Zuerst machen Sie:

sudo apt-get install python-pygments python3-pygments

dann:

pygmentize -g FILENAME

dann probieren Sie es aus:

Bildbeschreibung hier eingeben

Sie können es auch als Alias ​​festlegen, wie in der Antwort, die ich verlinkt habe. Führen Sie im Grunde Folgendes aus:

echo "alias catc='pygmentize -g'" >> ~/.bash_aliases 
chmod +x ~/.bash_aliases

Schließen Sie das Terminal, öffnen Sie es erneut, und der catcBefehl sollte jetzt funktionieren. Wenn dies nicht der Fall ist, vergewissern Sie sich, dass sich diese Zeilen in der .bashrcDatei befinden und nicht kommentiert sind:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Eine andere Sache wäre, einfach zu benutzen nano:

nano testfile

Bildbeschreibung hier eingeben

Wilf
quelle
6

man view oder man vim

Grundsätzliche Verwendung: view <filename>

Beenden: :q<Return>( <Esc>bei Verwendung ein erstes hinzufügen vim) oder ZZ(zweimal z in Großbuchstaben).

Der Texteditor des Programmierers vimverfügt bereits über alles, was Sie benötigen, und ist wahrscheinlich bereits Teil Ihres Systems.

vimhat einen Nur-Lese-Modus mit viewoder aktiviert vim -R. Wenn Sie nur die markierte Datei anzeigen möchten, sollte dies ausreichen.

Einfach zu bedienen, navigierbar und überall verfügbar. Sie müssen sich nicht mit der Installation neuer Software oder dem Schreiben von Bash-Skripten herumärgern.

ein anderer Ben
quelle
Ich weiß. Die Sache ist, dass das Öffnen und Schließen von VIM nicht schnell geht. Ich möchte sofort eine Datei anzeigen und dann in der Befehlszeile fortfahren. Deshalb fand ich Pygementize so gut. Sofortiges Ergebnis, kein Beenden eines Programms oder irgendetwas .. :)
kramer65
1
@ kramer65 OK natürlich ist es deine Vorliebe, aber du musst nicht "öffnen" vimoder view, du gibst es einfach mit der Datei an :, view file.pyalso kein Unterschied da mit cat. Klar musst du es schließen, aber wirklich, :q<Return>oder es ZZsind keine schwierigen Aufgaben.
ein anderer ben
Das Hauptproblem ist, dass vi / vim / view nicht in stdout schreibt, so dass ich einen Befehl nicht einfach schreiben kann, während ich die oben hervorgehobene Syntax betrachte.
Jack_Hu
4

Man kann ccat auschecken .

Es fügt den Ausgabedateien eine Syntaxhervorhebung hinzu.

Alan Dong
quelle
3

catkann nicht nur Syntax-Hervorhebungen erzeugen. Trotzdem können Sie dies wie folgt mit tun python-pygments. Zuerst vom Terminal installieren als,

sudo apt-get install python-pygments

Kopieren Sie nun die unten stehende Funktion ~/.bashrc. Es wird Ihnen geben, was Sie wollen, und es wird die Eigenschaften bewahren,cat ansonsten gibt es keinen Grund für die Verwendungcat

catc(){
    cat "$@" > /tmp/.tmp
    pygmentize -g /tmp/.tmp
    rm /tmp/.tmp
}

Quelle ~/.bashrcals,

. ~/.bashrc

Es wird farbige Ausgabe geben,

catc <filename>

Es wird auch mit Farbe verketten,

catc <file1> <file2> ... <filen>
souravc
quelle
Gibt es eine Möglichkeit, das Scrollen mit Aufwärts- und Abwärtspfeilen zu aktivieren, wenn pygmentize? ich es mit einem Befehl des Formulars xterm -e "pygmentize -g <filename>" öffne und stelle fest, dass der einzige Weg zum Scrollen die Verwendung der Bildlaufleiste ist. Ich habe versucht, die Ausgabe an zu leiten, lessaber das führte zu einer Müllausgabe.
Leo Simon
ja du kannst pygmentizemit weniger verwenden. Erstellen Sie eine Bash-Funktion lesscwie folgt:lessc () { pygmentize -gf terminal "$1" | less -R }
souravc
2

Bat - Ein Katzenklon mit Flügeln

Möglicherweise möchten Sie auch überprüfen, batwelche der folgenden Funktionen verfügt:

  • Satzstellung markieren
  • Git-Integration
  • Optionales Anzeigen nicht druckbarer Zeichen
  • Automatisches Blättern mit less
  • Dateiverkettung als Ersatz für catumgeleitete Dateien

 Vorschau

Screenshot der Fledermaus zeigt eine farbige Datei

Foto vom offiziellen GitHub

Installation

Sie können das neueste Debian-Paket hier herunterladen und installieren mit:

sudo dpkg -i bat_0.10.0_amd64.deb

Anpassen von Versionsnummer und Architektur.

Andrea Lazzarotto
quelle
0

Andere Antworten decken ab, warum dies catnicht möglich ist. Mit lesspipe.sh können Sie es mit weniger tun .

Fuad Saud
quelle
0

Anstatt ein Paket eines Drittanbieters zu installieren, können Sie einfach gediteine Datei mit Syntaxhervorhebung anzeigen. Kopieren Sie zum Beispiel die Adressleiste oben und fügen Sie sie in Ihr Terminal ein:

gedit https://askubuntu.com/questions/405960/can-cat-show-files-using-code-markup-in-colors

Sie werden diese Frage in HTML mit formatierten Farben sehen:

gedit https.png

  • Sie können bekannte geditNavigationstasten verwenden
  • Sie können den Zeilenumbruch ein- und ausschalten
  • Sie können Plugins verwenden, wie ich sie für die 80-Zeichen-Rinne und die Dokumentübersicht (ganz rechts) mit dem Miniaturbild-Schieberegler installiert habe
  • Die einzige Einschränkung ist, dass Sie sich an Alt+ erinnern müssen F4, um das zu simulierende Fenster schnell zu schließen, catohne dass Tastatureingaben erforderlich sind.
WinEunuuchs2Unix
quelle