Serie - Strukturierte Notizen: Bordmittel

Di, 27. September 2022, Ralf Hersel

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