Bei der Arbeit in der bash benötigst du auch einen Texteditor. nano ist relativ einfach zu verstehen. Bei diesem Exkurs geht es um dessen Grundlagen.
Im letzten Teil haben wir mit Dateien auf Ebene des Filesystems gearbeitet, das nutzt dir aber alles nichts, wenn du Dateien nicht editieren kannst.
nano installieren
Schau dir zunächst mal an, welche Version von nano bei dir installiert ist.
nano --version
Sollte nano auf deinem Raspberry Pi nicht installiert sein, kannst du das mit
sudo apt install nano
nachholen.
Datei öffnen
Ich benutze hier die Testdateien aus dem Vorgängerkapitel weiter.
Wir haben im test Verzeichnis einen Link von test.txt auf test2/testneu.txt angelegt. Du kannst jetzt den Inhalt der Datei bearbeiten. Solltest du den Namen einer noch nicht existierenden Datei übergeben, wird automatisch eine neue erzeugt.
nano test.txt
Der Editor bekommt gar nicht mit, dass es sich um einen Link handelt und zeigt dir den Inhalt von test2/testneu.txt an.
Datei editieren und speichern
Am unteren Rand siehst du die Menüleiste, die dir ständig eine Hilfestellung bietet, welche Taste, welches Kommando auslöst. ^
steht dabei für die CTRL-Taste bei Tastaturen mit deutschsprachigem Tastaturlayout fälschlicherweise mit STRG beschriftet. Mit CTRL-G kannst du eine ausführlichere Hilfe aufrufen. Tippe jetzt einfach etwas Text. Er wird an der Cursorposition in den bestehenden Text eingefügt. Direkt nach dem Start wird das am Dateianfang sein.
Um deine Änderungen zu speichern drückst du CTRL-O. Dies ist etwas verwirrend, dient diese Tastenkombination üblicherweise dazu, eine Datei zu öffnen. nano wird dich jetzt fragen, unter welchen Dateinamen deine Änderungen gespeichert werden sollen.
Wir lassen den Namen erstmal so, drück einfach Return um zu Speichern. Mit CTRL-X kannst du den Editor beenden und kommst zurück zum Prompt. Wenn du jetzt dir die Datei unter test2 anzeigen lässt,
cat test2/testneu.txt
wirst du sehen, dass, dank des Links, deine Änderungen genau da angekommen sind, wo test.txt hinzeigt.
Dies sollte auch den Mechanismus von Links verdeutlichen.
Backup erzeugen
Du kannst nano anweisen, beim Speichern ein Backup der Datei zu erzeugen.
nano -B test.txt
Füge jetzt am Ende der Datei zwei neue Zeilen „Zeile 2“ und „Zeile 3“ ein.
Wenn du jetzt speicherst und nano beendest, hat dir der Editor eine weitere Datei im Filesystem angelegt.
Die Backupdatei trägt den Namen test.txt~
und enthält den Zustand beim Start des Editors. Beachte, dass die Backupdatei den Namen des Links trägt, nicht der Originaldatei.
Zeilen löschen
Positioniere den Cursor auf „Zeile2“ und drücke CTRL-K. Die gesamte Zeile wird gelöscht und die Zeile danach um eins nach oben gezogen. Die Zeile wurde in den Zwischenpuffer verschoben und kann mit CTRL-U an der Cursorposition wieder eingefügt werden.
Text markieren
Am Ende der Datei fügst du noch eine „Zeile 4“ an. Dann bewegst du den Cursor auf den Beginn dieser Zeile und drückst ALT-a. Dies setzt die anfängliche Markierungsposition. Bewege jetzt den Cursor nah rechts bis zum Zeilenende. Du bemerkst, dass der markierte Text dabei invers unterlegt dargestellt wird.
Text kopieren oder ausschneiden
Zum Ausschneiden des markierten Text benutzt du wie oben CTRL-K. Kopieren kannst du den Text mit ALT-6
Kopiere den markierten Text und setze den Cursor jetzt ans Ende von „Zeile 2“. Jetzt kannst du mit CTRL-U den markierten Text hinter „Zeile 2“ einfügen. In der vierten Zeile bleibt er erhalten.
Ohne Markierung beziehen sich CTRL-K und ALT-6 immer auf die gesamte aktuelle Zeile.
Alle Tastaturkommandos findest du in diesem Cheat-Sheet.
Suchen und Ersetzen
Für diesen Abschnitt benötigen wir eine etwas umfangreichere Datei. Du darfst dies auf keinen Fall als root
machen!
nano -B /etc/sysctl.conf
Da diese Datei nur vom Superuser verändert werden darf, blendet nano einen roten Warnhinweis ein.
Wir suchen jetzt nach dem String ipv4
. Drücke CTRL-W und gib ipv4 ein. Der Cursor springt zur ersten Stelle, an der der Suchstring vorkommt. Um zu den dahinterliegenden Stellen zu spring drückst du ALT-W.
Um einen String zu ersetzen, drückst du CTRL-\. Das ist ein wenig kniffelig, da du drei Tasten drei gleichzeitig drücken musst (CTRL, AltGR und ß. Mit amerikanischen Tastaturlayout wäre das einfacher.
nano fragt dich jetzt nach dem zu ersetzenden String (Suchstring). Gib hier „ipv6“ ein und drücke Return.
Jetzt gibst du den String ein durch den der Suchstring ersetzt werden. Und drückst wieder Return.
Der Editor springt jetzt zum ersten Fundort des Suchstrings und fragt dich, ob du ihn ersetzen willst (J=Ja,N=Nein oder A für alle automatisch, mit CTRL-C kannst du den Vorgang abbrechen)
Drücke A für alle Fundstellen ersetzen und scroll ein wenig runter, um das Ergebnis zu sehen.
Beende nano jetzt, aber speichere die Datei nicht!
Kommando ausführen
Es kommt bei mir häufig vor, dass während der Arbeit im Editor ein Kommando in der bash ausführen muss. Dazu musst du nano nicht beenden. Öffne wieder die test.txt
und drücke CTRL-T und gib als Kommando ls -al
ein. nano führt das Kommando jetzt aus und fügt dessen Ausgabe in deinen Text ein.
Abschluss
Du kennst jetzt die Grundlagen des Texteditings in der bash. nano kann noch viel mehr, aber mit diesem Wissen können wir jetzt ins bash Scripting einsteigen.