Serie - Strukturierte Notizen: Bordmittel

  Ralf Hersel   Lesezeit: 6 Minuten  🗪 8 Kommentare

Auch mit Bordmitteln lassen sich Notizen organisieren, ohne auf weitere Anwendungen angewiesen zu sein.

serie - strukturierte notizen: bordmittel

In der Serie über Note-taking Apps haben wir bisher Schwergewichte (Trilium), altbekannte Lösungen (Emacs) und populäre Anwendungen (Logseq) gesehen. Was noch fehlt, ist eine Minimal-Lösung, die ganz ohne eine Anwendung auskommt. Das GNU/Linux-Terminal bietet so viel, warum nicht auch eine Lösung, um Notizen zu organisieren?

Ich beschäftige mich schon seit vielen Jahren mit diesem Anwendungsfall, weil er für viele Menschen relevant ist. Der älteste Eintrag in meinem ZIM stammt aus dem Jahr 2015. Ich kam aber beschwören, dass ich Notizen in strukturierter Form mindestens seit 2009 erfasse. Das war das Jahr, in dem ich die Anwendung UniTree geschrieben habe. 2012 habe ich die vereinfachte Version namens Nota erstellt. Beide Apps habe ich über viele Jahre für diesen Anwendungsfall eingesetzt. Mein ZIM-Eintrag von 2015 trägt die Überschrift: Notizen im CLI.

Dieser Eintrag enthält eine Anleitung in Form von einfachen Kommandozeilenbefehlen, um Kategorien und Notizen zu erstellen, diese zu bearbeiten und um danach zu suchen, sowie eine Baumansicht aller Artikel anzuzeigen. Für die aktuelle Serie habe ich die Anleitung etwas aufgebohrt, um sie benutzerfreundlicher zu machen. Dennoch kommt die Lösung ohne zusätzliche Software aus.

Die Vorteiler dieser "Anwendung" sind:

  • Speicherbedarf: ein paar 100 Byte (ca. ein Millionstel einer Electron-App)
  • Performance: unschlagbar schnell; startet in 10 Millisekunden
  • Installation: gibt es nicht; kopiere einfach ein paar Zeilen in deine Shell-Konfiguration
  • Benutzerfreundlichkeit: reduziert auf das Nötigste; einfach zu erlernen
  • Editor: ihr habt die freie Wahl
  • Synchronisierung: ihr habt die freie Wahl

Und so geht es: Kopiert folgende Zeilen in eure Shell-Konfigurationsdatei (.bashrc, .zshrc, etc.). Die Alias-Namen könnt ihr nach eigenem Gusto anpassen. Ich verwende 'n' für 'Notiz' und den zweiten Buchstaben für die Funktion.

nn() { mkdir $1 && cd $1; echo 'Start creating notes. Type nh to get help.' }
nh() { echo 'Help: here are the commands:
    nn NotesDirectory   - create a new subdirectory for your notes
    nh                  - show help information
    nd Directory        - create new directory
    n+ NoteName         - create new note: filename
    n- Path/NoteName    - delete note: dir/filename
    ns NoteName Search  - search note file
    nf Text             - fulltext search in note files
    nb                  - one level up
    nv Path/NoteName    - view note content
    ne Path/NoteName    - edit note content
    '}
nt() { tree }
nc() { mkdir $1 && cd $1 }
n+() { $EDITOR $1 }
n-() { rm $1 }
ns() { grep -i $1 $2 }
nf() { grep -r -i $1 * }
nb() { cd .. }
nv() { cat $1 }
ne() { $EDITOR $1 }

Die Sache beginnt, indem ihr ein Terminal öffnet und euch im Home-Verzeichnis befindet. Falls ihr die Notizen in einem Unterverzeichnis erstellen möchtet, navigiert mit cd in ein passendes Verzeichnis, z. B. Dokumente. Dann führt ihr den Befehl nn [Name] aus, um ein Verzeichnis für die Notizen zu erstellen und, um in das neue Verzeichnis zu springen.

nh zeigt euch alle möglichen Befehle an; das ist die Hilfe. nt zeigt einen Baum aller Notizen an (dafür muss der Shell-Befehl tree installiert sein). Eine neue Notiz erzeugt man mit dem Befehl n+ gefolgt vom Namen der Notiz. Beispiel: n+ Apfel erzeugt im aktuellen Verzeichnis die Notiz Apfel und den Editor um Text einzugeben. Falls ihr den Editor ändern möchtet, könnt ihr in eurer Shell-Konfiguration (.bashrc, .zshrc, usw.) zum Beispiel den Befehl export EDITOR=micro eingeben, um Micro als Standard-Editor einzustellen. Ansonsten wird wahrscheinlich Nano als Standard-Editor verwendet (oder Emacs, Vi, Vim, Ed für unsere Hardcore-Leser).

Um eine Notiz zu löschen, verwendet ihr n- Notizname oder n- Pfad/Notizname. Achtung, es wird nicht nach einer Löschbestätigung gefragt. Der Befehl ns Suche Pfad/Datei sucht in der angegebenen Datei nach dem Text Suche. Mit nf Suche wird der gesamte Baum nach dem Suchbegriff durchforstet, und zwar ab eurer aktuellen Position im Baum. Mittels nb navigiert man ein Verzeichnis nach oben und mit nv Pfad/Datei wird der Inhalt der Datei angezeigt bzw. mit ne Pfad/Datei der Editor für die Datei geöffnet.

Wie ihr seht, ist diese Note-taking Anwendung völlig primitiv und besteht lediglich aus ein paar Aliasen (um korrekt zu sein, es sind Shell-Skript Funktionen). Für manch einen mag diese Art Notizen zu erfassen und zu suchen völlig ausreichend sein. Nun noch kurz zu den Kriterien für die Artikel-Serie:

  • Struktur: Hierarchie (man kann auch Hashtags in die Notizen schreiben und danach suchen)
  • Editor: Funktionalität hängt stark vom Editor ab. Wer alles will, nimmt Emacs :)
  • Suchfunktion: Suche in Einzelnotiz und über Baumsegmente. Ergebnis ohne Highlighting.
  • Referenzierung (Verlinkung): nicht vorhanden, bzw. hängt von den Fähigkeiten des Editors ab.
  • Import/Export: Alles, was das Dateisystem und Zusatztools hergeben
  • Usability und Funktionalität: Minimalistisch
  • Multi-Plattform: Überall, wo ein Linux-Terminal läuft
  • Synchronisation: Nicht eingebaut. Kann über Sync-Tools erreicht werden, z. B. Nextcloud

Tags

Serie, Notizen, Hierachie, Terminal, Alias

Tobi
Geschrieben von Tobi am 27. September 2022 um 13:01

Interessanter Ansatz, werde ich mir mal genauer anschauen. Was ist denn der Unterschied zwischen nn() und nc()?

Ralf Hersel
Geschrieben von Ralf Hersel am 27. September 2022 um 17:34

Kaum einer. nn ist für den Anfang gedacht, erstellt ein Verzeichnis, geht dort hinein und zeigt Hilfe-Infos an. nc ist für den laufenden Betrieb, um einen neuen Ast im Baum zu erstellen (Verzeichnis).

Inge
Geschrieben von Inge am 28. September 2022 um 08:31

NN hat ein echo...

Oelauge
Geschrieben von Oelauge am 27. September 2022 um 13:05

Gibt es Lösungen, um grafisch innerhalb von Dateiverwaltern wie zum Beispiel Thunar, Markdown-Dateien als Vorschau zu erhalten? Am besten aufbereitet oder in Rohfassung.

Ralf Hersel
Geschrieben von Ralf Hersel am 27. September 2022 um 17:56

Das ist eine gute Frage. Werde ich mir mal überlegen, bzw. danach suchen. Vielleicht so: pandoc text.md | lynx -stdin

Oelauge
Geschrieben von Oelauge am 28. September 2022 um 07:32

Da kenne ich mich zu wenig aus, also einen Trigger zu haben, wenn eine Markdown-Datei selektiert wird, das Pandoc im Hintergrund startet und das Ergebnis direkt im Fenster des Datei-Managers anzeigt. Also ein identisches Verhalten zeigt, als wenn ich eine Bildvorschau erhalte. Wenn das Klappt, kann ich auch grafisch mit Board-Mitteln meine Zettelverwaltung vornehmen.

kamome
Geschrieben von kamome am 28. September 2022 um 23:21

Wenn Rohfassung und eine Vorschau wirklich reicht: In Dolphin per [F11] die „Informationen“ anzeigen lassen – zeigt eine kleine Vorschau an (vielleicht zu klein/wenig?).

kamome
Geschrieben von kamome am 28. September 2022 um 23:27

Ziemlich cool!

Grep kann doch auch Farbe (mit --color (oder --color=auto)).

Schneller geht’s mit ripgrep (rg).