Linux Systeme

Aufgaben zu den Themen Piping / Umleitungen

Erarbeiten sie die folgenden Übungsaufgaben. Protokollieren Sie zu jeder Aufgabe die Befehle welche zur Lösung führen in einem Dokument.
Anschließend laden Sie bitte das Lösungs-Dokument über MS-Teams in den Bereich "Aufgaben" zu den Aufgaben "Linux: Übungsaufgaben zu "Piping und Umleitungen" - Teil 2" hoch.

Vorbereitung

Um alle Aufgaben dieser Einheit ausführen zu können müssen möglicherweise noch Pakete installiert werden. Führen Sie bitte die folgenden Befehle aus, um diese zu installieren.

cd ~/bin
wget https://edu.epcom.cc/linux-systems/install-tools.sh
chmod a+x install-tools.sh
./install-tools.sh

Befehle verknüpfen mit |

  1. Verwenden Sie den Befehl grep um alle Filme des Filmstudios Disney in der Datei ~/example-data/privat/movies.txt anzuzeigen. Leiten Sie anschließend die Ausgabe von grep in die Eingabe von sort um, um die Sortierung in absteigender Platzierung (höchste zuerst) anzuzeigen. Achten Sie dabei darauf, dass sort den Platz auch numerisch interpretiert!
  2. Verwenden Sie den Befehl ls um alle Dateien und Verzeichnisse des Verzeichnisses /etc aufzulisten. Verwenden Sie dabei die Option für das Long-Listing um die Details ebenfalls anzuzeigen.
    Leiten Sie anschließend diese Ausgabe in den Filterbefehl grep um, um alle Zeilen auszusortieren die dem Besitzer root und der Gruppe root gehören.
    Hinweis: den Besitzer sehen Sie in der zweiten Spalte der Ausgabe und die Gruppe in der dritten.
  3. Verwenden Sie den Befehl ps aux um die aktuelle Liste aller laufenden Prozesse anzuzeigen. Leiten Sie die Ausgabe in den Befehl grep um, um nur noch diese Prozesse anzuzeigen, welche mit Ihrem Benutzerkonto gestartet wurden.
    Hinweis: den Besitzer des Prozesses sehen Sie in der ersten Spalte
  4. Benutzen Sie den Befehl find um alle Dateien ~/example-data aufzulisten. Formatieren Sie die Ausgabe von find so, dass Sie nur die Dateigröße in KB und den Dateinamen (Basename) angezeigt bekommen. Filtern Sie anschließend diese Ausgabe mit dem Befehl grep um alle Dateien zu entfernen die den Text messages im Dateinamen haben. Anschließend leiten Sie diese Ausgabe an den Befehl sort weiter um die Ausgabe nach Dateigröße zu sortieren.
    Auch diese Ausgabe leiten Sie nochmals weiter um nur noch die letzten 10 Dateien anzuzeigen.

Ein- und Ausgabekanäle

  1. Mit dem Befehl history können Sie sich eine Liste ihrer zuvor ausgeführten Befehle anzeigen lassen. Verwenden Sie diesen Befehl um ihre letzen 20 Befehle anzuzeigen. Leiten Sie nun die Ausgabe dieses Befehls in die Datei ~/last-20-cmds.txt um.
    Prüfen Sie mit cat ob die Aufgabe erfolgreich gelöst war.
  2. Erstellen Sie eine neue Datei mit dem Namen wisdom.txt indem sie die Ausgabe des Befehls date in diese umleiten. Fügen Sie anschließend eine Leerzeile zur Datei hinzu indem Sie die Ausgabe des Befehls echo "" in diese anfügen.
    Fügen Sie ebenfalls die Ausgabe des Befehls fortune an das Ende der Datei.
    Prüfen Sie den Inhalt der Datei wisdom.txt ob Datum, Leerzeile und Text vorhanden sind.
  3. Kopieren Sie alle Dateien aus dem Verzeichnis /etc die mit dem Text sudo beginnen in ein neues Verzeichnis in Ihrem Homeverzeichnis (Verzeichnisnamen wählen Sie bitte selbst).
    Der Kopie-Befehl soll so erweitert werden, dass sie während des Kopiervorgangs sehen können welche Dateien gerade kopiert werden.
    Leiten Sie nun die Standard-Ausgabe in eine Datei mit Namen ~/cp.log um. Leiten Sie alle Fehler in eine Datei mit Namen ~/cp.err um.
  4. Verwenden Sie wieder den gleichen Kopier-Befehl wie im vorigen Beispiel. Erstellen Sie nun aber eine einzige Datei mit Namen ~/cp.msg in der sowohl Standard-Ausgabe als auch die Fehler gespeichert werden.

Ausführen bei Erfolg und Misserfolg

  1. Unsere verwendete Shell kann bestimmte Bedingungen überprüfen.
    Beispielsweise prüft das Commando [ -f /etc/passwd ] ob es eine Datei /etc/passwd gibt. Man bekommt dabei jedoch keine Ausgabe - sondern man kann mit den Verknüpfungen && und || weiterarbeiten.
    Testen Sie nach obigem Beispiel, ob es die Datei /etc/group gibt. Ist sie vorhanden, soll der Text "Datei ist vorhanden" mit echo ausgegeben werden.
  2. Testen Sie nach obigem Beispiel, ob es die Datei /etc/people gibt. Ist sie NICHT vorhanden, soll der Text "Datei ist NICHT vorhanden" mit echo ausgegeben werden.
  3. Prüfen Sie ob sie beide Varianten (Erfolg und Misserfolg) mit einer Befehlszeile prüfen können. Testen Sie mit einer vorhandenen und einer nicht vorhandenen Datei.
  4. Mit dem Befehl ping kann geprüft werden ob ein anderer Computer über das Netzwerk erreicht werden kann. Der Befehl liefert als Ergebnis auch ein passendes Signal mit dem wir wieder auf Erfolg und Misserfolg prüfen können.
    Verwenden Sie den Befehl ping -c 3 COMPUTERNAME mit Erfolg und Misserfolgsmeldungen durch den Befehl echo.
    Testen Sie ihren Befehl einmal mit www.google.com anstatt COMPUTERNAME und anschließend mit ZIEL-GIBT-ES-NICHT.