2.5.3 Text- und Dateibearbeitung
Übersicht über die Befehle auf dieser Seite (in fett bedeutet prüfungsrelevant):
| Befehl | Beispiel | Beschreibung | 
|---|---|---|
| nano | nano datei.txt | Öffnet die Datei datei.txt im Nano-Texteditor | 
| joe | joe datei.txt | Öffnet die Datei datei.txt im Joe-Texteditor | 
| touch | touch datei.txt | Erstellt eine leere Datei datei.txt | 
| cat | cat datei.txt | Zeigt den Inhalt der Datei datei.txt | 
| more | more datei.txt | Zeigt den Inhalt der Datei datei.txt seitenweise | 
| head | head datei.txt | Zeigt die ersten 10 Zeilen der Datei datei.txt an | 
| tail | tail datei.txt | Zeigt die letzten 10 Zeilen der Datei datei.txt an | 
| wc | wc -l datei.txt | Zählt die Zeilen in datei.txt (-l steht für "line") | 
| cut | cut -d':' -f1 /etc/passwd | Zeigt das erste Feld jeder Zeile in der Datei /etc/passwd (genaue Beschreibung s.u.). | 
| paste | paste datei1.txt datei2.txt | Verbindet Zeilen von Dateien | 
| awk | awk '{print $1}' datei.txt | Druckt das erste Feld jeder Zeile aus datei.txt | 
| sed | sed 's/alt/neu/g' datei.txt | Ersetzt alle Vorkommen von "alt" durch "neu" in datei.txt | 
| diff | diff datei1.txt datei2.txt | Vergleicht zwei Dateien und zeigt die Unterschiede an | 
| sort | sort datei.txt | Sortiert die Zeilen der Datei datei.txt | 
| uniq | uniq datei.txt | Entfernt doppelte Zeilen in datei.txt | 
Erklärung zu cut -d':' -f1 /etc/passwd
 cut schneidet Felder zeilenweise aus einer Datei aus. Hier die Erklärung der Parameter
- -d gibt das Trennzeichen an (hier ':'). In der Datei /etc/passwd wird der ":" als Trennzeichen genutzt.
- -f gibt das Feld an (hier 1). Es wird also je Zeile das erste Trennzeichen gesucht und das Feld davor ausgegeben.
Die Programme "nano" und "joe"
Um Textdateien direkt auf dem Server zu bearbeiten, können wir auf verschiedene Texteditoren zurückgreifen. Zwei beliebte Programme sind nano und joe. Beide Programme müssen eventuell zuerst installiert werden, was wir mit dem Befehl sudo apt-get install nano bzw. mit sudo apt-get install joe durchführen können. Sie können sich aussuchen, welchen der beiden Editoren sie verwenden möchten.
Der Befehl nano datei.txt öffnet die Datei datei.txt im Nano-Texteditor. Nano ist ein einfacher Texteditor, der für die Bearbeitung von Textdateien direkt im Terminal verwendet wird.
Der Befehl joe datei.txt öffnet die Datei datei.txt im Joe-Texteditor. Joe ist ein weiterer Terminal-basierter Texteditor, der für seine Ähnlichkeit zu alten WordStar-Texteditoren bekannt ist.
Aufgabe
- Installieren Sie nanooderjoe.
- Öffnen Sie eine Datei namens beispiel.txtim Texteditor Ihrer Wahl und fügen Sie etwas Text hinzu.
Befehle "touch", "cat" und "more"
Der Befehl touch wird verwendet, um eine neue, leere Datei zu erstellen oder die Zugriffs- und Änderungszeit einer bestehenden Datei zu aktualisieren.
Der Befehl cat zeigt den Inhalt einer Datei an.
Der Befehl more zeigt den Inhalt einer Datei seitenweise an, sodass der Benutzer durch den Inhalt blättern kann.
Beispiele
- touch datei.txt: Erstellt eine neue, leere Datei namens- datei.txt.
- cat datei.txt: Zeigt den Inhalt der Datei- datei.txt.
- more datei.txt: Zeigt den Inhalt der Datei- datei.txtseitenweise an.
Aufgabe
- Erstellen Sie eine neue Datei namens uebung.txtmit dem Befehltouch.
- Fügen Sie etwas Text zu uebung.txthinzu und zeigen Sie den Inhalt der Datei mitcatund mitmorean.
Den Unterschied zwischen cat und  more werden wir erst bei längeren Dateien bemerken. Empfehlung: verwenden Sie einfach immer more, dann passt das schon.
Befehle "head" und "tail"
Der Befehl head zeigt die ersten Zeilen einer Datei an. Dies ist besonders nützlich, wenn man schnell einen Überblick über den Anfang einer Datei erhalten möchte, wie zum Beispiel bei Konfigurationsdateien.
Der Befehl tail zeigt die letzten Zeilen einer Datei an. Dies ist besonders hilfreich, um die neuesten Einträge in einer Datei zu sehen, wie bei ehr langen Logdateien, um die aktuellsten Log-Ereignisse anzusehen.
Beispiel
- head datei.txt: Zeigt die ersten 10 Zeilen der Datei datei.txt an.
- head -n 30 /var/log/syslog: Zeigt die ersten 30 Zeilen der Logdatei /var/log/syslog an.
- tail datei.txt: Zeigt die letzten 10 Zeilen der Datei datei.txt an.
- tail -n 30 /var/log/syslog: Zeigt die letzten 30 Zeilen der Logdatei /var/log/syslog an.
Aufgabe
- Schauen Sie unter /var/log, welche Logdateien auf dem Server vorhanden sind.
- Verwenden Sie head -n 30, um die ersten 30 Zeilen einer Logdatei anzuzeigen.
- Verwenden Sie tail -n 30, um die letzten 30 Zeilen einer Logdatei anzuzeigen.
Befehl "wc"
Der Befehl wc (Word Count) wird verwendet, um die Anzahl der Zeilen, Wörter und Bytes in einer Datei zu zählen. Es gibt mehrere nützliche Argumente, die man mit dem Befehl wc verwenden kann.
- -l: Zählt die Zeilen in einer Datei.
- -w: Zählt die Wörter in einer Datei.
- -c: Zählt die Bytes in einer Datei.
- -m: Zählt die Zeichen in einer Datei.
- -L: Gibt die Länge der längsten Zeile in einer Datei aus.
Beispiele
- wc -l datei.txt: Zählt die Zeilen in datei.txt.
- wc -L datei.txt: Gibt die Länge der längsten Zeile in datei.txt aus.
Aufgabe
- Zählen Sie die Anzahl der Zeilen, Wörter, Bytes und Zeichen in einer Textdatei mit dem Befehl wc.
Befehle "cut" und "paste"
Der Befehl cut schneidet Teile jeder Zeile aus einer Datei heraus und zeigt sie an.
Der Befehl paste verbindet Zeilen von Dateien.
Beispiel
- cut -d':' -f1 /etc/passwd: Schneidet das erste Feld jeder Zeile in der Datei /etc/passwd aus und zeigt es an.
- paste datei1.txt datei2.txt: Verbindet die Zeilen von datei1.txt und datei2.txt zeilenweise.
Aufgabe
- Schneiden Sie das erste Feld jeder Zeile in der Datei /etc/passwdaus und zeigen Sie es an.
- Verbinden Sie die Zeilen von zwei Textdateien und zeigen Sie das Ergebnis an.
Befehle "awk", "sed", "diff", "sort" und "uniq"
Hier sind wir im Bereich der Nerd-Befehle: mächtig und etwas verrückt. Wenn man wirklich mit einem Linux-System arbeite, dann sind diese Befehle sehr hilfreich.
Der Befehl awk ist ein mächtiges Werkzeug zur Mustererkennung und Verarbeitung von Textdateien.
Der Befehl sed ist ein Stream-Editor zur Bearbeitung von Textdateien.
Der Befehl diff vergleicht zwei Dateien und zeigt die Unterschiede an.
Der Befehl sort sortiert die Zeilen einer Datei.
Der Befehl uniq entfernt doppelte Zeilen in einer Datei.
Beispiel
- awk '{print $1}' datei.txt: Druckt das erste Feld jeder Zeile aus datei.txt.
- sed 's/alt/neu/g' datei.txt: Ersetzt alle Vorkommen von "alt" durch "neu" in datei.txt.
- diff datei1.txt datei2.txt: Vergleicht datei1.txt und datei2.txt und zeigt die Unterschiede an.
- sort datei.txt: Sortiert die Zeilen der Datei datei.txt.
- uniq datei.txt: Entfernt doppelte Zeilen in datei.txt.
Natürlich gibt es für all diese Befehle noch verschiedene Argumente, auf die wir hier aber nicht weiter eingehen. Und es gibt noch etliche weitere "Werkzeuge" auf diesem Niveau, die für Experten ein Linux-System effizient und mächtig machen.
Aufgabe
- Vergleichen Sie zwei Textdateien und zeigen Sie die Unterschiede mit diffan.
- Sortieren Sie die Zeilen einer Textdatei mit sort.
- Entfernen Sie doppelte Zeilen in einer Textdatei mit uniq.
"Spiel" als Übung
Spiel Dateiverwaltung und Links
Diese "Spiel" hilft Ihnen, die bisher gelernten Befehle zu festigen. Folgen Sie den Anweisungen und führen Sie die angegebenen Befehle der Reihe nach aus.
Text für die Aufgabe - hier aufklappen
1 Die Kathedrale und der Basar
Linux ist subversiv. Wer hätte auch vor nur fünf Jahren (1991) gedacht, dass sich ein Betriebssystem der Spitzenklasse wie durch Zauberei materialisieren könnte, geschaffen von Tausenden über den ganzen Planeten verstreuten Nebenerwerbs-Hackern, die durch die eng verwobenen Stränge des Internets verbunden sind?
Ich sicher nicht. Zu dem Zeitpunkt, als Linux 1993 auf meinem Radarschirm auftauchte, hatte ich bereits zehn Jahre in der Unix- und Open Source-Entwicklung verbracht. Mitte der Achtziger war ich einer der ersten Beitragenden zu GNU. Ich hatte bereits umfangreiche Open Source-Software im Internet veröffentlicht, die ich selbst entwickelt oder mitentwickelt hatte (en nethack, Emacs VC (Version Control) und GUD modes, xlife und andere) und die heute noch viel verwendet wird. Ich dachte, ich wüsste, wie es gemacht wird.
Dann stellte Linux alles in Frage, was ich zu wissen glaubte. Ich hatte das Unix-Evangelium der kleinen Tools, des rapid prototyping und der inkrementellen Verbesserung seit der ersten Stunde verbreitet. Ich glaubte aber auch, dass es eine bestimmte kritische Komplexitätsstufe gebe, ab der ein zentralisierterer Ansatz mit sehr genauer Vorausplanung erforderlich wird. Ich glaubte, dass die wichtigste Software (Betriebssysteme und wirklich umfangreiche Tools wie Emacs) so gebaut werden müssten wie Kathedralen, sorgsam gemeißelt von einzelnen Druiden oder kleinen Teams von Hohepriestern, die in totaler Abgeschiedenheit wirkten und keine unfertigen Beta-Freigaben veröffentlichen dürften.
Linus Torvalds Entwicklungsstil auf der anderen Seite - mit seinen frühen und häufigen Freigaben, seinem Delegieren von allem, was nur 
irgendwie möglich ist, und der an Promiskuität grenzenden Offenheit - war eine echte Überraschung. Es handelte sich nicht gerade um eine 
stille und ehrfurchtsvolle Tätigkeit, wie der Bau einer Kathedrale eine ist -- stattdessen schien die Linux-Gemeinde ein großer, wild 
durcheinander plappernder Basar von verschiedenen Zielsetzungen und Ansätzen zu sein (alles sehr treffend durch die Linux-Archivsites 
repräsentiert, die Beiträge von jedem nehmen), der ein kohärentes und stabiles System wohl nur durch eine Reihe von Wundern 
hervorbringen konnte. 
(aus Die Kathedrale und der Basar - Abschnitt 1: https://sehnbruch.ddns.net/selflinux/html/html/die_kathedrale_und_der_basar01.html)
- Erstellen Sie ein Unterverzeichnis spielund führen Sie die Schritte in dem Unterverzeichnis aus.
- Erstellen Sie eine Datei namens spiel.txtund fügen Sie den o.g. Text hinzu.
- Zeigen Sie den Inhalt der Datei spiel.txtmitcatan.
- Kopieren Sie die Datei spiel.txtnachspiel_kopie.txt.
- Zeigen Sie den Inhalt der Datei spiel_kopie.txtmitmorean.
- Zeigen Sie die ersten 2 Zeilen der Datei spiel_kopie.txtmitheadan.
- Zählen Sie die Zeilen, Wörter und Zeichen in der Datei spiel_kopie.txtmitwc.
- Schneiden Sie das erste Wort jeder Zeile in der Datei spiel_kopie.txtmitcutaus und speichern Sie das Ergebnis inergebnis.txt.
- Verbinden Sie die Datei ergebnis.txtmitspiel.txtund speichern Sie das Ergebnis inverbunden.txt.
- Öffnen Sie die Datei verbunden.txtim Texteditor Ihrer Wahl (nanooderjoe) und fügen Sie eine neue Zeile hinzu.
- Zeigen Sie den Inhalt der Datei verbunden.txtmitcatan.
Hinweise:
- Führen Sie die oben genannten Schritte aus.
- Kontrollieren Sie öfters mit ls -l, was passiert ist.
- Wie viele Zeilen hat am Ende die Datei verbunden.txt?