C-KURS WS 01/02 - Übungen1 - Aufgaben


AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: Oct-2, 2001
DATE OF LAST CHANGE: Oct-2 2001
EMAIL:
Gerd Döben-Henisch

Informationen zu den einzelnen Shell-Befehlen findet man unter UNIX (linux) mittels der Shell Befehle 'man Befehlsname' oder 'info Befehlsname' im Shell-Befehlsmodus. Weitere Informationen finden sich direkt im Referenzdokument der Bash-Shell. Bash für Windows eröffnet auch Benutzern von MS-Windows die Chance, mit der Bash-Shell direkt unter MS-Windows (Versionen beachten!) zu arbeiten.

AUFGABE 1:

  1. Legen sie in Ihrem Heimat-Verzeichnis ('home directory') zwei neue Ordner an mit den Namen 'BASH' und 'C'.

  2. Wechseln Sie in das Verzeichnis 'BASH'

VERFÜGBARE BEFEHLE:

{man, info, mkdir, cd}

AUFGABE 2:

  1. Erzeugen Sie mit dem 'echo'-Befehl zwei Testdateien 'test1' und 'test2'. Die Datei 'test1' soll Zeichenketten ohne Ziffern enthalten und die Datei 'test2' Zeichenketten nur mit Ziffern.

  2. Lassen Sie sich den Inhalt ihres aktuellen Verzeichnisses anzeigen.

  3. Lassen sie sich den Inhalt beider Dateien (ohne vi, xemacs..) zeigen.

  4. Lassen sie automatisch die Anzahl der Bytes, der Zeichen und der Worte zählen und anzeigen. Wie interpretieren sie die Anzahl der Bytes?

  5. Geben sie per Eingabeumleitung die Datei test1 als Eingabe auf den Befehl cat und hängen Sie die Ausgabe per Ausgabeumleitung an die Datei test2 an.

VERFÜGBARE BEFEHLE:
{echo, >, >>, ls, cat, wc, <}

AUFGABE 3:

  1. Wechseln Sie in das nächsthöhere Verzeichnis

  2. Legen Sie eine neues Verzeichnis mit Namen 'BASH2' an

  3. Wechseln Sie zurück in das Verzeichnis BASH

  4. Kopieren sie mit einem einzigen Befehl (!) alle Dateien von BASH nach BASH2

  5. Wechseln Sie in das Verzeichnis BASH2 und lassen sie sich den Inhalt des Verzeichnisses BASH2 anzeigen

  6. Erzeugen sie mit echo eine neue Testdatei test3 und zeigen Sie den Inhalt an.

  7. Löschen Sie die Testdatei test3 wieder.

  8. Wechseln Sie ein Verzeichnis nach oben

  9. Löschen Sie mit einem einzigen Befehl (!) den gesamten Ordner BASH2

  10. Wechseln Sie in das Verzeichnis BASH

  11. Erzeugen sie mit echo eine Testdatei test4

  12. Benennen Sie die Testdatei test4 um in test3

VERFÜGBARE BEFEHLE:

{cd, mkdir, cp, ls, echo, cat, rm, mv}

AUFGABE 4:

  1. Erstellen Sie mit dem vi im Verzeichnis BASH das shellskript 'hallo.sh' mit folgendem Inhalt:

    -------------------------------------------------------------------------------
    #! /bin/bash
    #
    # hallo.sh
    #
    echo "Hallo"
    echo "Arg0 = "$0
    echo "Arg1 = "$1

    ------------------------------------------------------------------------------

  2. Speichern Sie den Text.

  3. Listen sie die Dateien des Verzeichnises BASH so auf, dass Sie die Ausführungsrechte aller Dateien sehen können.

  4. Machen Sie die Datei 'hallo.sh' für den Besitzer ausführbar.

  5. Setzen Sie den aktuellen Befehlspfad PATH so auf, dass das aktuelle Verzeichnis als Pfad in PATH enthalten ist. Lassen sie sich das Ergebnis mittels echo anzeigen.

  6. Benutzen Sie das Shellskript hallo.sh jetzt als Befehl, und zwar (i) ohne Argumente, (ii) mit einem Argument, mit (iii) zwei Argumenten, (iv) mit vier Argumenten. Wie interpretieren Sie die Ergebnisse?

VERFÜGBARE BEFEHLE:

{vi, ls, chmod, PATH, =, $, export}

AUFGABE 5:

  1. Erstellen Sie folgenden Text mit dem Editor xemacs:

    #! /bin/bash
    #
    # pparam.sh
    #
    ############
    #
    # This program demonstrates special parameters as well as a method to get in a dynamical
    # manner the content of each positional parameter starting with position 1
    # ###################


    echo "ANZAHL ARGUMENTE = "$#
    echo "Stern ="$*
    echo "Klammeraffe ="$@
    i=1
    anz=$(( $# + 1 ))

    while [ "$i" -lt "$anz" ]
    do
    echo "Pos.Parameter Nr."$i
    echo $1
    i=$(( $i + 1 ))
    shift 1
    done

  2. Listen sie die Dateien des Verzeichnises BASH so auf, dass Sie die Ausführungsrechte aller Dateien sehen können.

  3. Machen Sie die Datei 'pparam.sh' für den Besitzer ausführbar.

  4. Benutzen Sie das Shellskript pparam.sh jetzt als Befehl, und zwar (i) ohne Argumente, (ii) mit einem Argument, mit (iii) zwei Argumenten, (iv) mit vier Argumenten. Wie interpretieren Sie die Ergebnisse?

VERFÜGBARE BEFEHLE:

{xemacs, echo, $, =, $((...)), while condition do commands done, shift, ls, chmod}

AUFGABE 6:

  1. Erstellen Sie folgenden Text mit dem Editor xemacs:

    #! /bin/bash
    #
    # random1.sh
    #
    #################
    #
    # Simple Demonstrator for a number generator. This example is not
    # suited for applications with 'serious' demands!
    #
    # You give as first argument the upper limit of your random number
    # range, which should be equal or less than 32767. The lowest limit is 0.
    #
    #################

    # VARIABLEN

    SRMAX=32767
    r=$RANDOM
    RMAX=$1

    # KONTROLLEN

    echo "ANZAHL = "$#
    echo "SRMAX ="$SRMAX
    echo "Zufallsz. = "$r
    echo "RMAX ="$RMAX
    echo "---------------"

    # AKTIONEN
    if [ "$RMAX" == "" ]; then echo "RMAX ist NIL"; RMAX=$SRMAX
    elif [ "$RMAX" -gt "$SRMAX" ]; then echo "RMAX ist groesser als SRMAX"; RMAX=$SRMAX
    fi
    echo "RMAX schliesslich = "$RMAX
    rnew=$(( 1 + ( ( $RMAX * $r) / ( $SRMAX + 1 ) ) ))
    echo "Neue Zufallszahl = "$rnew

  2. Listen sie die Dateien des Verzeichnises BASH so auf, dass Sie die Ausführungsrechte aller Dateien sehen können.

  3. Machen Sie die Datei 'random1.sh' für den Besitzer ausführbar.

  4. Experimentieren sie mit diesem Befehl, indem Sie ihn ohne Argumente aufrufen bzw. mit verschiedenen Integer-Argumenten

VERFÜGBARE BEFEHLE:

{=, $, echo, if [ ], ==, -gt, $((...)), ls, chmod }

AUFGABE 7:

  1. Erstellen Sie folgenden Text mit dem Editor xemacs:

    #! /bin/bash
    #
    # random.sh
    #
    ############
    #
    # The script random.sh generates a series of random numbers by calling
    # repeatedly the function random1. The number of repetitons depends from
    # the first argument.
    #
    ###################
    # FUNKTIONEN

    random1(){

    # VARIABLEN random1

    local SRMAX=32767
    local r=$RANDOM
    local RMAX=$1

    # AKTIONEN random1

    if [ "$RMAX" == "" ]; then echo "RMAX ist NIL"; RMAX=$SRMAX
    elif [ "$RMAX" -gt "$SRMAX" ]; then echo "RMAX ist groesser als SRMAX"; RMAX=$SRMAX
    fi
    rnew=$(( 1 + ( ( $RMAX * $r) / ( $SRMAX + 1 ) ) ))
    echo "Neue Zufallszahl = "$rnew
    }

    ####################
    # ENDE FUNKTIONEN

    # VARIABLEN random

    anz=$1
    rlimit=$2
    i=0

    # AKTIONEN

    while [ "$i" -lt "$anz" ]
    do
    i=$(( $i + 1 ))
    random1 $rlimit
    done

  2. Listen sie die Dateien des Verzeichnises BASH so auf, dass Sie die Ausführungsrechte aller Dateien sehen können.

  3. Machen Sie die Datei 'random1.sh' für den Besitzer ausführbar.

  4. Experimentieren sie mit diesem Befehl, indem Sie ihn ohne Argumente aufrufen bzw. mit verschiedenen Integer-Argumenten

  5. Verändern Sie das Shellskript so, dass der Bereich der Zufallszahlen [1,6] auf einfache Weise am Bildschirm visualisiert wird

VERFÜGBARE BEFEHLE:

{=, $, echo, if [ ], ==, -gt, $((...)), random1, local, ls, chmod }

AUFGABE 8:

  1. Erstellen Sie eine Version von random.sh unter dem Namen random3.sh, bei der alle Zeilen, die Kommentarzeichen enthalten, entfernt sind.

VERFÜGBARE BEFEHLE:

{grep}