Nb ermöglicht das Anlegen von Notizen und Lesezeichen auf der Kommandozeile auf jede nur denkbare Art und Weise.
In unserer schnelllebigen Zeit spielen Notizen als kurzfristige Gedankenstütze oder zur längeren Aufbewahrung eine zunehmend wichtige Rolle. Mehrmals täglich notiert der Autor beispielsweise Stichworte zur Artikelplanung, die er nicht vergessen möchte. Oft lassen sich solche Notizen – ob Worte, URLs, Bilder oder anderes – gleich an der Stelle ablegen, wo sie kontextbezogen Sinn ergeben. Ebenso oft existiert eine solche Stelle aber noch nicht oder lässt sich nicht erreichen.
Digitale Notizblöcke
Hier kommen Notiz-Apps ins Spiel, die die Inhalte bis zu ihrer weiteren Zuordnung oder Verwertung aufnehmen. Diese Software-Gattung gibt es in vielerlei Ausführungen, von Exemplaren mit GUI und sehr vielen Optionen bis hin zu spartanischen Notizzetteln ohne viel Struktur. Als Platzhirsche gelten aktuell das kostenpflichtige Evernote sowie Microsofts kostenfreies OneNote, die es aber beide nicht für Linux gibt.
Als Alternativen für Linux kommen Joplin, Standard Notes oder das von den WordPress-Machern stammende Simplenote infrage. Keines dieser Programme kommt aber auch nur annähernd an den ausufernden Funktionsumfang von Evernote heran.
Wir blicken heute aber an das andere Ende des Spektrums, auf die Kommandozeile. Dass eine Anwendung auch hier trotz einfacher Struktur eine umfassende Funktionsvielfalt bieten kann, beweist das zunächst unscheinbare Nb. Der Name steht vermutlich als Abkürzung für Notebook, also Notizblock.
CLI-Notizen
Auf der Github-Seite von Nb [1] heißt es, das Tool sei “eine Anwendung für die Kommandozeile, mit der man Notizen macht, Lesezeichen setzt, archiviert und eine Wissensdatenbank erstellt”. Das so unprätentiös beschriebene Werkzeug bietet Anwendern, die häufig im Terminal arbeiten oder stets eine Konsole offen haben, wesentlich mehr, als die Beschreibung auf den ersten Blick vermuten lässt. Nb benötigt lediglich die Bash und arbeitet auch mit Shells wie Zsh, Fish und vielen anderen zusammen, die als primäre Login-Shell laufen.
Das Shellskript Nb besteht aus unglaublichen 11 401 Zeilen, die den Klebstoff für den Aufruf vieler CLI-Befehle bilden. Es basiert auf der Bash-Skript-Sammlung Bash-Boilerplate [2] desselben Entwicklers. Der Umfang des Skripts lässt sowohl einiges erwarten als auch einiges befürchten.
Die Erwartungen erfüllt Nb auch im positiven Sinn. Es bietet unter anderem das Speichern von Klartextdaten, auf Wunsch auch verschlüsselt. Filtern und Suchen unterstützt es ebenso wie eine Git-gestützte Versionierung und Synchronisation. Per Pandoc lassen sich viele Dateiformate ineinander konvertieren [3]. Zudem verwaltet Nb auch Lesezeichen.
Das Tool erlaubt das Erstellen von Notizen in vielen textbasierten Formaten, wie etwa Markdown, Emacs Org, LaTeX und einfachem Text. Notizen im- und exportiert es in vielen Dokumentenformaten und erstellt auf Wunsch private, passwortgeschützte verschlüsselte Notizen und Lesezeichen. Zum Erstellen oder Editieren von Notizen unterstützt Nb neben Vim, Nano, Emacs, Sublime Text und MacDown auch fast jeden anderen Texteditor Ihrer Wahl. Es funktioniert in jeder Standard-Linux- oder Unix-Umgebung sowie in MacOS und im Windows Subsystem für Linux (WSL).
Optionale Abhängigkeiten erweitern bei Bedarf den Funktionsumfang, Nb funktioniert aber auch ohne sie [4]. Falls Sie mit Git-Integration arbeiten möchten, sollten Sie zumindest Tig und Bat installieren, die Sie in den Repositories vieler Distributionen finden. Pandoc hilft beim Konvertieren in unterschiedliche Formate.
Um Änderungen automatisch aufzuzeichnen und Notizbücher mit entfernten Repositories zu synchronisieren, setzt Nb im Hintergrund auf Git. Die Software lässt sich aber auch so konfigurieren, dass sie die Inhalte mit Cloud-Speichern wie Dropbox synchronisiert.
Erweiterungen
Nb unterstützt sowohl lokale als auch globale Notebooks, die Sie mit Themes farblich an Ihre Vorstellungen anpassen, auch um bestimmte Elemente der Darstellung hervorzuheben. Das Tool bietet zudem eine Schnittstelle für Plugins, die zwei Arten von Erweiterungen unterstützt. Die beiden Varianten unterscheiden sich durch die Dateiendung: nb.plugins definiert neue Befehle und Funktionen, nb.theme erstellt neue Farbthemen.
Plugins installieren Sie durch Angabe eines Pfads oder einer URL mit dem Befehl nb plugins install und verwalten sie mit dem Kommando nb plugins. Die Erweiterungen liegen im Verzeichnis ~/.nb/plugins. Einige kommen bereits vordefiniert [5], die Webseite erläutert aber auch ausführlich das Erstellen eigener Plugins [6].
Nb integriert zudem ein leistungsstarkes textbasiertes Lesezeichensystem. Es umfasst Funktionen wie eine lokale Volltextsuche in den im Cache gespeicherten Seiteninhalten und bietet dabei Unterstützung für reguläre Ausdrücke, Verschlagwortung und Filter. Defekte Links lassen sich per Wayback Machine im Internet Archive suchen. Ist auf dem Rechner Wmi installiert, lassen sich entsprechende Links wahlweise im Terminal oder im grafischen Webbrowser öffnen.
Installation
Nb lässt sich auf verschiedene Arten einrichten. Die wenigste Tipparbeit fällt beim Paketmanager Npm von Node.js an. Auch per Wget oder Curl lässt sich die Software auf die Platte holen. Die entsprechenden Befehle zeigt Listing 1. Setzen Sie Arch Linux ein, finden Sie Nb auch im AUR. Möchten Sie das Tool selbst kompilieren, laden Sie den Quellcode von Github herunter und führen im Verzeichnis sudo make install aus.
Listing 1
Nb installieren
### via Npm $ npm install -g nb.sh ### systemweit $ sudo wget https://raw.github.com/xwmx/nb/master/nb -O /usr/local/bin/nb && sudo chmod +x /usr/local/bin/nb && sudo nb completions install $ sudo curl -L https://raw.github.com/xwmx/nb/master/nb -o /usr/local/bin/nb && sudo chmod +x /usr/local/bin/nb && sudo nb completions install ### mit User-Rechten nach ~/bin/ $ wget https://raw.github.com/xwmx/nb/master/nb -O ~/bin/nb && chmod +x ~/bin/nb $ curl -L https://raw.github.com/xwmx/nb/master/nb -o ~/bin/nb && chmod +x ~/bin/nb
Um die Autovervollständigung für Nb und die Installation von zusätzlichen Abhängigkeiten auf einen Schlag zu erledigen, schicken Sie der jeweiligen Installation ein sudo nb env install hinterher. Im Test funktionierte das unter Debian allerdings nicht. Hier gehen Sie so vor wie in Listing 2 gezeigt.
Listing 2
Auto-Completion (Debian)
$ mkdir -p /etc/bash_completion.d $ sudo curl -L https://raw.githubusercontent.com/xwmx/nb/master/etc/nb-completion.bash -o etc/bash_completion.d/nb
Je nach Installationsmethode aktualisieren Sie Nb entweder über den jeweiligen Paketmanager wie Npm und Homebrew oder den Befehl nb update.
Initialisierung
Nb bietet über den Befehl nb shell auch eine interaktive Shell an (Abbildung 1). Starten Sie das Skript erstmals im Terminal mit nb, legt es ein erstes globales Notebook namens home in ~/.nb/ an. Global bedeutet in diesem Zusammenhang, dass Sie das Notizbuch von überall aus erreichen, egal, in welchem Verzeichnis Sie sich befinden. Sagt Ihnen das Basisverzeichnis nicht zu, legen Sie mit nb set nb_dir ein anderes, bereits bestehendes Verzeichnis fest.

Abbildung 1: Für längere Sitzungen öffnen Sie eine interaktive Shell, was das wiederholte Eintippen des Kommandos nb erspart.
Alternativ dazu arbeitet Nb auch mit lokalen Notebooks, die sich irgendwo in Verzeichnissen außerhalb des definierten NB_DIR befinden. Jedes Verzeichnis eignet sich als Ablage für ein lokales Notizbuch. Es handelt sich dabei um einen Ordner, der als Git-Repository initialisiert wurde und eine Nb-Index-Datei enthält. Bei Bedarf lassen sich solche lokalen Notebooks später in globale umwandeln.
Das Initialisieren eines Ordners als lokales Notizbuch erweist sich als eine sehr einfache Möglichkeit, jedem Ordner mit Dokumenten und anderen Dateien eine strukturierte Git-Versionierung hinzuzufügen. Um ein Verzeichnis als lokales Notebook zu initialisieren, rufen Sie aus ihm heraus den Befehl nb notebooks init auf.
Erste Notiz
Mit dem Befehl nb add (Abbildung 2) legen Sie eine unbenannte neue Notiz (Listing 3, Zeile 1) an oder vergeben gleich einen Namen dafür (Zeile 2). Ebenso funktioniert das Ablegen einer verschlüsselten Notiz (Zeile 3). Das Tool fragt dann zunächst nach dem zu nutzenden Passwort, bevor es den Editor öffnet. Für jede Notiz dürfen Sie ein eigenes Passwort vergeben. Kurze Notizen erstellen Sie direkt im Terminal (Abbildung 3), indem Sie den Text in Anführungszeichen setzen (Zeile 4). Was nb add sonst noch alles ermöglicht, verrät Ihnen der Aufruf nb help add.
Listing 3
Notizen anlegen
$ nb add $ nb add ErsteNotiz $ nb add --title "Geheim" --encrypt $ nb add "Dies ist eine Kurznotiz"
Der besseren Übersicht zuliebe strukturieren Sie Ihre gesammelten Notizen idealerweise in Unterordnern. Eine Verzeichnisstruktur unterhalb des Standardordners ~./nb/home/ erstellen Sie beispielsweise mit nb add folder Ordner1/Ordner2.
Nb bringt zur Arbeitserleichterung bereits eine Menge Aliase mit, wie etwa a für add, e für edit, d für delete und s für show. Um Notizen mit dem Nb-Befehl zu referenzieren, stehen Ihnen ID, Titel oder Dateiname zur Verfügung.
Einstellungssache
Als Standardformat verwendet Nb Markdown (md). Das ändern Sie mit nb set default_extension (Abbildung 4). Möchten Sie verschiedene Formate verwenden, legen Sie das jeweilige Format beim Erstellen der Notiz fest, etwa mit nb add Beispiel.md. Ihren Lieblings-Editor legen Sie mit nb set editor fest (Abbildung 5).

Abbildung 4: Als Standard verwendet Nb Markdown (*.md). Es genügt jedoch, eine andere Endung zu verwenden, um ein anderes Format zu präferieren.

Abbildung 5: Die Wahl des Editors ist unter Linux Glaubenssache. Ob Emacs, Vi, Vim, Nano oder Ihr Lieblingseditor: Nb macht das Umstellen leicht.
Innerhalb von Notizen lassen sich Hashtags wie etwa #tag1 vergeben und später mittels nb search "#tag1" wiederfinden. Ein Beispiel, wie Nb den Befehlssatz der Shell einbindet, zeigt nb ls, das den List-Befehl verwendet (Abbildung 6).
Möchten Sie Notizen vom Terminal aus editieren, hilft vorher ein nb ls: Es zeigt die IDs der Notizen an, anhand derer Sie per nb edit ID schnell zur gewünschten Notiz gelangen. Das Löschen von Notizen klappt mit nb delete.
Um die verschiedenen mit Git verwalteten Versionen aller oder einzelner Notizen zu sehen, nutzen Sie nb history. Um hier eine gute Übersicht zu erhalten, sollten Sie das kleine Tool Tig installieren (Abbildung 7).

Abbildung 7: Den Verlauf einer Notiz oder eines Notizbuchs zeigt der Befehl nb history. Eine übersichtliche Darstellung erzielen Sie mit dem Tool Tig.
Remote synchronisiert
Nb erlaubt es, einzelne oder alle Notizen mit einem entfernten privaten oder öffentlichen Git-Repository zu synchronisieren. Alternativ gleichen Sie Ihre Aufzeichnungen aber auch mit Dropbox, Drive, Box, Syncthing oder einem anderen Speicherportal ab, indem Sie das Nb-Verzeichnis mit nb set nb_dir Pfad ändern. Die Git-Synchronisierung funktioniert auf Wunsch weiterhin gleichzeitig.
Lesezeichen
Nb dient aber nicht nur als mächtiges Werkzeug für Notizen, sondern auch zum Verwalten von Lesezeichen, mit dem Sie Ihre Online-Referenzen anzeigen, durchsuchen und verwalten. Um ein Lesezeichen zu erstellen, verwenden Sie nb URL (Abbildung 8).

Abbildung 8: Lesezeichen legen Sie durch die Angabe der entsprechenden URL an. Nb extrahiert dabei Informationen über die jeweilige Webseite.
Fast alle Befehle, die Sie auf Notizen anwenden, funktionieren auch für Lesezeichen. Die öffnet die Software mit nb open URL-ID aber nicht im Editor, sondern im Standard-Webbrowser des Systems. Nutzen Sie einen Textbrowser wie W3m oder Lynx, öffnen Sie Lesezeichen im Terminal mit nb open Bookmark-ID peek (Abbildung 9).
Fazit
Wer gern auf der Konsole arbeitet, den begeistert Nb mit seinen vielfältigen Möglichkeiten. Der Einstieg gestaltet sich leicht, doch es dauert eine Weile, bis sich die gesamte Funktionsvielfalt des Tools erschließt. Die vorbildliche Dokumentation auf Github hilft beim Zurechtfinden.
Der Autor von Nb, der bereits Software in verschiedensten Sprachen verfasste, erläuterte an anderer Stelle, Nb sei bewusst als Bash-Skript verfasst, um als Fingerübung die Möglichkeiten der Bash auszuleuchten – was in diesem Fall ohne Zweifel gelang. (tle)
Infos
-
Bash-Boilerplate: https://github.com/xwmx/bash-boilerplate
-
Pandoc: https://pandoc.org
-
Optionale Abhängigkeiten: https://github.com/xwmx/nb#optional
-
Nb-Plugins: https://github.com/xwmx/nb/tree/master/plugins
-
Nb-Plugins erstellen: https://github.com/xwmx/nb#creating-plugins









