kiss:shell-safari
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
kiss:shell-safari [2014/04/23 22:32] – /* Shell-Konfiguration und Customization -- Aliase, Shell-Voids und die .rc */ jbergner | kiss:shell-safari [2018/10/16 20:14] (aktuell) – /* Download der Safari-Ordner */ Link geändert auf die Version im Pubwiki robin | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | Auf dieser Seite finden sich mehrere kleine Beispielprobleme, | ||
+ | |||
+ | Musterlösungen finden sich verlinkt. | ||
+ | |||
+ | |||
+ | ====== Vorab - Öffnen der Shell ====== | ||
+ | |||
+ | |||
+ | Zunächst gilt es, in der eigenen Desktop-Umgebung, | ||
+ | |||
+ | **Unter KDE:** | ||
+ | Alt+F2, konsole | ||
+ | **Unter Unity/ | ||
+ | Alt+F2, gnome-terminal | ||
+ | |||
+ | |||
+ | ====== Aufgaben ====== | ||
+ | |||
+ | |||
+ | |||
+ | ===== Elementar: Dateisystem ===== | ||
+ | |||
+ | Probiere zunächst die Befehle | ||
+ | ls | ||
+ | pwd | ||
+ | und dann | ||
+ | mkdir Safari | ||
+ | cd Safari | ||
+ | Was passiert hier bei den einzelnen Schritten? | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Download der Safari-Ordner ===== | ||
+ | |||
+ | |||
+ | Zu Übungszwecken wurden für diese Shell-Safari Testordner erstellt. | ||
+ | |||
+ | Lade nun den ersten mit | ||
+ | wget https:// | ||
+ | herunter und entpacke ihn mit | ||
+ | unzip Kiss-ss14-safari.zip | ||
+ | Du hast nun die historischen ersten Ausgaben des [[https:// | ||
+ | |||
+ | |||
+ | ===== Elementar: Hilfe bekommen ===== | ||
+ | |||
+ | |||
+ | Probiere nun | ||
+ | man | ||
+ | man ls | ||
+ | ls --help | ||
+ | |||
+ | Gebt nun eine sortierte Liste der Geier | ||
+ | * nach Dateiname | ||
+ | * in umgekehrter Reihenfolge nach Dateiname | ||
+ | * nach Dateigröße | ||
+ | * mit Zugriffsrechten und Dateigröße in Human-Readable-Darstellung | ||
+ | aus. | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Elementar: Redirect, less, more, cat, grep und die Pipe (' | ||
+ | |||
+ | |||
+ | Erstelle nun eine Textdatei < | ||
+ | * Zugriffsrechte | ||
+ | * Dateibesitzer | ||
+ | * Dateigröße (Human-Readable) | ||
+ | * Dateiname | ||
+ | |||
+ | Probiere nun | ||
+ | more < | ||
+ | less < | ||
+ | |||
+ | Finde als nächstes die Dateigröße von Geier 153 heraus! | ||
+ | |||
+ | Als nächstes: | ||
+ | cat < | ||
+ | cat < | ||
+ | cat < | ||
+ | grep " | ||
+ | |||
+ | Was passiert hier? | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Elementar: Editoren ===== | ||
+ | |||
+ | |||
+ | Man kann in einer Shell auch tatsächlich Dateien editieren. | ||
+ | |||
+ | Probiere einfach mal | ||
+ | nano < | ||
+ | |||
+ | Es gibt auch weitere Shell-Editoren, | ||
+ | |||
+ | |||
+ | ===== Skripting: Ein erstes kleines Shell-Skript ===== | ||
+ | |||
+ | |||
+ | Man kann in einer Shell auch Skripten, d. h. " | ||
+ | |||
+ | Erstelle als erste kleine Übung eine Datei (mit einem beliebigen Texteditor) des folgenden Inhalts: | ||
+ | #!/bin/bash | ||
+ | | ||
+ | # Dieses Shell-Skript erstellt einen neuen Unterordner, | ||
+ | # wechselt in diesen, lädt ein neues Archiv vom Fachschaftsserver | ||
+ | # und entpackt dieses | ||
+ | | ||
+ | mkdir queken | ||
+ | cd queken | ||
+ | wget https:// | ||
+ | unzip Safari_queken.zip | ||
+ | Führe | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Skripting: Variablen ===== | ||
+ | |||
+ | |||
+ | Lege zunächst eine neue Datei " | ||
+ | #!/bin/bash | ||
+ | | ||
+ | ZEILEN=$(cat $1 | wc -l) | ||
+ | | ||
+ | echo "Die Datei $1 hat ${ZEILEN} Zeilen." | ||
+ | Wende das Skript an! | ||
+ | |||
+ | * Schreibe nun ein Shell-Skript, | ||
+ | * Erweitere das Skript aus der vorigen Aufgabe nun so, dass man mit einem **optionalen** zweiten Parameter auch statt nach Userrechten auch nach Gruppenrechten " | ||
+ | * Nun soll dem Skript ein dritter Parameter " | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Skripting: Bilder ===== | ||
+ | |||
+ | |||
+ | Falls du es nicht eh' schon auf dem Rechner hast, installiere jetzt ' | ||
+ | sudo apt-get install pdftk imagemagick | ||
+ | |||
+ | * Im aktuellen Ordner liegt eine Sequenz von PNG-Bildern, | ||
+ | * Wandele die Bilder nun in das Vektorgrafik-Dateiformat EPS um! | ||
+ | * Mache aus den EPS-Dateien nun verlustfreie PDFs! | ||
+ | * Merge nun alle PDFs in eine Datei (in richtiger Reihenfolge!) zusammen! | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Shell-Konfiguration und Customization -- Aliase, Shell-Voids und die .< | ||
+ | |||
+ | |||
+ | Unter Umständen weiß man, dass man einen Befehl oft mit bestimmten Parametern aufrufen wird. Nehmen wir das Beispiel ' | ||
+ | ls -lh --color | ||
+ | Da wäre es doch eigentlich schön, dafür einen " | ||
+ | |||
+ | Es gibt solche Shortcuts. Sie heißen **Alias**e. | ||
+ | |||
+ | Probiere zunächst in deiner Shell den Aufruf von | ||
+ | alias lsall=" | ||
+ | und dann | ||
+ | lsall | ||
+ | |||
+ | Weiterhin haben wir schon gesehen, dass man in Shell-Skripten mit Variablen arbeiten kann. Angenommen, wir wollen immer wieder den aktuellen Pfad wiederfinden können. Dann bietet es sich an zu definieren: | ||
+ | QUEKEN=" | ||
+ | |||
+ | Nun kann man von überall auf dem Dateisystem direkt zu diesem Pfad wechseln. | ||
+ | * Nur zur (Selbst-)Kontrolle: | ||
+ | * Wie wechselt man von einem beliebigen Ort im Dateisystem in den Ordner //über// dem aktuellen? | ||
+ | |||
+ | Probiere nun, in der Shell deine **öffentliche** IP-Adresse herauszufinden! | ||
+ | |||
+ | Eine mögliche Lösung: | ||
+ | wget < | ||
+ | |||
+ | Wie kann man hierfür einen Shortcut anlegen? | ||
+ | |||
+ | TIPP: | ||
+ | Das Stichwort heißt Shell-Void. | ||
+ | |||
+ | Wir haben nun Variablen, Aliase und Shell-Voids kennengelernt und benutzt. Allerdings bleiben diese nicht dauerhaft gesetzt, wenn wir sie lediglich in die Shell eintippen. Wird die aktuelle Shell beendet, sind auch diese nützlichen kleinen Abkürzungen weg. Außerdem stehen sie auch in keiner anderen Instanz der Shell zur Verfügung. | ||
+ | |||
+ | Wie können Aliase, Variablen und Voids dauerhaft eingerichtet werden? | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Programmieren: | ||
+ | |||
+ | |||
+ | Gehe nun mit | ||
+ | cd .. | ||
+ | wieder in den Safari-Ordner und besorge dir das nächste ZIP-Archiv! | ||
+ | cd cplusplus | ||
+ | wget https:// | ||
+ | unzip Safari_cplusplus.zip | ||
+ | Hier liegen drei kleine C++-Programme. | ||
+ | |||
+ | * Kompilliere zunächst die ' | ||
+ | * Führe das Programm nun aus! | ||
+ | * Speichere die komplette Ausgabe des Programmes in einer Datei ' | ||
+ | |||
+ | Als nächstes schaue dir das Programm ' | ||
+ | $\sum\limits_{k=0}^{10^8} 0,5^k!$ | ||
+ | |||
+ | [[kiss: | ||
+ | |||
+ | |||
+ | ===== Programmieren: | ||
+ | |||
+ | |||
+ | Nun werfe einen Blick in das Programm ' | ||
+ | * Bringe es - vorzugsweise ohne Internetbenutzung und nur mit der Shell - ans Laufen! | ||
+ | * Berechne nun mit diesem Programm die geometrische Reihe aus dem vorigen Aufgabenteil! | ||
+ | * Wie der name schon vermuten lässt, arbeitet dieses Programm mit Parallelisierung und sollte daher auf Rechnern mit mehr als einem Kern deutlich schneller sein. Überprüfe, | ||
+ | |||
+ | [[kiss: | ||