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
Befehle / Programme
Dateien und Verzeichnisse
touch
- Datei erstellen, eigentlich "Änderungszeit" aktualisierencp
- Dateien kopieren "von" "nach", auch alscp -r
- "rekursiv", d.h. Verzeichniss mit Unterverzeichnissen, Unterunterverzeichnissen, usw.mv
- Verschieben "von" "nach"rm
,rm -r
- Entfernen von Dateien, "Rekursives" entfernenrmdir
- Entfernen von (leeren) Verzeichnissencat
- Dateien ausgeben, eigentlich concatenate: "Aneinanderhängen"mkdir
- Verzeichniss(e) erstellenls
- Verzeichnisinhalt auflisten, Meta-Informationen zu einer Datei/Verzeichnis anzeigenchmod
- "Change Modus", "Zugriffsmodus"/Berechtigungen einer Datei änderntree
- Verzeichnisbaum anzeigen (fancy)find
- Dateien suchen, eigentlich Dateibaum rekursiv ausgeben und filtern
Sonstige
echo
- Text ausgebenless
- Interaktive Dateianzeige - "pager", Tipp: drücke "/" für eine Sucheman
- "Manual"/Handbuchseiten anzeigen
Pipeline-"Atome"
sort
- Eingabe zeilenweise sortierenwc
- "Word Count", zählt die Anzahl von Zeilen, Worten und Zeichen in der Standardeingabecut
- extrahiert Teile aus einzelnen Textzeilentr
- "translate", wandelt einzelne Buchstaben in andere um, oder entfernt sie
Jobs / Prozesse
fg
(Builtin) Letzten Job im Vordergrund weiter ausführenbg
(Builtin) Letzten Job im Hintergrund weiter ausführenjobs
(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 Systemtop
,htop
- Interaktiver Prozessmonitorpstree
- Prozesshierarchie anzeigenkill
- "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ßerinit
, wurde von einem "Elternprozess" gestartetStandardeingabe / 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
Aufgabe Pipelines
Berliner_Straßenverzeichnis.txt
- Speichert das Berliner_Straßenverzeichnis.txt auf dem Linux-Rechner.
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:
- Denkt daran, dass man Text durch mehrere Programme durchleiten kann. Das ist hier nötig!
- Ihr könnt ggf. auch das Programm
uniq
verwenden, braucht es aber theoretisch nicht. - 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)