Markdown im Terminal anzeigen

  Ralf Hersel   Lesezeit: 5 Minuten  🗪 12 Kommentare

Markdown-Dateien im Terminal rendern und anzeigen.

markdown im terminal anzeigen

Im Rahmen unserer aktuellen Serie über strukturierte Notizen haben wir auch einen minimalistischen Ansatz beschrieben, bei dem die Verwaltung von Notizen ausschliesslich im Terminal stattfindet. In den Kommentaren dazu, fragte eine Leser:in "Gibt es Lösungen, um grafisch innerhalb von Dateiverwaltern, wie zum Beispiel Thunar, Markdown-Dateien als Vorschau zu erhalten?"

Da ich die Antwort für nicht relevant im gegebenen Kontext halte, habe ich sie umformuliert "Gibt es Möglichkeiten, wie man Markdown-Dateien im Terminal anzeigen kann?". Die Antwort auf diese Frage war für mich nicht offensichtlich, aber interessant. Was ist zu tun? Die Markdown-Datei muss gerendert und angezeigt werden. Die Lösung soll sich ausschliesslich im Terminal abspielen. Dazu möchte ich euch zwei Varianten anbieten.

Pandoc und Lynx

Diese Lösung schiesst einem als erste in den Kopf, weil Pandoc das Konvertierungs-Genie ist, wenn es um Text-Formate geht. Möchte man das Ergebnis im Terminal darstellen, bietet sich der Terminal-Webbrowser Lynx an. Und so geht es: Sowohl Pandoc als auch Lynx sind in den Repos der verbreiteten Distributionen erhalten und können mit den üblichen Installationsbefehlen eingerichtet werden.

Hat man nun eine Markdown-Datei mit dem Namen markdown.md erstellt, kann diese mit folgendem Kommando gerendert und angezeigt werden:

pandoc markdown.md | lynx -stdin

Pandoc wandelt markdown.md in eine html-Datei um, wonach der Terminal-Browser Lynx die html-Datei über stdin als Input geliefert bekommt und im Terminal anzeigt (siehe Screenshot oben).

Rich

Die zweite Variante verwendet das Python-Modul Rich. Rich ist eine Python-Bibliothek für Rich Text und schöne Formatierung im Terminal. Die Rich-API macht es einfach, Farbe und Stil zur Terminalausgabe hinzuzufügen. Rich kann auch schöne Tabellen, Fortschrittsbalken, Markdown, syntaktisch hervorgehobenen Quellcode, Rückverfolgungen und vieles mehr darstellen.

Das ist viel mehr, als für unseren Zweck benötigt wird. Wichtig ist, dass Rich auch Markdown-Dateien rendern kann. Als Python-Modul installiert man Rich so:

python -m pip install rich

Möchte man eine Markdown-Datei mit Rich anzeigen lassen, verwendet man diesen Befehl:

python -m rich.markdown markdown.md 

Das Ergebnis sieht so aus:

Welche Variante gefällt euch besser? Bei der Pandoc/Lynx-Version gibt es mehr zu installieren und grössere Abhängigkeiten (Haskell). Rich hat einen leichteren Fussabdruck und bietet viele weitere Möglichkeiten, wie man diesem Bild entnehmen kann:

Andererseits gehört Pandoc zur Must-have-Installation für jede:n, der Text-Formate konvertieren möchte. Entscheidet selbst, welche Variante euch besser gefällt. Vielleicht findet ihr noch bessere und elegantere Möglichkeiten, um Markdown-Dateien im Terminal anzuzeigen. Wer Markdown-Dateien des Öfteren im Terminal anzeigen möchte, kann einen der beiden Befehle in seine Shell-Konfiguration als Alias einbinden, z. B.:

alias viewmd='python -m rich.markdown $1'

Die ursprüngliche Frage aus den Kommentaren soll nicht unbeantwortet bleiben:

Gibt es Lösungen, um grafisch innerhalb von Dateiverwaltern, wie zum Beispiel Thunar, Markdown-Dateien als Vorschau zu erhalten?

Wer darauf antworten möchte, kann gerne einen Artikel an kontakt@gnulinux.ch schicken.

Tags

Markdown, Pandoc, Lynx, Rich, Terminal, Renderer

Chris
Geschrieben von Chris am 29. September 2022 um 09:40

Es gibt auch einen cat Clone der MD anzeigt: https://github.com/sharkdp/bat

Ralf
Geschrieben von Ralf am 29. September 2022 um 09:42

Hallo,

es gibt ein kleines Tool namens glow, --> https://github.com/charmbracelet/glow ist in Go geschrieben und tut genau das --> Markdown im Terminal anzeigen. Hier noch ein Hinweis aus Linuxnews --> https://linuxnews.de/2021/08/glow-der-pfiffige-cli-markdown-viewer/

Gruß Ralf

andhet
Geschrieben von andhet am 29. September 2022 um 17:52

Eine weitere Alternative wäre noch mdcat -> https://codeberg.org/flausch/mdcat.

tux.
Geschrieben von tux. am 29. September 2022 um 10:14

Da ich auf die Ursprungsfrage hier ;-) nicht antworten soll, gehe ich mal auf einen anderen Aspekt ein: Das Standardausgabeformat des (sehr guten) Tools Pandoc ist nicht HTML bzw. nicht unbedingt. (Es existiert auf dem System des Artikelautors wahrscheinlich eine Datei mit Standardeinstellungen.)

Wer sicher gehen will: pandoc -t html.

(Grundsätzlich zieht Pandoc via Haskell eine Menge Abhängigkeiten mit sich, aber das tut Python auch - und Haskell ist dabei wesentlich performanter.)

tuxfanmatze
Geschrieben von tuxfanmatze am 29. September 2022 um 16:21

Mit glow kann man auch Markdown schreiben, sogar verschlüsselt.

tuxfanmatze
Geschrieben von tuxfanmatze am 4. Oktober 2022 um 02:28

Korrektur: glow kann nicht Markdown schreiben, sondern nur verschlüsselt speichern. Da hat mich das animierte glow Beispielbild etwas getäuscht, sorry.

DxU
Geschrieben von DxU am 9. Oktober 2022 um 14:39

Hallo tuxfanmatze,

ich kannte glow bisher nicht und habs mal installiert. Wie ich damit verschlüsseln oder schreiben soll verstehe ich aber nicht so ganz. Für mich ist das eher sowas wie less nur eben mit mehr Möglichkeiten. Gruß DxU

Norman
Geschrieben von Norman am 29. September 2022 um 19:26

Bei „alias“ werden weitere Eingaben bei der Verwendung hinten angehangen. Also reicht

alias viewmd='python -m rich.markdown'

aus. Wozu dann noch

$1

am Ende?

Oelauge
Geschrieben von Oelauge am 30. September 2022 um 21:36

Hmm, das ist nicht schlecht, nur vom Komfortfaktor her Abzug in der B-Note. Dabei geht es mir nicht um die Darstellungsvarianten, sondern wie ich mich in meiner Ordnerstruktur mit den einzelnen Markdown-Dateien bewege.

In dem Artikel "Serie - Strukturierte Notizen:Bordmittel" wird ja als Beispiel das Programm "tree" eingesetzt. Schöner wäre, wenn ich mich mit Hilfe der Cursor-Tasten in einer Baumstruktur (analog zur tree-Darstellung) bewegen kann, um schlussendlich per Enter-Taste eine Markdown-Datei auszuwählen, damit sie entsprechend mit pandoc/lynx, bat, glow oder mdcat angezeigt wird.

Michael
Geschrieben von Michael am 1. Oktober 2022 um 17:23

Ich möchte an dieser Stelle auch noch mdless in den Ring werfen. https://github.com/ttscoff/mdless

Ich weiß nicht ob das was besser oder anders kann. Aber es wird klar, dass die Vielfalt an Tools für Makrdown im Terminal groß ist. Selbst emacs kennt einen markdown-mode sodass man sich direkt im Editor eine Vorschau generieren lassen kann. Quasi noch während dem schreiben.

Hans
Geschrieben von Hans am 6. Oktober 2022 um 10:26

Soll in den Screenshots die letzte Zeile so sein? -> WIE

Jonny
Geschrieben von Jonny am 29. Oktober 2023 um 10:06

Der Vollständigkeit halber sei noch Frogmouth erwähnt. Ein Markdown viewer, basierend auf dem TUI Framework Textualize (https://www.textualize.io).

https://github.com/Textualize/frogmouth