This commit is contained in:
Daniel Schubert 2019-03-06 15:52:18 +01:00
parent cf8c24a14d
commit 40ceb06301
9 changed files with 163 additions and 231 deletions

183
17.html
View File

@ -30,8 +30,8 @@
</script>
<style type="text/css">
.reveal img{ max-height: 60vh}
li { padding-top: .5em !important; }
</style>
</head>
<body>
@ -50,49 +50,154 @@
</section>
<section style="font-size: .6em">
<span style="color: orange">Experimente mit versch. Kompressionsprogrammen ( gzip, bzip2, xz ):</span>
<span style="color: orange">Übungen:</span>
<ul>
<li>Besorgen Sie sich eine geeignete Datei (etwa ein größeres tar -Archiv zB den Linux Kernel) und komprimieren Sie sie jeweils mit gzip , bzip2 und xz . Messen Sie dabei die Ausführungszeit durch ein vorgesetztes time . Wie verhalten die Laufzeiten und die Komprimierungsraten sich zueinander?</li>
<li>Experimentieren Sie mit der Datei aus der vorigen Aufgabe und vergleichen Sie die Laufzeit und die Größe des Resultats für xz mit verschiedenen Effizienz-Optionen. Was ist der Unterschied zwischen -1 und -6 und zwischen -6 und -9 ?</li>
<li></li>
</ul>
<p>Hinweise:
<li>Finden Sie alle Dateien in Ihrem System, die größer als 1 MiB sind, und lassen Sie deren Namen ausgeben.</li>
<li>Wie können Sie find benutzen, um eine Datei zu löschen, die einen merkwürdigen Namen hat (etwa mit unsichtbaren Kontrollzeichen oder mit Umlauten, die von älteren Shells nicht verstanden werden)?</li>
<li>Wie würden Sie beim Abmelden dafür sorgen, dass etwaige Dateien in /tmp, die Ihnen gehören, automatisch gelöscht werden?</li>
</ul>
<aside class="notes">
<pre><code>find / -size +1024k -print</code></pre>
<pre><code># -inum Inodenname ( ls -i )
find . -maxdepth 1 -inum 4711 -exec rm -f '{}' \;</code></pre>
<pre><code>find /tmp -user $LOGNAME -type f -print0 \
| xargs -0 -r rm -</code></pre>
</aside>
</section>
<section style="font-size: .65em">
<h4>Übungen mit grep / reguläre Ausdrücke</h4>
<section style="font-size: .6em">
<ul>
<li>README ist ein sehr populärer Dateiname. Geben Sie die absoluten
Pfadnamen aller Dateien auf Ihrem System an, die README heißen.</li>
<li>Legen Sie eine neue Datei in Ihrem Heimatverzeichnis an und überzeugen Sie sich durch einen locate-Aufruf, dass diese Datei nicht gefunden
wird (wählen Sie gegebenenfalls einen hinreichend ausgefallenen Dateinamen). Rufen Sie dann (mit Administratorrechten) das Programm updatedb
auf. Wird Ihre neue Datei danach mit locate gefunden? Löschen Sie die Datei wieder und wiederholen Sie die vorigen Schritte</li>
</ul>
</section>
<section style="font-size: .6em">
<ul>
<li>Überzeugen Sie sich, dass slocate funktioniert, indem Sie als gewöhnlicher Benutzer nach Dateien wie /etc/shadow suchen.</li>
<li>Welche Dateien stehen im Verzeichnis /boot? Hat das Verzeichnis Unterverzeichnisse und, wenn ja, welche?
<li style="padding-top: .5em">Erklären Sie den Unterschied zwischen <code>ls</code> mit einem Dateinamen als
Argument und <code>ls</code> mit einem Verzeichnisnamen als Argument. <br>
</ul>
</section>
<section style="font-size: .6em">
<ul>
<li>Wie können Sie <code>ls</code> dazu bringen, bei einem Verzeichnisnamen als
Argument Informationen über das benannte Verzeichnis selbst anstatt über
die darin enthaltenen Dateien zu liefern?
<li>Warum hat <code>mv</code> keine -R-Option wie <code>cp</code>?
<li>Angenommen, in einem Ihrer Verzeichnisse steht eine Datei namens »- file« (mit einem Minuszeichen am Anfang des Namens). Wie würden Sie diese Datei entfernen?
<li>Wenn Sie ein Verzeichnis haben, in dem Sie nicht versehentlich einem »rm *« zum Opfer fallen wollen, können Sie dort eine Datei namens
»- i« anlegen, etwa mit <pre><code>$ > -i</code></pre> Was passiert, wenn Sie jetzt das Kommando »rm *« ausführen, und warum?</li>
<li>Wie löscht man diese Datei ( -i ) ?
</ul>
</section>
<section style="font-size: .6em">
<p><span style="color: orange">Experimente mit versch. Kompressionsprogrammen ( gzip, bzip2, xz ):</span>
<ul>
<li>Besorgen Sie sich eine geeignete Datei (etwa ein größeres tar -Archiv zB den Linux Kernel) und komprimieren Sie sie jeweils mit gzip , bzip2 und xz . Messen Sie dabei die Ausführungszeit durch ein vorgesetztes time . Wie verhalten die Laufzeiten und die Komprimierungsraten sich zueinander?</li>
<li>Experimentieren Sie mit der Datei aus der vorigen Aufgabe und vergleichen Sie die Laufzeit und die Größe des Resultats für xz mit verschiedenen Effizienz-Optionen. Was ist der Unterschied zwischen -1 und -6 und zwischen -6 und -9 ?</li>
</ul>
</section>
<section style="font-size: .65em">
<h4>Übungen mit grep / reguläre Ausdrücke</h4>
<ul>
<li>
Sind die Operatoren ? und + in regulären Ausdrücken wirklich nötig?
</li>
<li>
Finden Sie in <a href="/beispiele/17/frosch.txt">frosch.txt</a> alle Zeilen, in denen das Wort »Tochter« oder »Königstochter« vorkommt.
</li>
<li>
In der Datei /etc/passwd stehen die Benutzer des Rechners (meistens jedenfalls). Jede Zeile der Datei besteht aus einer Reihe von durch Doppelpunkten getrennten Feldern. Das letzte Feld jeder Zeile gibt die Login-Shell eines Benutzers an. Geben Sie eine grep-Kommandozeile an, mit der Sie alle Benutzer finden können, die die Bash als Login-Shell verwenden.
</li>
<li>
Suchen Sie in /usr/share/dict/words nach allen Wörtern, die die genau die fünf Vokale »a«, »e«, »i«, »o« und »u« in dieser Reihenfolge enthalten (möglicherweise mit Konsonanten davor, dazwischen und dahinter).
</li>
<li>
Geben Sie ein Kommando an, das im »Froschkönig« alle Zeilen sucht und ausgibt, in denen irgendein mindestens vierbuchstabiges Wort zweimal auftritt.
</li>
</ul>
<p>Quelle: <a href="/pdf/Linux-Kurs/lxes-de-manual.pdf">lxes-de-manual.pdf</a>
<aside class="notes">
<pre><code>egrep '\<(Königst|T)ochter\>' frosch.txt</code></pre>
<pre><code>grep :/bin/bash$ /etc/passwd</code></pre>
<pre><code>$ k='[^aeiou]*'
$ grep -i ^${k}a${k}e${k}i${k}o${k}u${k}$ /usr/share/dict/words</code></pre>
<pre><code>egrep '(\<[[:alpha:]]{4,}\>).*\<\1\>' frosch.txt</code></pre>
</aside>
</section>
<section style="font-size: .6em">
<ul>
<li>Wie können Sie prüfen, ob in einem Verzeichnis Dateien mit »merkwürdigen« Namen enthalten sind, etwa solche mit Leerzeichen am Schluss
oder mit unsichtbaren Steuerzeichen in der Mitte?
<li>Vergleichen Sie die Ausgabe der Kommandos »ls /tmp« und »ls /tmp
>ls-tmp.txt« (wobei wir mit »Ausgabe« im zweiten Fall den Inhalt der Datei
ls- tmp.txt meinen). Fällt Ihnen etwas auf? Falls ja, wie könnte man das Phänomen erklären? ( u.U. kein Effekt, hängt von der Version ab ) </li>
<li>Ersetzten Sie in den Dateinamen der jpg aus bilder.zip alle Gross- durch Kleinbuchstaben
<pre><code class="bash">~$ tr '[:upper:]' '[:lower:]' ...</code></pre></li>
</ul>
</section>
<section style="font-size: .6em">
<ul>
<li>Sortieren Sie die Teilnehmerliste in <a href="/linuxkurs/beispiele/17/teilnehmer0.dat">teilnehmer0.dat</a> nach den Vereinsnamen und innerhalb der
Vereine nach den Nach- und Vornamen der Spieler (in dieser Reihenfolge)
<p><pre><code class="bash">~$ man sort</code></pre></p>
<li>Generieren Sie eine neue Version der Datei teilnehmer0.dat, in der die Startnummer und die Vereinszugehörigkeit nicht auftauchen.
<p><pre><code class="bash">~$ man cut
~$ man paste</code></pre></p>
<li>Erzeugen Sie eine Version der Datei teilnehmer0.dat, bei der die Felder nicht durch Doppelpunkte, sondern durch die Zeichenkette »,␣« (Komma gefolgt von einem Leerzeichen) getrennt sind.
<li>Wie viele verschiedene Gruppen werden von Benutzern auf Ihrem System als primäre Gruppen benutzt? (Die primäre Gruppe eines Benutzers ist das vierte Feld in der Datei /etc/passwd.)
</ul>
</section>
<section style="font-size: .55em">
<p>
Erstellt ein Backup-Installations-Script welches
<ol>
<li>einmal per Dialog einen Backup-Dateinamen ohne Endung abfrägt mit <a href="https://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail#Input_box">Whiptail</a></li>
<li>einmal per Dialog das Backup-Ziel abfrägt ( zB lk.schubertdaniel.de / oder localhost ) </li>
<li>einen systemd Timer ( <a href="https://wiki.archlinux.de/title/Systemd/Timers">https://wiki.archlinux.de/title/Systemd/Timers </a> ) installiert, der täglich
<ul>
<li>die Ordner „wp-content/themes“ und „wp-content/uploads“ eurer Wordpress Installation </li>
<li>Die Datenbank eurer Wordpress Installation ( Befehl mysqldump ) <pre><code class="sql" contenteditable="">mysqldump --add-drop-table -h mysql_hostserver -u mysql_username -p mysql_databasename
</code></pre></li>
</ul>
zusammen in ein <strong>xz-komprimiertes</strong> File mit dem oben abgefragten Namen + Datum im Format <br> „24-02-2019“ packt</li>
<li>das Backup auf Backup-Ziel per „scp“ oder „rsync“ kopiert.</li>
<li>Strukturiert das Script mit functions; ggf. kann es sinnvoll sein, die Aufgabe in mehrere Dateien aufzuteilen.
</ol>
</p>
</section>
<ul>
<li>
Sind die Operatoren ? und + in regulären Ausdrücken wirklich nötig?
</li>
<li>
Finden Sie in <a href="/beispiele/17/frosch.txt">frosch.txt</a> alle Zeilen, in denen das Wort »Tochter« oder »Königstochter« vorkommt.
</li>
<li>
In der Datei /etc/passwd stehen die Benutzer des Rechners (meistens jedenfalls). Jede Zeile der Datei besteht aus einer Reihe von durch Doppelpunkten getrennten Feldern. Das letzte Feld jeder Zeile gibt die Login-Shell eines Benutzers an. Geben Sie eine grep-Kommandozeile an, mit der Sie alle Benutzer finden können, die die Bash als Login-Shell verwenden.
</li>
<li>
Suchen Sie in /usr/share/dict/words nach allen Wörtern, die die genau die fünf Vokale »a«, »e«, »i«, »o« und »u« in dieser Reihenfolge enthalten (möglicherweise mit Konsonanten davor, dazwischen und dahinter).
</li>
<li>
Geben Sie ein Kommando an, das im »Froschkönig« alle Zeilen sucht und ausgibt, in denen irgendein mindestens vierbuchstabiges Wort zweimal auftritt.
</li>
</ul>
<p>Quelle: <a href="/pdf/Linux-Kurs/lxes-de-manual.pdf">lxes-de-manual.pdf</a>
</section>
<section>
Übungen
C8.7 [2] Wie können Sie prüfen, ob in einem Verzeichnis Dateien mit »merkwürdigen« Namen enthalten sind, etwa solche mit Leerzeichen am Schluss
oder mit unsichtbaren Steuerzeichen in der Mitte?
</section>
</div>
</div>

Binary file not shown.

View File

@ -1,34 +0,0 @@
#!/bin/bash
function db_backup {
# Vars
host=localhost
user=XXXXXXX
pass=XXXXXXX
db=wordpress
echo 'DB Export ------> '
mysqldump --opt --add-drop-table -h$host -u$user -p$pass $db | gzip > wp-db.sql.gz
}
function file_backup {
backupfile="wordpress-backup.tar"
echo 'File Backup --- building tar File...'
tar -cf $backupfile ~/wp*
echo '+DONE'
}
echo '-------------------------------------------'
echo 'Tolles Backup Script'
echo '-------------------------------------------'
backupdir=backup
cd ~ ; mkdir $backupdir && cd $backupdir || { echo "FEHLER!!!!"; exit 1 }
# Funktionsaufrufe
db_backup
file_backup

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

View File

@ -1,158 +0,0 @@
Der Froschkönig oder der eiserne Heinrich
In alten Zeiten, als das Wünschen noch geholfen hat, lebte einmal ein
König, der hatte wunderschöne Töchter. Die jüngste von ihnen war so
schön, daß die Sonne selber, die doch so vieles schon gesehen hat,
sich verwunderte, sooft sie ihr ins Gesicht schien.
Nahe bei dem Schlosse war ein großer, dunkler Wald, und mitten darin,
unter einer alten Linde, war ein Brunnen. Wenn nun der Tag recht heiß war,
ging die jüngste Prinzessin hinaus in den Wald und setzte sich an den Rand
des kühlen Brunnens. Und wenn sie Langeweile hatte, nahm sie eine
goldene Kugel, warf sie in die Höhe und fing sie wieder auf. Das war
ihr liebstes Spiel.
Nun trug es sich einmal zu, daß die goldene Kugel der Königstochter
nicht in die Händchen fiel, sondern auf die Erde schlug und gerade in
den Brunnen hineinrollte. Die Königstochter folgte ihr mit den Augen
nach, aber die Kugel verschwand, und der Brunnen war tief, so tief,
daß man keinen Grund sah.
Da fing die Prinzessin an zu weinen und weinte immer lauter und konnte
sich gar nicht trösten. Als sie so klagte, rief ihr plötzlich jemand
zu: »Was hast du nur, Königstochter? Du schreist ja, daß sich ein
Stein erbarmen möchte.«
Sie sah sich um, woher die Stimme käme, da erblickte sie einen Frosch,
der seinen dicken, häßlichen Kopf aus dem Wasser streckte. »Ach, du
bist's, alter Wasserpatscher«, sagte sie. »Ich weine über meine
goldene Kugel, die mir in den Brunnen hinabgefallen ist.«
»Sei still und weine nicht«, antwortete der Frosch, »ich kann wohl Rat
schaffen. Aber was gibst du mir, wenn ich dein Spielzeug wieder
heraufhole?«
»Was du haben willst, lieber Frosch«, sagte sie, »meine Kleider, meine
Perlen und Edelsteine, auch noch die goldene Krone, die ich trage.«
Der Frosch antwortete: »Deine Kleider, deine Perlen und Edelsteine und
deine goldene Krone, die mag ich nicht. Aber wenn du mich liebhaben
willst und ich dein Geselle und Spielkamerad sein darf, wenn ich an
deinem Tischlein neben dir sitzen, von deinem goldenen Tellerlein
essen, aus deinem Becherlein trinken, in deinem Bettlein schlafen
darf, dann will ich hinuntersteigen und dir die goldene Kugel
heraufholen.«
»Ach, ja«, sagte sie, »ich verspreche dir alles, was du willst, wenn
du mir nur die Kugel wiederbringst.« Sie dachte aber, der einfältige
Frosch mag schwätzen, was er will, der sitzt doch im Wasser bei
seinesgleichen und quakt und kann keines Menschen Geselle sein!
Als der Frosch das Versprechen der Königstochter erhalten hatte,
tauchte er seinen Kopf unter, sank hinab, und über ein Weilchen kam er
wieder heraufgerudert, hatte die Kugel im Maul und warf sie ins
Gras. Die Königstochter war voll Freude, als sie ihr schönes Spielzeug
wiedererblickte, hob es auf und sprang damit fort.
»Warte, warte!« rief der Frosch. »Nimm mich mit, ich kann nicht so
laufen wie du!« Aber was half es ihm, daß er ihr sein Quak-quak so
laut nachschrie, wie er nur konnte! Sie hörte nicht darauf, eilte nach
Hause und hatte den Frosch bald vergessen.
Am andern Tag, als sie sich mit dem König und allen Hofleuten zur
Tafel gesetzt hatte und eben von ihrem goldenen Tellerlein aß, da kam,
plitsch platsch, plitsch platsch, etwas die Marmortreppe
heraufgekrochen. Als es oben angelangt war, klopfte es an die Tür und
rief. »Königstochter, jüngste, mach mir auf«
Sie lief und wollte sehen, wer draußen wäre. Als sie aber aufmachte,
saß der Frosch vor der Tür. Da warf sie die Tür hastig zu, setzte sich
wieder an den Tisch, und es war ihr ganz ängstlich zumute.
Der König sah wohl, daß ihr das Herz gewaltig klopfte, und sprach:
»Mein Kind, was fürchtest du dich? Steht etwa ein Riese vor der Tür
und will dich holen?«
»Ach, nein«, antwortete sie, »es ist kein Riese, sondern ein garstiger
Frosch.«
»Was will der Frosch von dir?«
»Ach, lieber Vater, als ich gestern im Wald bei dem Brunnen saß und
spielte, fiel meine goldene Kugel ins Wasser. Als ich deshalb weinte,
hat sie mir der Frosch heraufgeholt. Und weil er es durchaus
verlangte, versprach ich ihm, er sollte mein Spielgefährte werden. Ich
dachte aber nimmermehr, daß er aus seinem Wasser käme. Nun ist er
draußen und will zu mir herein.«
Da klopfte es zum zweiten Mal, und eine Stimme rief:
»Königstochter, jüngste,
Mach mir auf!
Weißt du nicht, was gestern
Du zu mir gesagt
Bei dem kühlen Brunnenwasser?
Königstochter, jüngste,
Mach mir auf!«
Da sagte der König: »Was du versprochen hast, das mußt du auch halten!
Geh nur und mach ihm auf!«
Sie ging und öffnete die Tür. Da hüpfte der Frosch herein und hüpfte
ihr immer nach bis zu ihrem Stuhl. Dort blieb er sitzen und rief: »Heb
mich hinauf zu dir!« Sie zauderte, bis es endlich der König
befahl. Als der Frosch auf dem Stuhl war, wollte er auf den Tisch, und
als er da saß, sprach er: »Nun schieb mir dein goldenes Tellerlein
näher, damit wir mitsammen essen können.« Der Frosch ließ sich's gut
schmecken, ihr aber blieb fast jeder Bissen im Halse stecken.
Endlich sprach der Frosch: »Ich habe mich satt gegessen und bin
müde. Nun trag mich in dein Kämmerlein und mach dein seidenes Bettlein
zurecht!« Die Königstochter fing an zu weinen und fürchtete sich vor
dem kalten Frosch, den sie sich nicht anzurühren getraute und der nun
in ihrem schönen, reinen Bettlein schlafen sollte.
Der König aber wurde zornig und sprach: »Wer dir geholfen hat, als du
in Not warst, den sollst du hernach nicht verachten!«
Da packte sie den Frosch mit zwei Fingern, trug ihn hinauf in ihr
Kämmerlein und setzte ihn dort in eine Ecke. Als sie aber im Bette
lag, kam er gekrochen und sprach: »Ich will schlafen so gut wie
du. Heb mich hinauf, oder ich sag's deinem Vater!«
Da wurde sie bitterböse, holte ihn herauf und warf ihn gegen die
Wand. »Nun wirst du Ruhe geben«, sagte sie, »du garstiger Frosch!« Als
er aber herabfiel, war er kein Frosch mehr, sondern ein Königssohn mit
schönen freundlichen Augen. Der war nun nach ihres Vaters Willen ihr
lieber Geselle und Gemahl. Er erzählte ihr, er wäre von einer bösen
Hexe verwünscht worden, und niemand hätte ihn aus dem Brunnen erlösen
können als sie allein, und morgen wollten sie mitsammen in sein Reich
gehen.
Und wirklich, am anderen Morgen kam ein Wagen herangefahren, mit acht
weißen Pferden bespannt, die hatten weiße Straußfedern auf dem Kopf
und gingen in goldenen Ketten. Hinten auf dem Wagen aber stand der
Diener des jungen Königs, das war der treue Heinrich.
Der treue Heinrich hatte sich so gekränkt, als sein Herr in einen
Frosch verwandelt worden war, daß er drei eiserne Bänder um sein Herz
hatte legen lassen, damit es ihm nicht vor Weh und Traurigkeit
zerspränge.
Der Wagen sollte nun den jungen König in sein Reich holen. Der treue
Heinrich hob ihn und seine junge Gemahlin hinein, stellte sich wieder
hinten hinauf und war voll Freude über die Erlösung seines Herrn. Als
sie ein Stück des Weges gefahren waren, hörte der Königssohn, daß es
hinter ihm krachte, als ob etwas zerbrochen wäre. Da drehte er sich um
und rief:
»Heinrich, der Wagen bricht!«
»Nein, Herr, der Wagen nicht,
Es ist ein Band von meinem Herzen,
Das da lag in großen Schmerzen,
Als Ihr in dem Brunnen saßt
Und in einen Frosch verzaubert wart.«
Noch einmal und noch einmal krachte es auf dem Weg, und der Königssohn
meinte immer, der Wagen bräche. Doch es waren nur die Bänder, die vom
Herzen des treuen Heinrich absprangen, weil sein Herr nun erlöst und
glücklich war.

View File

@ -0,0 +1,8 @@
egrep '\<(Königst|T)ochter\>' frosch.txt
grep :/bin/bash$ /etc/passwd
k='[^aeiou]*'
grep -i ^${k}a${k}e${k}i${k}o${k}u${k}$ /usr/share/dict/words
egrep '(\<[[:alpha:]]{4,}\>).*\<\1\>' frosch.txt

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

View File

@ -0,0 +1,11 @@
Schulz:Hugo:SV Schnaufenberg:123:Herren
Schleicher:Detlef:TSV Lahmhausen:13:Herren
Flöttmann:Fritz:Sportfreunde Renntal:217:Herren
Springinsfeld:Karlheinz:TV Jahnstein:154:Herren
von Traben:Gesine:TV Jahnstein:26:Damen
Rasbichel:Ulla:TSV Lahmhausen:117:Damen
Schwitz:Sieglinde:Sportfreunde Renntal:93:Damen
Rasbichel:Katja:TSV Lahmhausen:119:Damen
Langbein:Leni:SV Schnaufenberg:55:Damen
Zielinger:Hannes:TV Jahnstein:45:Herren
Fluschinsky:Käthe:Sportfreunde Renntal:57:Damen