17
This commit is contained in:
183
17.html
183
17.html
@@ -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>
|
||||
|
||||
|
Reference in New Issue
Block a user