Einführung
Herzlich willkommen zu diesem praxisorientierten Lab über die Befehlsausführung und Textverarbeitung unter Linux! Wenn Sie neu in der Linux-Welt sind, keine Sorge – wir begleiten Sie Schritt für Schritt. In diesem Lab werden wir untersuchen, wie man mehrere Befehle effizient hintereinander ausführt und leistungsstarke Werkzeuge zur Textmanipulation einsetzt. Am Ende dieses Kurses werden Sie in der Lage sein, Befehle zu kombinieren, Texte zu durchsuchen und Daten wie ein Profi zu verarbeiten!
Befehle sequenziell ausführen
Unter Linux können Sie mehrere Befehle nacheinander in einer einzigen Zeile ausführen. Dies ist besonders nützlich, wenn Sie eine Reihe zusammengehöriger Aufgaben erledigen möchten.
Beginnen wir mit einem einfachen Beispiel. Wir lassen uns das aktuelle Datum anzeigen und listen anschließend den Inhalt Ihres Home-Verzeichnisses auf:
date && ls ~
Das bewirkt dieser Befehl:
date: Zeigt das aktuelle Datum und die Uhrzeit an.&&: Dieses Symbol steht für ein logisches "Und". Es weist Linux an, den nächsten Befehl nur dann auszuführen, wenn der erste Befehl erfolgreich war.ls ~: Listet den Inhalt Ihres Home-Verzeichnisses auf (das Symbol~ist die Abkürzung für Ihr persönliches Benutzerverzeichnis).
Geben Sie diesen Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste. Sie sollten das heutige Datum sehen, gefolgt von einer Liste der Dateien und Ordner in Ihrem Home-Verzeichnis.
Falls nach dem Datum keine Dateien aufgelistet werden, ist das kein Grund zur Sorge! Es könnte bedeuten, dass Ihr Home-Verzeichnis momentan leer ist. Sie können stattdessen ls /home/labex ausprobieren, um sicherzustellen, dass Sie eine Ausgabe erhalten.
Bedingte Befehlsausführung
In diesem Schritt untersuchen wir, wie man bedingte Operatoren einsetzt, um die Befehlsausführung basierend auf dem Erfolg oder Misserfolg vorangegangener Befehle zu steuern.
Versuchen wir zunächst, einen bedingten Befehl mit einem Programm auszuführen, das nicht installiert ist:
which cowsay && cowsay "Hello, LabEx" || echo "cowsay is not installed"
In dieser Befehlskette passiert Folgendes:
which cowsayprüft, ob das Programmcowsayim Systempfad gefunden wird.&&ist der logische UND-Operator, der den nächsten Befehl nur ausführt, wenn der vorherige erfolgreich war (Exit-Status 0).cowsay "Hello, LabEx"würde eine ASCII-Art-Kuh anzeigen, die "Hello, LabEx" sagt.||ist der logische ODER-Operator, der den nächsten Befehl nur dann ausführt, wenn der vorherige Befehl fehlgeschlagen ist.echo "cowsay is not installed"gibt eine Meldung aus, dass das Programm nicht installiert ist.
Sie sollten die Ausgabe "cowsay is not installed" sehen, da das Programm aktuell noch nicht auf dem System vorhanden ist.
Nun installieren wir cowsay:
sudo apt-get update && sudo apt-get install -y cowsay
Und führen denselben Befehl erneut aus:
which cowsay && cowsay "Hello, LabEx" || echo "cowsay is not installed"
Diesmal sollten Sie eine Kuh aus Schriftzeichen sehen, die "Hello, LabEx" sagt.
Dieses Beispiel verdeutlicht die Logik von && und ||. && bedeutet "ausführen, wenn erfolgreich", während || bedeutet "ausführen, wenn fehlgeschlagen".
Hier ist die Analyse der Abläufe:
Vor der Installation:
which cowsaywurde ausgeführt (fand aber nichts).- Wegen
&&wurde versucht,cowsay "Hello, LabEx"auszuführen, was fehlschlug. - Da
cowsayfehlschlug, wurde der Befehl nach dem||(echo "cowsay is not installed") ausgeführt.
Nach der Installation:
which cowsaywar erfolgreich, also wurdecowsay "Hello, LabEx"ausgeführt.- Da dieser Teil erfolgreich war, musste der Echo-Befehl nach dem
||nicht mehr ausgeführt werden.
Experimentieren Sie ruhig mit eigenen bedingten Befehlsketten!
Einführung in Pipelines
Pipelines sind eine extrem leistungsfähige Funktion in Linux. Sie ermöglichen es, die Ausgabe eines Befehls direkt als Eingabe an einen anderen Befehl weiterzureichen. Dies geschieht mit dem Symbol | (Pipe).
Starten wir mit einem einfachen Beispiel:
ls -l /etc | less
Das passiert hier:
ls -l /etc: Listet den Inhalt des Verzeichnisses/etcim Langformat auf.|: Leitet die gesamte Textausgabe an den nächsten Befehl weiter.less: Ein Programm, mit dem Sie bequem durch lange Texte scrollen können.
Wenn Sie dies ausführen, sehen Sie eine Liste von Dateien. Nutzen Sie die Pfeiltasten zum Scrollen und drücken Sie 'q', um die Ansicht zu beenden.
Nun probieren wir eine komplexere Pipeline:
ls -l /etc | grep '^d' | wc -l
Dieser Befehl zählt, wie viele Verzeichnisse sich in /etc befinden. So funktioniert es:
ls -l /etc: Erstellt die Liste im Langformat.grep '^d': Filtert alle Zeilen heraus, die mit einem 'd' beginnen (dies kennzeichnet in Linux Verzeichnisse).wc -l: Zählt die verbleibenden Zeilen (was in diesem Fall der Anzahl der Verzeichnisse entspricht).
Sie erhalten als Ergebnis eine Zahl.
Felder extrahieren mit cut
Der Befehl cut ist ideal, um bestimmte Teile aus Textzeilen herauszuschneiden. Wir nutzen ihn, um Benutzernamen und deren Home-Verzeichnisse aus der Datei /etc/passwd zu extrahieren, in der die Benutzerkonten des Systems gespeichert sind.
Führen Sie diesen Befehl aus:
cut -d: -f1,6 /etc/passwd | head -n 5
Die Details dazu:
cut: Der Befehl zum Ausschneiden von Textteilen.-d:: Legt den Doppelpunkt:als Trennzeichen (Delimiter) fest.-f1,6: Extrahiert das 1. und das 6. Feld (Benutzername und Home-Verzeichnis).|: Übergibt das Ergebnis an den nächsten Befehl.head -n 5: Zeigt nur die ersten 5 Zeilen der Ausgabe an.
Die Ausgabe sollte etwa so aussehen:
root:/root
daemon:/usr/sbin
bin:/bin
sys:/dev
sync:/bin
Jede Zeile zeigt nun kompakt den Namen und den Pfad, getrennt durch einen Doppelpunkt.
Kombination von grep mit Pipelines und Befehlsketten
In diesem Schritt lernen wir, wie man grep zusammen mit Pipelines und Sequenzen für eine fortgeschrittene Textverarbeitung nutzt.
Suchen wir zunächst nach allen Zeilen in Ihrer .zshrc-Datei, die das Wort "PATH" enthalten, und zählen diese:
grep "PATH" ~/.zshrc | wc -l
Diese Pipeline nutzt grep zum Finden der Zeilen und wc -l zum Zählen.
Nun nutzen wir eine Befehlskette, um nach "PATH" zu suchen und – falls etwas gefunden wurde – anschließend nach "HOME" zu suchen:
grep "PATH" ~/.zshrc && grep "HOME" ~/.zshrc
Dies zeigt Zeilen mit "HOME" nur an, wenn zuvor auch "PATH" gefunden wurde.
Ein komplexeres Beispiel: Wir suchen in /etc/passwd nach Zeilen, die "bin" enthalten, sortieren diese alphabetisch und lassen uns die ersten 5 anzeigen:
grep "bin" /etc/passwd | sort | head -n 5
Diese Pipeline erledigt drei Aufgaben:
- Findet Zeilen mit "bin".
- Sortiert diese Zeilen.
- Begrenzt die Ausgabe auf die ersten 5 Treffer.
Zum Abschluss kombinieren wir alles: Wir suchen nach "sh" in /etc/passwd, zählen die Treffer und entscheiden basierend auf der Anzahl, ob wir die Zeilen ausgeben oder eine Meldung anzeigen:
grep "sh" /etc/passwd | wc -l | {
read count
[ $count -gt 5 ] && grep "sh" /etc/passwd || echo "Found $count lines, not enough to display."
}
Dieser komplexe Befehl macht Folgendes:
- Sucht nach Zeilen mit "sh".
- Zählt diese Zeilen.
- Wenn die Anzahl größer als 5 ist (
-gt 5), werden die Zeilen ausgegeben. - Wenn die Anzahl 5 oder weniger ist, wird eine Nachricht mit der Trefferzahl angezeigt.
Hinweis: Wenn Sie mehrzeilige Befehle im Terminal eingeben, müssen Sie eventuell Alt+Enter nach jeder Zeile (außer der letzten) drücken, um einen Zeilenumbruch zu erzeugen, oder Sie tippen den gesamten Befehl einfach in eine einzige lange Zeile.
Probieren Sie diese Befehle aus und testen Sie eigene Kombinationen!
Zählen mit wc
Der Befehl wc (word count) ist ein praktisches Werkzeug zum Zählen von Zeilen, Wörtern und Zeichen.
Zählen wir zuerst die Zeilen in /etc/passwd:
wc -l /etc/passwd
Die Option -l weist wc an, Zeilen zu zählen. Sie sehen eine Zahl gefolgt vom Dateinamen.
Nun zählen wir die Wörter in den ersten 10 Zeilen von /etc/passwd:
head -n 10 /etc/passwd | wc -w
Diese Pipeline kombiniert:
head -n 10 /etc/passwd: Holt die ersten 10 Zeilen.wc -w: Zählt die Wörter in diesen Zeilen.
Sie erhalten als Ergebnis die Wortanzahl.
Sortieren mit sort
Der Befehl sort wird verwendet, um Textzeilen zu ordnen. Wir nutzen ihn, um die Datei /etc/passwd nach dem dritten Feld (der Benutzer-ID) zu sortieren:
sort -t: -k3 -n /etc/passwd | head -n 5
Die Bedeutung der Parameter:
-t:: Verwendet:als Trennzeichen zwischen den Feldern.-k3: Sortiert basierend auf dem dritten Feld.-n: Sortiert numerisch (statt alphabetisch, damit 10 nach 2 kommt).| head -n 5: Zeigt nur die ersten 5 Zeilen an.
Sie sehen nun die ersten fünf Einträge der Passwort-Datei, aufsteigend sortiert nach der User-ID.
Duplikate entfernen mit uniq
Der Befehl uniq dient dazu, doppelte Zeilen in sortiertem Text zu entfernen oder zu identifizieren. Finden wir heraus, welche verschiedenen Shell-Typen in /etc/passwd verwendet werden:
cut -d: -f7 /etc/passwd | sort | uniq
Diese Pipeline arbeitet in drei Schritten:
cut -d: -f7 /etc/passwd: Extrahiert das 7. Feld (die Shell) aus jeder Zeile.sort: Sortiert die Shell-Pfade alphabetisch (wichtig, dauniqnur aufeinanderfolgende Duplikate erkennt).uniq: Entfernt alle doppelten Einträge.
Sie erhalten eine Liste der eindeutigen Shell-Pfade auf dem System.
Nun zählen wir, wie viele Benutzer die jeweilige Shell verwenden:
cut -d: -f7 /etc/passwd | sort | uniq -c
Die Option -c stellt jeder Zeile die Anzahl der Vorkommen voran.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben dieses Lab über Befehlsausführung und Textverarbeitung unter Linux erfolgreich abgeschlossen. Hier ist ein Rückblick auf das, was Sie gelernt haben:
- Sie können Befehle sequenziell mit
&&und bedingt mit||ausführen. - Pipelines (
|) ermöglichen es, mehrere Befehle zu verketten, indem die Ausgabe des einen zur Eingabe des nächsten wird. cutist ideal, um gezielt Informationen aus strukturierten Textdateien zu extrahieren.grephilft Ihnen, Texte nach bestimmten Mustern zu durchsuchen.wcliefert Statistiken über die Anzahl von Zeilen, Wörtern und Zeichen.sortbringt Ordnung in Ihre Daten.uniqbereinigt Duplikate und kann Häufigkeiten zählen.
Diese Werkzeuge bilden das Fundament der Textverarbeitung unter Linux. Im Laufe Ihrer weiteren Lernreise werden Sie unzählige Möglichkeiten finden, diese Befehle zu kombinieren, um komplexe Aufgaben effizient zu lösen. Scheuen Sie sich nicht davor, zu experimentieren!
Denken Sie daran: Übung macht den Meister. Probieren Sie diese Befehle mit verschiedenen Dateien und Optionen aus. Wenn Sie einmal vergessen haben, wie ein Befehl funktioniert, hilft Ihnen der Befehl man (z. B. man grep), um das Handbuch aufzurufen.
Viel Erfolg beim weiteren Erkunden von Linux!



