1 kommandopeiplines
kraeml edited this page 2023-10-01 19:38:39 +00:00

Kommando-Pipelines

Eine Kommandopipeline (auch "Pipeline" genannt) in der Shell ist eine leistungsstarke Technik, die es ermöglicht, mehrere Befehle miteinander zu verknüpfen, um komplexe Aufgaben zu erledigen. In einer Kommandopipeline werden die Ausgabe eines Befehls als Eingabe für einen anderen Befehl verwendet, wodurch Daten von einem Befehl zum nächsten fließen. Dies ermöglicht das effiziente Verarbeiten und Transformieren von Daten in der Shell-Umgebung.

Die Syntax für die Verwendung von Pipelines in der Shell ist das vertikale Trennzeichen |. Hier ist ein einfaches Beispiel:

Befehl1 | Befehl2

In diesem Beispiel wird die Ausgabe von "Befehl1" als Eingabe für "Befehl2" verwendet. "Befehl1" gibt Daten aus, und diese Daten werden direkt an "Befehl2" weitergegeben, ohne dass sie in einer temporären Datei gespeichert werden müssen.

Ein häufiges Szenario für Pipelines ist die Verarbeitung von Textdaten. Zum Beispiel könnten Sie den Befehl grep verwenden, um Zeilen in einer Datei zu filtern, und dann die gefilterten Zeilen an den Befehl sort weitergeben, um sie alphabetisch zu sortieren:

grep "Suchbegriff" datei.txt | sort

Auf diese Weise können Sie komplexe Aufgaben durch das Verketten mehrerer Befehle in einer Pipeline lösen, wodurch die Effizienz und Flexibilität Ihrer Shell-Befehle erheblich gesteigert wird.

Fingerübungen

ls -laF
ls -laF | grep 'li'

Die beiden Kommandos führen folgende Aktionen aus:

  1. ls -laF: Dieser Befehl listet den Inhalt des aktuellen Verzeichnisses auf. Hier ist eine Erläuterung der verwendeten Optionen:

    • -l: Zeigt die Ergebnisse im Langformat an, was zusätzliche Informationen wie Berechtigungen, Eigentümer, Gruppe, Dateigröße und Datum der letzten Änderung enthält.
    • -a: Zeigt auch versteckte Dateien und Verzeichnisse an, die mit einem Punkt (.) beginnen.
    • -F: Fügt zu den Dateinamen Suffixe hinzu, um anzuzeigen, ob es sich um Verzeichnisse (mit /) oder ausführbare Dateien (mit *) handelt.
  2. ls -laF | grep 'li': Dieser Befehl führt zwei Aktionen aus. Zuerst wird die Ausgabe von ls -laF durch eine Pipe (|) an grep weitergeleitet. grep ist ein Suchwerkzeug, das nach Zeilen sucht, die mit einem bestimmten Muster übereinstimmen. In diesem Fall sucht es nach Zeilen, die das Muster 'li' enthalten. Das Ergebnis sind die Zeilen aus der Ausgabe von ls -laF, die das Muster 'li' enthalten. Dies kann nützlich sein, um Dateien oder Verzeichnisse mit bestimmten Zeichenfolgen in ihren Namen zu filtern.

whatis cut
cut --help
cat /etc/passwd
cut -d: -f1 /etc/passwd

Die gegebenen Kommandos in der Linux-Shell führen folgende Aktionen aus:

  1. whatis cut: Dieser Befehl gibt eine kurze Beschreibung des Unix-Befehls "cut" aus. Es ist eine schnelle Möglichkeit, grundlegende Informationen über einen Befehl zu erhalten.

  2. cut --help: Dieser Befehl gibt eine ausführlichere Hilfe (manchmal auch als "man page" bezeichnet) für den Befehl "cut" aus. Die Option --help wird häufig verwendet, um ausführliche Informationen zu den verschiedenen Optionen und Verwendungsmöglichkeiten eines Befehls anzuzeigen.

  3. cat /etc/passwd: Dieser Befehl verwendet das cat-Kommando, um den Inhalt der Datei "/etc/passwd" auf dem Bildschirm auszugeben. Die "/etc/passwd"-Datei enthält Informationen zu Benutzerkonten auf einem Unix/Linux-System, einschließlich Benutzernamen und anderen Informationen.

  4. cut -d: -f1 /etc/passwd: Hier wird der Befehl "cut" verwendet, um Text in der "/etc/passwd"-Datei zu bearbeiten. Die Optionen bedeuten:

    • -d:: Dies legt das Trennzeichen auf : fest, da die "/etc/passwd"-Datei die Felder mit : trennt.
    • -f1: Dies wählt das erste Feld (den Benutzernamen) in jeder Zeile aus.

    Der Befehl schneidet also den Benutzernamen aus jeder Zeile der "/etc/passwd"-Datei und gibt sie auf dem Bildschirm aus. Dies kann nützlich sein, um eine Liste der Benutzernamen auf einem System zu erstellen.

whatis sort
cut -d: -f1 /etc/passwd | sort 

Die Befehle bedeuten:

  1. whatis sort: Dieser Befehl gibt eine kurze Beschreibung oder eine Zusammenfassung des Befehls "sort" aus. Es zeigt normalerweise an, dass "sort" verwendet wird, um Zeilen in einer Datei oder aus einer Pipeline alphabetisch zu sortieren.

  2. cut -d: -f1 /etc/passwd | sort: Dieser Befehl liest die Datei "/etc/passwd", trennt die Zeilen an den Doppelpunkten (":") und gibt dann die ersten Felder (normalerweise die Benutzernamen) aus. Diese Benutzernamen werden dann alphabetisch sortiert und auf dem Bildschirm angezeigt. Dies kann nützlich sein, um eine Liste der Benutzernamen im System in alphabetischer Reihenfolge anzuzeigen.

whatis pr
cut -d: -f1 /etc/passwd | sort | pr -2 >userlst
cat userlst

Die folgenden Kommandos führen verschiedene Aufgaben in einem Unix/Linux-System aus:

  1. whatis pr: Dieser Befehl gibt eine kurze Beschreibung des Befehls "pr" aus. Das "pr" steht normalerweise für "print", und der Befehl wird verwendet, um Dateien in einem druckbaren Format auszugeben.

  2. cut -d: -f1 /etc/passwd | sort | pr -2 >userlst: Dieser Befehl führt eine Kette von Aktionen aus:

    • cut -d: -f1 /etc/passwd: Dieser Befehl verwendet den Befehl "cut", um die erste Spalte jeder Zeile in der Datei "/etc/passwd" zu extrahieren. Die Optionen -d: geben das Trennzeichen als Doppelpunkt an, und -f1 gibt an, dass nur die erste Spalte extrahiert werden soll. Dies enthält normalerweise Benutzernamen.
    • sort: Dieser Befehl sortiert die extrahierten Benutzernamen alphabetisch.
    • pr -2: Der Befehl "pr" wird verwendet, um Dateien für den Druck vorzubereiten, und hier wird er mit der Option "-2" aufgerufen, um die Ausgabe in zwei Spalten anzuzeigen.
    • userlst: Die Ausgabe wird in eine Datei mit dem Namen "userlst" umgeleitet.

  3. cat userlst: Dieser Befehl zeigt den Inhalt der Datei "userlst" auf dem Bildschirm an. Die Datei enthält die Benutzernamen aus der "/etc/passwd"-Datei, alphabetisch sortiert und in zwei Spalten angezeigt.

Zusammengefasst erstellen diese Befehle eine Liste der Benutzernamen aus der "/etc/passwd"-Datei, sortieren sie und formatieren sie in zwei Spalten, und speichern das Ergebnis in einer Datei namens "userlst", die dann angezeigt wird.

rm userlst
whatis tee
cd ~/dateien
ls -laF | tee liste | grep li
cat liste
ls -l li*
rm liste

Die folgenden Kommandos führen verschiedene Aktionen in einem Unix/Linux-System aus:

  1. rm userlst: Dieser Befehl löscht die Datei "userlst" im aktuellen Verzeichnis.

  2. whatis tee: Dieser Befehl gibt eine kurze Beschreibung des Befehls "tee" aus. "tee" wird verwendet, um die Standardeingabe zu lesen und sowohl auf die Standardeingabe als auch in eine oder mehrere Dateien zu schreiben.

  3. cd ~/dateien: Dieser Befehl wechselt das Arbeitsverzeichnis in das Verzeichnis "~/dateien" (angenommen, "~/dateien" ist ein vorhandenes Verzeichnis im Home-Verzeichnis des Benutzers).

  4. ls -laF | tee liste | grep li: Dieser Befehl führt mehrere Aktionen aus:

    • ls -laF: Dieser Befehl listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, zeigt Details an (einschließlich versteckter Dateien) und kennzeichnet Verzeichnisse.
    • tee liste: Die Ausgabe des vorherigen Befehls wird sowohl auf dem Bildschirm angezeigt als auch in eine Datei mit dem Namen "liste" geschrieben.
    • grep li: Dieser Befehl filtert die Ausgabe nach Zeilen, die das Wort "li" enthalten.
  5. cat liste: Dieser Befehl zeigt den Inhalt der Datei "liste" auf dem Bildschirm an, die zuvor von "tee" erstellt wurde und die gefilterte Ausgabe enthält.

  6. ls -l li*: Dieser Befehl listet alle Dateien und Verzeichnisse im aktuellen Verzeichnis auf, die mit "li" beginnen.

  7. rm liste: Dieser Befehl löscht die Datei "liste" im aktuellen Verzeichnis.

Zusammengefasst erstellen diese Befehle eine Liste von Dateien und Verzeichnissen im aktuellen Verzeichnis, filtern sie nach dem Wort "li", speichern die gefilterte Liste in einer Datei namens "liste", zeigen sie an und löschen dann die Datei "liste".