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 ~/.bashr 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

12 Kommentare

  1. 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!

  2. …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/

  3. @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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein