nano – bash Tutorial Teil 8

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.

nano bash Logo CC-BY-NC 4.0 Dr. Dirk Colbry, Michigan State University
Dr. Dirk Colbry, Michigan State
Gnu-bash-logoCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
bash Logo, CC-BY-NC 4.0 Dr. Dirk Colbry, Michigan State University
1Einführung
2Der bash Prompt
3key bindings
4Der Startvorgang
5Environment Variablen
6builtin commands
7Arbeiten mit Dateien
8nano
9bash Scripting
10Variablen
11Verzweigungen (if)
12Schleifen
13Kommandozeilenparameter
14exit Codes bash Tutorial Teil 14
15von der Idee zum Script
16grep
17Piping und Redirection
18tee

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.

nano Version 7.2
Olli Graf - raspithek.de
versionCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
nano Version 7.2

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.

geöffnete test.txt im Editor
Olli Graf - raspithek.de
edit-test-txtCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
geöffnete test.txt im Editor

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.

Editierter Text
Olli Graf - raspithek.de
edited-textCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Editierter Text

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.

Frage nach dem Dateinamen zum Speichern
Olli Graf - raspithek.de
prepare-saveCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Frage nach dem Dateinamen zum Speichern

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.

Anzeige der Änderungen in der Originaldatei
Olli Graf - raspithek.de
savedCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Anzeige der Änderungen in der Originaldatei

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.

eingefügt Zeile 2 und Zeile 3
Olli Graf - raspithek.de
insert-line-2-3Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
eingefügt Zeile 2 und Zeile 3

Wenn du jetzt speicherst und nano beendest, hat dir der Editor eine weitere Datei im Filesystem angelegt.

Die Datei test.txt~ wurde als Backup angelegt.
Olli Graf - raspithek.de
diff-with-backupCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Die Datei test.txt~ wurde als Backup 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.

Zeile 4 ist markiert
Olli Graf - raspithek.de
line-4-markedCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Zeile 4 ist markiert

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.

Olli Graf - raspithek.de
text-copyCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Der markierte Text wurde kopiert.

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.

Warnhinweis bei nicht beschreibbarer Datei
Olli Graf - raspithek.de
warning-not-writableCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Warnhinweis bei nicht beschreibbarer Datei

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)

Das Menü beim Ersetzen
Olli Graf - raspithek.de
replaceCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Das Menü beim Ersetzen

Drücke A für alle Fundstellen ersetzen und scroll ein wenig runter, um das Ergebnis zu sehen.

Das Ergebnis bei Alles ersetzen
Olli Graf - raspithek.de
replacedCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Das Ergebnis bei Alles ersetzen

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.

Die Ausgabe von ls -al im Text
Olli Graf - raspithek.de
command-executedCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Die Ausgabe von ls -al im Text

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.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner