UNIX-SHELL-Übung 2

Sämtliche Bearbeitungsschritte sind in einem SHELL-Skript (uebung2.sh) mittels der entsprechenden UNIX-Befehle durchzuführen. Pseudocode-Stellen sind innerhalb <<< und >>> zu finden und zusätzlich fett markiert. Pseudocode ist durch Shell-Code zu ersetzen:

  1. Definiere die erforderlichen Umgebungsvariablen:
    GEWUENSCHTE_FUNKTION=$1 # In Parameter 1 wird die gewünschte Funktion übergeben
    NAME_DES_BENUTZERS=$2 # In Parameter 2 wird der Name des Benutzers übergeben
    ART_DES_BENUTZERS=$3 # In Parameter 3 wird die Art des Benutzers übergeben
    PARAMETER_ANZAHL=$#
    LISTE_DER_PARAMETER=$*
    WURZEL_VERZEICHNIS="./home"
    INFO="Folgendes Kommando wurde aufgerufen: "$0" "$LISTE_DER_PARAMETER

  2. Definiere die Hauptfunktion main() und rufe diese im Script auf:
    main()
    {
    <<< Gib den Wert der Umgebungsvariablen INFO auf dem Bildschirm aus >>>
    <<< Wenn der Wert der Variablen PARAMETER_ANZAHL ungleich 3 ist ... >>>
    <<<... dann ... >>>

    <<< Gib den Text "Anzahl der Parameter ungueltig" auf dem Bildschirm aus >>>
    exit 1
    <<<...Ende von wenn >>>
    <<< Im Fall die Variable GEWUENSCHTE_FUNKTION habe den Wert ... >>>
    Erzeugen)
    Erzeugen
    ;;
    *)
    <<< Gib den Text "Diese gewuenschte Funktion wird nicht unterstuetzt" auf dem Bildschirm aus >>>
    ;;
    esac
    }

    main

  3. Definiere die Funktion Erzeugen() oberhalb der Funktion main():
    Erzeugen()
    {
    <<<Gib den Text "Funktion Erzeugen wurde aufgerufen" auf dem Bildschirm aus >>>
    <<< Wenn das Verzeichnis(=spezielle Datei) existiert, welche in der Variablen WURZEL_VERZEICHNIS festgelegt ist ...>>>
    <<< dann ...>>>
    echo $WURZEL_VERZEICHNIS" bereits vorhanden"
    <<< ... andernfalls ... >>>
    <<< ... erstelle das Verzeichnis, welches in der Variablen WURZEL_VERZEICHNIS festgelegt ist >>>
    <<< ... Ende von wenn >>>
    <<< Erstelle das Verzeichnis >>>
    $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS
    <<< Wenn die Variable ART_DES_BENUTZERS die die Zeichenkette "Administrator" enhält ... >>>
    <<<...dann ...>>>
    <<< ändere die Berechtigung von >>>
    $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS <<< auf dr-xr-xr-x>>>
    <<<... Ende von wenn >>>
    <<< Wechsle in das Verzeichnis >>>
    $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS
    echo "Willkommen im UNIX als "$ART_DES_BENUTZERS > info.txt
    }

  4. Ergänze in der Funktion main() die Case-Konstruktion durch die Funktion Kopieren(). Definiere die Funktion Kopieren() oberhalb der Funktion main():
    Kopieren()
    {
    <<< Gib den Text "Funktion Kopieren wurde aufgerufen" auf dem Bildschirm aus >>>
    <<< Erzeuge das Verzeichnis >>>
    $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS/Kopie
    <<< Wechsle in das Verzeichnis >>> $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS
    <<< Gib den Pfad des aktuellen Verzeichnisses auf dem Bildschirm aus >>>
    <<< Kopiere die Datei info.txt in die Datei Kopie/kopie_info.txt
    }

  5. Ergänze in der Funktion main() die Case-Konstruktion durch die Funktion Loeschen(). Definiere die Funktion Loeschen() oberhalb der Funktion main():
    Loeschen()
    {
    <<< Gib den Text "Funktion Loeschen wurde aufgerufen" auf dem Bildschirm aus >>>
    <<< Lösche das Verzeichnis $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS mit allen Unterverzeichnissen ohne Rückfragen >>>
    }

  6. Ergänze in der Funktion main() die Case-Konstruktion durch die Funktion Sichern(). Definiere die Funktion Sichern() oberhalb der Funktion main():
    Sichern()
    {
    <<< Gib den Text "Funktion Sichern wurde aufgerufen" auf dem Bildschirm aus >>>
    <<< Wechsle in das Verzeichnis, welches durch der Wert der Umgebungsvariablen WURZEL_VERZEICHNIS festgelegt wird >>>
    <<< Gib den Pfad des aktuellen Verzeichnisses aus >>>
    <<< Wenn das Verzeichnis ./backup existiert >>>
    <<< ... dann ... >>>
    <<< Gib den Text "backup-Verzeichnis bereits vorhanden" auf dem Bildschirm aus >>>
    <<< ... andernfalls ... >>>
    <<< Erstelle das Verzeichnis ./backup >>>
    <<< Ende von wenn >>>
    <<< Wechsle in das Verzeichnis, welches durch den Wert der Variablen NAME_DES_BENUTZERS festgelegt wird >>>
    <<< Erzeuge ein tar-Archiv mit dem Namen $NAME_DES_BENUTZERS.tar, in welchem relativ zum aktuellen Verzeichnis alle Dateien und Unterverzeichnisse vorhanden sind >>>
    <<< Kopiere die Datei $NAME_DES_BENUTZERS.tar in das Verzeichnis ../backup >>>
    }

  7. Ergänze in der Funktion main() die Case-Konstruktion durch die Funktion Ansehen(). Definiere die Funktion Ansehen() oberhalb der Funktion main():
    Ansehen()
    {
    <<< Gib den Text "Funktion Ansehen wurde aufgerufen" auf dem Bildschirm aus
    <<<Liste den Inahlt des Archives $NAME_DES_BENUTZERS.tar, welches im Verzeichnis $WURZEL_VERZEICHNIS/backup vorhanden ist, auf dem Bildschrim aus >>>
    }

  8. Ergänze in der Funktion main() die Case-Konstruktion durch die Funktion Einspielen(). Definiere die Funktion Einspielen() oberhalb der Funktion main():
    Einspielen()
    {
    <<< Gib den Text "Funktion Einspielen wurde aufgerufen" auf dem Bildschirm aus >>>
    <<< Kopiere das Archif $WURZEL_VERZEICHNIS/backup/$NAME_DES_BENUTZERS.tar in das Verzeichnis $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS >>>
    <<< Wechsle in das Verzeichnis $WURZEL_VERZEICHNIS/$NAME_DES_BENUTZERS >>>
    <<< Packe das tar-Archiv $NAME_DES_BENUTZERS.tar im aktuellen Verzeichnis aus >>>
    }