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
nano
oderjoe
. - Öffnen Sie eine Datei namens
beispiel.txt
im 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 namensdatei.txt
.cat datei.txt
: Zeigt den Inhalt der Dateidatei.txt
.more datei.txt
: Zeigt den Inhalt der Dateidatei.txt
seitenweise an.
Aufgabe
- Erstellen Sie eine neue Datei namens
uebung.txt
mit dem Befehltouch
. - Fügen Sie etwas Text zu
uebung.txt
hinzu und zeigen Sie den Inhalt der Datei mitcat
und mitmore
an.
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/passwd
aus 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
diff
an. - Sortieren Sie die Zeilen einer Textdatei mit
sort
. - Entfernen Sie doppelte Zeilen in einer Textdatei mit
uniq
.
"Spiel" als Übung
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
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
spiel
und führen Sie die Schritte in dem Unterverzeichnis aus. - Erstellen Sie eine Datei namens
spiel.txt
und fügen Sie den o.g. Text hinzu. - Zeigen Sie den Inhalt der Datei
spiel.txt
mitcat
an. - Kopieren Sie die Datei
spiel.txt
nachspiel_kopie.txt
. - Zeigen Sie den Inhalt der Datei
spiel_kopie.txt
mitmore
an. - Zeigen Sie die ersten 2 Zeilen der Datei
spiel_kopie.txt
mithead
an. - Zählen Sie die Zeilen, Wörter und Zeichen in der Datei
spiel_kopie.txt
mitwc
. - Schneiden Sie das erste Wort jeder Zeile in der Datei
spiel_kopie.txt
mitcut
aus und speichern Sie das Ergebnis inergebnis.txt
. - Verbinden Sie die Datei
ergebnis.txt
mitspiel.txt
und speichern Sie das Ergebnis inverbunden.txt
. - Öffnen Sie die Datei
verbunden.txt
im Texteditor Ihrer Wahl (nano
oderjoe
) und fügen Sie eine neue Zeile hinzu. - Zeigen Sie den Inhalt der Datei
verbunden.txt
mitcat
an.
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
?