• Keine Ergebnisse gefunden

Dr. Dirk Frettl¨oh (dfrettloeh@techfak.uni-bielefeld.de) 18.12.2019

N/A
N/A
Protected

Academic year: 2021

Aktie "Dr. Dirk Frettl¨oh (dfrettloeh@techfak.uni-bielefeld.de) 18.12.2019"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ubungen Unix-Praktikum ¨ Blatt 9

Dr. Dirk Frettl¨oh (dfrettloeh@techfak.uni-bielefeld.de) 18.12.2019

Aufgabe 1

Schreiben Sie eine Shell-Funktionlog entry, die einen gegebenen Text zusammen mit einem Zeitstempel und den Namen des Rechners ausgibt, auf dem sie aufgerufen wurde.

Die Nutzung und Ausgabe der Shell-Funktion soll wie folgt aussehen:

#!/bin/bash

function log_entry() {

# Diesen Teil m¨ussen Sie schreiben }

log_entry "Datenbank neu initialisiert"

sleep 3 # wartet 3 Sekunden log_entry "Anfrage bearbeitet"

$ ./skript.sh

Nov 27 12:03:05 april: Datenbank neu initialisiert Nov 27 12:03:08 april: Anfrage bearbeitet

Der Zeitstempel l¨asst sich mit Hilfe desdate-Befehls erzeugen. Das genaue Ausgabeformat des Datums ist ¨uber einen Formatstring konfigurierbar; so gibt beispielsweise der folgende For- matstring den Namen und die Nummer des aktuellen Tages aus:

$ date "+%A der %d."

Donnerstag der 27.

Mehr Informationen zu dem Formatstring finden sie in der Manualpage zudate.

Der Rechnername steht in der Datei/etc/hostname.

Aufgabe 2

Ein Tagesdatum sei als folgender Text gegeben: 06-12-2019

Geben Sie eine Kombination von Befehlen als Pipe an, um das Datum so an ein Array zu

¨ubergeben, dass die Werte f¨ur Tag, Monat und Jahr anschließend in den drei Array-Elementen liegen. Beispielaufruf:

$ datum= Ausdruck zum Zerlegen und Zuweisen des Datums 06-12-2019

$ echo ${datum[*]}

06 12 2019

(2)

Aufgabe 3

Gegeben sei das folgende Shellskript:

#!/bin/bash

while ! test -f /tmp/stop; do date

sleep 1 done

echo "Angehalten!"

Wird das Skript aufgerufen, so gibt es jede Sekunde das aktuelle Datum und die Uhrzeit aus.

Was muss man tun, damit sich das Skript mit der Meldung “Angehalten!” beendet?

Aufgabe 4

Unter der nachstehenden URL k¨onnen Sie ein Archivdateien09.tar.gzmit Dateien f¨ur dieses ¨Ubungsblatt herunterladen:

https://www.math.uni-bielefeld.de/˜frettloe/teach/unix/dateien09.tar.gz

Die Dateibegriffe.txtenth¨alt mehrere Zeilen gegeneinander austauschbarer Satzkompo- nenten.

a) Schreiben Sie mit Hilfe von while, read line und einem Array ein Shellskript zaehlen.sh, das die Datei begriffe.txt einliest und zu jeder Zeile die Anzahl der in ihr enthaltenen Begriffe ausgibt:

$ ./zaehlen.sh

7: wenige zwei drei f¨unf viele sch¨one wichtige 5: gelbe gr¨une rote blaue kleine

3: Kugeln B¨alle Tassen 1: wurden

3: gestern erfolgreich versehentlich

4: versendet eingepackt verschenkt benutzt

b) ¨Andern Sie Ihr Skript so ab, dass es aus jeder Zeile einen Begriff zuf¨allig ausw¨ahlt und ausgibt. Eine Zufallszahl im Bereich0, . . . , n−1kann mit dem Ausdruck$((RANDOM%n)) erzeugt werden:

$ ./zufall.sh

viele blaue Tassen wurden erfolgreich verschenkt

$ ./zufall.sh

wenige gelbe B¨alle wurden gestern eingepackt

$ ./zufall.sh

sch¨one gr¨une Kugeln wurden gestern benutzt

(3)

Aufgabe 5

Schreiben Sie ein Skriptaddieren.sh, das den Benutzer interaktiv beliebig viele Ganzzah- len eingeben l¨asst. Erfolgt als Eingabe das Gleichheitszeichen, so soll die Summe der eingege- benen Zahlen ausgegeben werden:

$ ./addieren.sh Eingabe: 10 Eingabe: 20 Eingabe: 30 Eingabe: = Summe = 60

Weihnachtsaufgabe 1

Das Archiv aus Aufgabe 4 enth¨alt drei Bilddateien im pgm-Format. Das Format funktioniert ganz ¨ahnlich wie daspbm-Format aus Aufgabe 3 von Blatt 8, nur dass es Graustufen zwischen 0 (schwarz) und 255 (weiß) gibt; statt 0 f¨ur weiß und 1 f¨ur schwarz.

• Schreiben Sie auch hierf¨ur ein Skript, dass f¨ur eine gegebenepgm-Datei (z.B.bild.pgm) die Farben invertiert: Grauwert n wird zu Grauwert 255-n. Das invertierte Bild wird in ei- ne Dateii-· · ·geschrieben (im Beispieli-bild.pgm).

• Schreiben Sie ein Skript pgm2pbm, dass eine gegebene pgm-Datei in eine pbm-Datei konvertiert. Die Grauwerteisollen dabei bez¨uglich eines vorgegebenen Schwellenwerts sauf 1 (f¨urs < i) bzw auf 0 (f¨urs ≥i) gesetzt werden.

Der Beispielaufruf$ pbm2pgm bild.pgm 120erzeugt also eine Dateibild.pbm, in der ein Pixel Farbe 1 hat, falls der entsprechende Pixel inbild.pgmGrauwert kleiner als 120 ist, und 0, falls der entsprechende Pixel in bild.pgm Grauwert gr¨oßer oder gleich 120 hat.

Weihnachtsaufgabe 2

Schreiben Sie ein Shellskript, das einen Wurf mitnW¨urfeln simuliert und das Ergebnis in Form des typischen Augenmusters eines sechseitigen W¨urfels ausgibt:

$ ./wuerfel.sh 3

* * * * *

* * *

* * * * *

$ ./wuerfel.sh 5

* * * * * * *

* * * *

* * * * * * *

(4)

L¨osungshinweise:

Es bietet sich an, die Simulation und Ausgabe eines W¨urfels in Form einer Shell-Funktion zu realisieren und diese dann wiederholt in einer Schleife aufzurufen.

Das Hauptproblem bei dieser Aufgabe besteht darin, eine mehrzeilige Ausgabe sequenziell aufzubau- en. Hat man eine Zeile ausgegeben und einen Zeilenvorschub erzeugt, ist es nicht mehr ohne Weiteres m¨oglich, den Zeilenvorschub r¨uckg¨angig zu machen und weitere Ausgaben in der betreffenden Zeile zu t¨atigen.

Als Hilfskonstruktion kann man den Weg w¨ahlen, den Inhalt f¨ur die auszugebenden Zeilen zun¨achst in Variablen zu speichern. Dabei nutzt man aus, dass sich an die bestehenden Inhalte von Variablen problemlos weitere Texte anf¨ugen lassen. Erst wenn man alle Ausgaben in den Variablen gesammelt hat, gibt man den Inhalt der Variablen aus.

Da die W¨urfel in der gezeigten Darstellung drei Textzeilen umfassen, kann man die Ausgabe in drei Variablena,b undc sammeln. Deren Aufbau und Ausgabe erfolgt nach dem folgenden Schema (das man durch direkte Eingabe ausprobieren kann):

$ a="* *"

$ b=" * "

$ c="* *"

Ein “Verl¨angern” der Ausgabe ist nun einfach:

$ a="${a} *"

$ b="${b} * "

$ c="${c}* "

Sowohl in den Zuweisungen als auch bei der Ausgabe kann auf die Anf¨uhrungszeichen nicht verzichtet werden, da die Kommandozeile sonst Leerzeichen aus der Ausgabe entfernt:

$ echo -e "$a\n$b\n$c\n"

* * *

* *

* **

Downloads (Folien, ¨Ubungsbl¨atter)

https://www.math.uni-bielefeld.de/˜frettloe/teach/unix19.html Hinweise zu den ¨Ubungen

Die ¨Ubungen dienen dem Erlernen von Linux. Es gibt keine Abgabepflicht, es gibt ¨uberhaupt keine Abgaben. In der A&D-Klausur am Ende des Semesters werden allerdings Linux-Fragen vorkommen. In den Tutorien wird Gelegenheit gegeben, die Aufgaben des aktuellen ¨Ubungs- blatts zu bearbeiten. Sie sollten sich am Besten vor dem jeweiligen Tutorium mit den Aufgaben besch¨aftigen. Dar¨uber hinaus k¨onnen Sie den Tutoren zu ¨Ubungen und Vorlesung Fragen stel- len.

E-Mail-Adressen

Ihre Tutoren haben die folgenden E-Mail-Adressen (zuz¨uglich des@techfak.de):

Fiona Hormann fhormann Paul Koch pkoch

Referenzen

ÄHNLICHE DOKUMENTE

• Schreiben Sie auch hierf¨ur ein Skript, dass f¨ur eine gegebene pgm-Datei (z.B. bild.pgm) die Farben invertiert: Grauwert n wird zu Grauwert 255-n. Das invertierte Bild wird in ei-

F¨ugen Sie diese Datei am Ende des Doku- ments paper.tex als gleitende Abbildung mit Hilfe einer Figure-Umgebung ein (siehe das Beispiel auf Folie 38-40 von Vorlesung 12)... ¨

Probieren Sie verschieden M¨oglichkeiten aus: Einmal ¨andern Sie nur verschiedene Zeilen (Per- son 1 Zeile 1, Person 2 Zeile 3), einmal ¨andern Sie beide dieselbe Stelle (etwa Zeile

Unter der nachstehenden URL k¨onnen Sie ein Archiv dateien08.tar.gz mit Dateien herunterladen, die Sie f¨ur die Bearbeitung der ¨ Ubungsaufgaben

Abgabe: Mittwoch 10.4.2019 bis 14 Uhr in Postfach 2183 in V3, oder per Email an den Tutor.. Bitte auf jeder Abgabe das

(e) Finden Sie drei “L¨ ugner” f¨ ur diesen Kontext, also drei Primzahlen n, so dass f n nicht prim ist. Viele Aufgaben d¨ urfen auch mit dem Computer gel¨

(Di oder Do) Dienstag Philipp Braukmann pbraukmann@techfak.uni-bielefeld.de Donnerstag Oliver

Wir k¨ onnen vollst¨ andige Induktion auch anwenden, um zu zeigen, dass eine Eigenschaft P(x) f¨ ur alle Elemente einer rekursiv definierten Menge M gilt.. Der