Lektion I

5 minute read

Technische Grundlagen

Ja, so erste Sitzungen sind ja eigentlich immer recht gleich. Man wird begrüsst, der Dozent stellt sich vor, unter Umständen stellen sich noch die einzelnen Teilnehmer vor, der organisatorische Kram wird geklärt und dann hat man vielleicht noch ein bisschen Input zum Inhalt. Alles gut. Aber… irgendwas ist hier anders.

Zum einen wird nicht wie in jedem anderen Fach Powerpoint verwendet, sondern CodiMD, welches mit Markdown verändert werden kann. Dieses Dokument, das online verfügbar ist, kann so von allen (!) die den Link haben, verändert werden. Und es wird auch gleich für Notizen verwendet. Ich habe diese Form der Kollaboration bisher nicht gekannt, bin aber bis jetzt ziemlich begeistert davon, vor allem, weil das Modul ja online durchgeführt wird und es deshalb viel einfacher und übersichtlicher ist, sich auszutauschen. In Markdown werde ich mich wohl noch ein bisschen einarbeiten müssen, mehr dazu später.

Und auch der Leistungsnachweis gestaltet sich anders als in anderen Modulen. Ein Lerntagebuch? Ich bin zugegebenermassen eine Weltmeisterin im Prokrastinieren – wenn es eine Prüfung gibt, dann starte ich im letztmöglichen Moment mit dem Lernen. Ein Lerntagebuch, bei dem nach jeder Lektion ein Eintrag fällig wird, forciert mich dazu, das Gelernte sofort zu reflektieren und zu verinnerlichen. Ich bin gespannt, welche Auswirkungen das auf meine Lernkurve hat.

Den Lernblog aufsetzen

Da ich ein visueller Mensch bin, ist es mir sehr wichtig, dass ich ein Layout habe, das mir gefällt. Deshalb habe ich das Theme Minimal Mistakes installiert, dessen Stil mir von Anfang an gefallen hat. Toll ist ausserdem, dass es über eine sehr ausführliche Anleitung mit Personifizierungsmöglichkeiten verfügt, was mir die Einarbeitung in das Theme stark erleichtert hat.

Ich musste dann noch einige Anpassungen vornehmen. Da ich mich für die remote-theme Methode entschieden habe, musste ich zuerst die Daten von der Vorlage herunterladen. Diese habe ich dann gemäss der Anleitung in mein Repository kopiert. Dann musste ich diverse Dateien anpassen, bis ich zum gewünschten Resultat gekommen bin. Das hat einiges mehr Zeit verbraucht, als ich es eingeplant habe – vor allem, weil ich mir wirklich nicht gewohnt bin, mit GitHub zu arbeiten und mich zuerst ins System hineindenken musste.

Auch Markdown ist mir als Anwenderin noch unbekannt. Ich bin auf ein Cheatsheet gestossen, das mir den Einstieg aber erleichtert hat – soooo kompliziert ist das Ganze ja auch wieder nicht. Für die Zukunft habe ich mir aber ein eigenes kleines Cheatsheet als Erinnerungshilfe erstellt, damit ich künftige Beiträge schneller erstellen kann und nicht immer die riesige Liste durchforsten muss. Dieses ist hier verfügbar und auch direkt in der Navigation meines Blogs verlinkt, damit ich schnell darauf zugreifen kann.

Linux

Für den Unterricht wird jedem von uns eine virtuelle Maschine der FHGR zugeteilt, die mit Linux Ubuntu läuft. Auf diese kann entweder direkt über den Browser oder auch mit der Zusatztsoftware VMWare Horizon Client aufgerufen werden und funktioniert mit unserem normalen FHGR-Login. Da wir den Horizon Client auch bereits für andere Module benutzt haben und er mir auch von meinem Arbeitgeber coronabedingt gut bekannt ist, hat mir das Einrichten von Ubuntu sehr wenig Probleme bereitet.

Ich habe mich aber dann noch gefragt, ob es auch möglich wäre, Ubuntu lokal auf dem PC über eine virtuelle Maschine zu benutzen und nicht über den Horizon Client. Wir haben das damals im Modul ARIS auch so gemacht, via Oracle VM VirtualBox. Das hätte ich immer noch auf meinem Computer installiert. Ich weiss allerdings nicht, ob den Dozenten hier der Zugriff genau so gewährleistet ist wie über den Horizon Client.

Unix-Shell

Wikipedia definiert die Unix-Shell als die traditionelle Benutzerschnittstelle für Unix-Betriebssysteme. Die Shell ist ein sogenannter Kommandozeileninterpreter, da der Benutzer in der Shell über eine Eingabezeile Kommandos eintippen kann, welche die Maschine dann direkt ausführt. Deshalb ist sie für die Automatisierung von kleineren Aufgaben via Shell-Skripte sehr beliebt. Ihre Hauptfunktion liegt jedoch bei der Serveradministration, da Server meistens nicht über ein grafisches Benutzerinterface verfügen, da dies eine zusätzliche Sicherheitslücke darstellen würde.

Es gibt diverse Varianten der Shell. Da wir im Kurs das Linux-System Ubuntu verwenden und Ubuntu die Bash-Shell benutzt, werden wir mit dieser Shell arbeiten. Auch hier weiss Wikipedia mal wieder mehr als ich - Bash basiert anscheinend auf der sogenannten Bourne-Shell, welche durch Bash weitgehend abgelöst wurde. BASH ist demnach eine Abkürzung für das Wortspiel “Bourne Again Shell” (statt “born again” / Wiedergeburt). Die “Geburt” fand übrigens im Jahr 1989 statt. Seither ist Bash anscheinend so ziemlich die verbreitetste Shell für Linux- wie auch MacOS-Betriebssysteme.

Wie auch schon bei Markdown gibt es für die Unix-Shell ein praktisches Cheatsheet von SoftwareCarpentry. Da ich dazu tendiere, die Kommandos immer wieder zu vergessen, sobald ich sie mal verwendet habe, werde ich die wichtigsten hier noch einmal aufführen, in der Hoffnung, dass sie mir so vielleicht doch noch mal hängen bleibe. Ich werde mich dabei auf die Kommandos konzentrieren, die wir auch in den Übungen in der Stunde verwendet haben. Da haben wir die Übungen Navigating the filesystem und Working with files and directories gelöst. Viele dieser Befehle sind Repetition vom Modul ARIS, das bei mir aber schon so lange her ist, dass ich eine Wiederauffrischung dringend nötig habe.

Kommando Erläuterung
$ pwd “print working directory” - gibt aus, wo ich mich gerade im Filesystem befinde
$ ls “list” - listet alle Filenamen des aktuellen Ordners auf
$ ls -l ´-l´ ist hier ein Parameter für das “list”-Kommando und gibt neben Filenamen auch Dateigrösse (in Bytes) und Erstellungs- bzw. Änderungsdatum aus
$ ls -lh ähnlich wie -l, aber die Dateigrösse wird menschenfreundlicher ausgegeben
$ cd “change directory” - wechselt den Ordner, wobei der Zielordner auch angegeben werden muss, z.B. $ cd Desktop
$ cd - wechselt zum vorhergehenden Ordner
$ man “manual (documentation page)” - kann verwendet werden, um Befehle nachzuschlagen, z.B. man cd (mit Leertaste navigieren und mit q (“quit”) wieder verlassen)
$ mkdir “make directory” - neuer Ordner erstellen, z.B. $ mkdir neuerOrdner
$ cat text.txt “concatenate” - gibt den Inhalt des Dokuments text.txt aus
$ head text.txt gibt die ersten 10 Zeilen des Dokuments text.txt aus
$ tail text.txt gibt die letzten 10 Zeilen des Dokuments text.txt aus
$ less text.txt gibt den Inhalt des Dokuments text.txt Seite pro Seite aus (Navigieren: Leertaste, um zur nächsten Seite zu gelangen und ´q´ für Beenden)
$ mv altername.txt neuername.txt “move” - benennt das Dokument altername.txt um in neuername.txt
$ cp original.txt originalkopie.txt “copy” - erstellt eine Kopie des Dokuments original.txt namens originalkopie.txt
* Wildcard bzw. Platzhalter: steht für 0 oder mehrere Zeichen
? Wildcard bzw. Platzhalter: steht für genau ein Zeichen
history gibt den Verlauf der bisher verwendeten Befehle aus

Natürlich gibt es noch viel mehr Kommandos. Dies sind die, die wir in den Übungen ausprobiert haben. Sollten noch mehr hinzukommen, werde ich diese Liste noch aktualisieren.

Diese Darstellung der Filesystem-Hierarchie von Unix finde ich übrigens sehr praktisch, da sie mir hilft, die einzelnen Kommandos ihrem Zweck bzw. Bereich zuzuordnen. Das Bild kommt direkt aus dem oben verlinkten Cheatsheet von SoftwareCarpentry. Es macht aber auch sehr deutlich, wie viele andere Kommandos es noch gibt - und bisher haben wir uns ausschliesslich im /bin-Zweig (als “essential user command binaries” beschrieben) bewegt. Was wohl da noch auf uns zukommen wird?

Filesystem

Updated: