Linux für Anwendungsentwicklung

Hyper-V VM einrichten

Windows-Features Aktivieren / Deaktivieren

  • → [x] Hyper-V

  • Neuer Virtueller Computer

  • → Generation 2

  • → Dynamischen Speicher aus, mindestens 2048 MB Arbeitsspeicher

  • → Netzwerkverbindung über "Default Switch"

  • → Default-Einstellungen für die Festplatte sind OK

  • → Betriebssystem von einer startbaren Imagedatei: live-dvd.iso

  • Rechtsklick auf die Maschine

  • → Einstellungen

  • → Sicherheit

  • → [ ] "Sicheren Start aktivieren" ausschalten

Aufgabe

Schickt mir Screenshots folgender Ausgaben von ls:

-rw-r--r-- 1 root root 1,2K  8. Sep 07:48 /etc/passwd

-rw-r--r-- 1 root root 1,2K  8. Sep 07:48 passwd

-rw-r--r-- 1 root root 1,2K  8. Sep 07:48 ../passwd

-rw-r--r-- 1 root root 1140  8. Sep 07:48 ../etc/passwd

                       ^- Größe beachten  ^- Pfad beachten

Zusatz: alle Ausgaben in einem einzelnen Terminal

Berechtigungen:

Wie komme ich zu folgendem Verhalten? Schickt mir wieder einen Screenshot einer Terminalausgabe:

live@live:~$ echo "Ein bisschen Text" >dateiZwei
bash: dateiZwei: Keine Berechtigung

Aufgabe Ordnerstrukturen

Erstellt den Nachfolgenden Ordner- und Dateibaum Länder- und Städtenamen sind Ordner. Bahnhöfe sind Dateien.

Schickt mir dann einen Screenshot der Terminalausgabe

Hinweis: Nicht nur Leerzeichen müssen von der Shell "escaped" werden

Hinweis: Mit einzelnen Kommandos lassen sich auch mehrere Dateien / Ordner auf einmal anlegen

Hinweis: Benötigte Kommandos sind touch und mkdir. Nutzt cd, um weniger Schreibarbeit zu haben. Wenn ihr euch vertippt, müsst ihr auch rm, rmdir, oder mv nutzen

~$ tree DE/
DE/
├── Berlin
│   ├── Berlin Alexanderplatz
│   ├── Berlin Friedrichstraße
│   ├── Berlin Ostbahnhof
│   ├── Berlin Ostkreuz
│   └── Königs Wusterhausen
└── Brandenburg
    ├── Brand Tropical Island
    ├── Cottbus
    │   ├── Cottbus Hbf
    │   ├── Cottbus-Merzdorf
    │   ├── Cottbus-Sandow
    │   └── Cottbus-Wilmersdorf Nord
    ├── Lübbenau (Spreewald)
    ├── Lübben (Spreewald)
    ├── Raddusch
    └── Vetschau

Zusatz: man kann den gesamten Dateibaum mit zwei Kommandos anlegen

Shell-Session zum nachschlagen: Ordnerbaum_Shell-Session.txt

Dateisysteme

Dateisysteme_1.svg

Befehle / Programme

Dateien und Verzeichnisse

  • touch - Datei erstellen, eigentlich "Änderungszeit" aktualisieren
  • cp - Dateien kopieren "von" "nach", auch als cp -r - "rekursiv", d.h. Verzeichniss mit Unterverzeichnissen, Unterunterverzeichnissen, usw.
  • mv - Verschieben "von" "nach"
  • rm, rm -r - Entfernen von Dateien, "Rekursives" entfernen
  • rmdir - Entfernen von (leeren) Verzeichnissen
  • cat - Dateien ausgeben, eigentlich concatenate: "Aneinanderhängen"
  • mkdir - Verzeichniss(e) erstellen
  • ls - Verzeichnisinhalt auflisten, Meta-Informationen zu einer Datei/Verzeichnis anzeigen
  • chmod - "Change Modus", "Zugriffsmodus"/Berechtigungen einer Datei ändern
  • tree - Verzeichnisbaum anzeigen (fancy)
  • find - Dateien suchen, eigentlich Dateibaum rekursiv ausgeben und filtern

Sonstige

  • echo - Text ausgeben
  • less - Interaktive Dateianzeige - "pager", Tipp: drücke "/" für eine Suche
  • man - "Manual"/Handbuchseiten anzeigen

Pipeline-"Atome"

  • sort - Eingabe zeilenweise sortieren
  • wc - "Word Count", zählt die Anzahl von Zeilen, Worten und Zeichen in der Standardeingabe
  • cut - extrahiert Teile aus einzelnen Textzeilen
  • tr - "translate", wandelt einzelne Buchstaben in andere um, oder entfernt sie

Jobs / Prozesse

  • fg (Builtin) Letzten Job im Vordergrund weiter ausführen
  • bg (Builtin) Letzten Job im Hintergrund weiter ausführen
  • jobs (Builtin) Prozesse anzeigen, die in der selben Shell laufen (Child-Processes/Kind-Prozesse)
  • Strg+Z - (Tastenkombination im Terminal), Aktuellen Vordergrundprozess anhalten
  • ps - "Process Snapshot", Liste von Prozessen im System
  • top, htop - Interaktiver Prozessmonitor
  • pstree - Prozesshierarchie anzeigen
  • kill - "terminiert" einen Prozess, eigentlich ein "Signal" senden

Begriffe

  • Shellumleitung

    ~$ befehl > datei (Ausgabe in Datei schreiben)

    ~$ befehl >> datei (Ausgabe an Datei anhängen)

  • Pager
    Zeigt lange Texte Seitenweise an
    more, less

  • POSIX: Standard für das Verhalten von verschiedenen UNIX-Systemen

  • Kindprozess / Elternprozess (Child/Parent)
    Jeder Prozess, außer init, wurde von einem "Elternprozess" gestartet

  • Standardeingabe / Standardausgabe / Standardfehler (STDIN, STDOUT, STDERR)

Eigenschaften von Prozessen

  • Benutzerzugehörigkeit (UID / GID)
  • Environment / Umgebungsvariablen
  • Offene Dateien (Standardeingabe / Standardausgabe / Standarderror)

Aufgabe

Wie viele Dateien und Ordner gibt es jeweils in /etc, /usr/lib, und /proc. Schickt mir die drei Zahlen als Privatnachricht.

Zusatz: wie viele Dateien, und wie viele Ordner gibt es jeweils an diesen Orten? Recherchiert in der man-Page zu find, wie sich das eingrenzen lässt.

Multitasking von Computern

CPU Interrupts Speicherschutz.svg

Aufgabe Pipelines

Berliner_Straßenverzeichnis.txt

Erzeugt aus dem Berliner Straßenverzeichnis eine Liste von Bezirksnamen.

Nutzt dazu die Programme cut, sort und tr. Schlagt in den jeweiligen man-Pages die Bedienung der Programme nach.

  • Schickt mir per Privatnachricht die Kommandozeile, die ihr zusammengestellt habt.
  • Wie viele Bezirke sind in der Datei verzeichnet?

Hinweise:

  1. Denkt daran, dass man Text durch mehrere Programme durchleiten kann. Das ist hier nötig!
  2. Ihr könnt ggf. auch das Programm uniq verwenden, braucht es aber theoretisch nicht.
  3. In diesem Datensatz kommen wir auch ohne tr aus.

Zusatz

Findet mit grep alle 634 "Plätze" in Berlin.

Zusatz Zusatz: aber nur die Plätze selbst. Z.B den Dianaplatz, aber nicht die Straße "Am Dianaplatz"

(hierzu sind keine komplexen Suchmuster nötig, grep bietet Optinonen, mit denen eine einfache Textsuche ausreicht)

Lösungen_Tag4.txt