Linux und Ich

Blog über Ubuntu, Linux, Android und IT

cat und less in Farbe mit pygmentize

Syntax-Highlighting für cat und less mit pygmentize

| 12 Kommentare

Ich habe mich gestern Abend etwas geärgert, dass cat und less kein Syntax-Highlighting beherrschen. Immer wieder erwische ich mich dabei, dass ich Dateien in einem Editor betrachte, der mir den Code eben farbig und damit auch übersichtlich ausgeben kann. Allerdings ist es gar nicht so aufwändig cat und less ein bisschen Farbe beizubringen, gibt es doch mit dem Python Syntax Highlighter Pygments ein mächtiges Werkzeug, das den beiden Kommandos Syntax-Highlighting lernen kann.

Pygments ist in einer Standard-Installation von Ubuntu nicht vorinstalliert, von daher müsst ihr den Syntax-Highlighter noch über die Paketverwaltung nachinstallieren. Das Paket “python-pygments” gibt es in allen noch unterstützten Ubuntu-Versionen. Anschließend könnt ihr gleich euren Editor der Wahl anwerfen und die ~/.bashrc zum Editieren aufrufen, ich mache das Ganze hier mit Gedit.

$ sudo apt-get install python-pygments
$ gedit ~/.bashrc

Fügt nun ans Ende der Datei – oder an einem anderen Platz, wo ihr schon eure eigenen Bash-Aliase aufbewahrt – folgende Zeilen Code ein. Sie ermöglichen über die Kommandos ccat und eben cless (color-cat und color-less) den Aufruf der Befehle mit pygmentize als Syntax Highlighter.

# Eure eigenen Aliase....
alias ccat='pygmentize -g'
function cless() {
        pygmentize -g "$1" | less -R
}

Damit ihr abschließend euer Terminalfenster nicht schließen und wieder neu öffnen müsst, lasst ihr das System jetzt die ~/.bashrc umgehend wieder neu einlesen, so dass eure neuen Aliase (und die Funktion) sofort aktiv werden.

$ source ~/.bashrc

Danach ist der Kuchen eigentlich gegessen, der Aufruf von $ ccat foo oder $ cless bar bringt in Zukunft wieder mal ein kleines bisschen mehr Farbe ins Terminal, diesmal hat die Sache sogar etwas mehr Nutzen als der Regenbogen mit lolcat.

cat und less arbeiten mit pygmentize in Farbe

Autor: Christoph

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

12 Kommentare

  1. Prima! Danke für den Tipp! :)

  2. Das scheint nur mit Unicode-Dateien zu funktionieren. cless auf die gerade geänderte ~/.bashrc angewendet, führt zu folgendem Fehler:

    *** Error while highlighting:
    UnicodeDecodeError: ‘utf8′ codec can’t decode byte 0xf6 in position 3162: invalid start byte
    (file “/usr/lib/python2.7/encodings/utf_8.py”, line 16, in decode)

    Diese .bashrc ist uralt und ISO-8859-kodiert – wie die meisten meiner Text-basierten Dateien …

    Trotzdem danke für den Tipp!

  3. Auch von mir danke für den Tipp. Einziger Wermutstropfen, leider kann man dann nicht mehr von less direkt in einen Editor springen.

  4. …wäre ein sehr nützliches Feature doch leider kann less dies nicht, genausowenig wir irgendein anderer mir bekannter Pager (more, most,…).
    Aber es gibt ein cooles Makro für vim welches less mit Syntax-Highlighting nachbaut. Mit diesem Makro verhält sich vim zu 99% genauso wie less, nur dass man noch Syntax-Highlighting dazu hat. Bei mir liegt das Makro-Skript in /usr/share/vim/vim72/macros/less.sh, ansonsten könnt ihr es mit:
    $ locate “macros/less.sh”
    bei euch sicherlich finden, wenn ihr vim installiert habt.
    Das Skript ruft ihr genauso auf wie less, also
    /usr/share/vim/vim72/macros/less.sh DATEINAME
    Durch drücken von h, könnt ihr euch dann wie in less gewohnt eine kleine Hilfe anzeigen lassen, doch die Tastenbelegung ist eigentlich genau die gleiche wie in less. Zu dem Makro an sich gibt es in vim mit
    :help less
    eine Erklärung. Wenn ihr dieses Makro dann anstelle von less nutzen wollt solltet ihr euch einfach ein alias in eurer .bashrc (oder .zshrc oder …) anlegen:
    alias less =”/usr/share/vim/vim72/macros/less.sh”
    Und schon habt ihr Syntax-Highlighting für less

    via: https://rorschachstagebuch.wordpress.com/2010/03/10/syntax-highlighting-fur-less/

  5. vim als pager ist eine gute Idee. Da ich sowieso vim verwende, habe ich mir vimpager besorgt. Damit klappt das Syntaxhighlighting problemlos.

  6. @Jeremias+Stefan, less.sh hatte ich auch im Netz gefunden, aber ich fand die Lösung ohne vim gar nicht mal so schlecht, reicht für meine Zwecke meist aus, auch wenn sie nicht perfekt ist.

    Grüße
    Christoph

  7. Hallo Christoph. Vielen Dank für den nützlichen Tipp.

  8. Pingback: less und cat in Farbe | Hampas Blog

  9. Wow!

    Funktioniert auch mit der zsh.

    Danke, Christoph

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.