[html
-[head [title VHS Linuxkurs]]
+[head [title Linux für Anwendungsentwicklung]]
[body
- [footer Paul Hänsch | Linux Grundkurs | VHS Chemnitz]
+ [footer Paul Hänsch | Linux für Anwendungsentwicklung | damago GmbH]
[slide
- [h1 VHS Linux Grundkurs]
+ [h1 Linux für Anwendungsentwicklung]
]
[slide [h2 Dozent]
[ul
[li Paul Hänsch]
[li Seit 2012 freiberuflicher Programmierer]
[li Arbeit an und mit Freier Software (Open Source)]
- [li Kunden: Kinderzirkus, Physiotherapie, HTW, ...]
+ [li Kunden: Jugendclub, Kinderzirkus, Kulturserver, ...]
[li in der Vergangenheit: Free Software Foundation Europe]
+ [li Videopodcast: GNUfunzt! http://gnufunzt.de]
+ [li Kontakt: Paul.Haensch@damago.eu]
]
]
[slide [h2 Organisatorisches zum Kurs]
[ul
- [li Termine Mittwoch und Freitag]
- [li 17:00 bis 20:00 Uhr]
- [li nicht am 19.4. - Karfreitag]
- [li nicht am 1.5. - Tag der Arbeit]
- [li Letzter Termin 3.5. - Installparty]
+ [li 9 Termine]
+ [li 8:00 bis 15:15 Uhr]
+ [li Letzter Termin 3.5.]
+ [li Pausenzeiten?]
[li Themenübersicht - Nach der Einführung]
]
]
+[slide [h2 Vorstellungsrunde]
+ [ul
+ [li Wie seid ihr zu der Umschulung gekommen?]
+ [li Wie habt ihr bisher programmiert?]
+ [li Welches kleine Programm wolltet ihr immer schonmal schreiben?]
+ ]
+]
+
[slide [h1 Was ist ein Betriebssystem?] ]
[slide [h2 Was ist ein Betriebssystem?]
[li Zugriff auf Netzwerk]
[li Zuteilung von Rechenzeit (Task-Switching, Multitasking)]
[li Trennung von Applikationen (Virtualisierung)]
- [li Trennung von Benutzern, Zugriffssrechte]
+ [li Trennung von Benutzern, Zugriffsrechte]
[li [b Kontrolle dieser Funktionen über Dienstprogramme]]
]
]
[slide [h2 Was ist GNU?]
[ul .uncover
[li 1983 am durch Richard M. Stallman am MIT begonnen]
- [li Unix-Kompatibles Betriebssystem]
- [li Umfasst Unix-Dienstprogramme]
[li Auslöser war u.A. Missmut über Kopierschutzpraktiken]
[li Grundlage der Free Software Bewegung]
+ [li Unix-Kompatibles Betriebssystem]
+ [li Umfasst Unix-Dienstprogramme]
]
]
[li Systemstart]
[li Paketsysteme, Softwareinstallation, Systeminstallation]
[li Netzwerk, SSH]
- [li nach Wunsch Android, X11, Verschlüsselung, Internetdienste, Versionskontrolle, ...]
- [li Installparty]
+ [li [strike nach Wunsch Android, X11, Verschlüsselung, Internetdienste, Versionskontrolle, Gameserver,] ..., Scripting, Programmierunmgebungen, Webentwicklung]
+ [li [strike Installparty?] Ihr könnt eure eigenen Notebooks mitbringen.]
]
]
[slide [h2 Arbeit mit Dateien]
[pre
~$ ls -l datei1
- -rw-r--r-- 1 knoppix knoppix 0 Apr 10 02:13 datei1]
+ -rw-r--r-- 1 live live 0 Apr 10 02:13 datei1]
]
[slide [h2 Arbeit mit Dateien]
[slide [h2 Arbeit mit Dateien]
[pre
~$ ls -l datei1
- -rw-r--r-- 1 knoppix knoppix 12 Apr 10 02:13 datei1]
+ -rw-r--r-- 1 live live 12 Apr 10 02:13 datei1]
]
[slide [h2 Arbeit mit Dateien]
~$ ls
datei1
~$ ls -l datei1
- -rw-r--r-- 1 knoppix knoppix 0 Apr 10 02:13 datei1
+ -rw-r--r-- 1 live live 0 Apr 10 02:13 datei1
~$ echo "Hallo Welt!" > datei1
~$ ls -l datei1
- -rw-r--r-- 1 knoppix knoppix 12 Apr 10 02:13 datei1
+ -rw-r--r-- 1 live live 12 Apr 10 02:13 datei1
~$ cat datei1
Hallo Welt!
~$ _
]
[slide [h2 Arbeit mit Dateien]
- [pre ~$ ls -l /boot/vmlinuz-4.16.5-64]
+ [pre
+ ~$ ls -l /bin/bash
+ -rwxr-xr-x 1 root root 1168776 Apr 18 06:12 /bin/bash]
]
[slide [h2 Arbeit mit Dateien]
- [pre ~$ ls -l -h /boot/vmlinuz-4.16.5-64]
+ [pre ~$ ls -l -h /bin/bash]
]
[slide [h2 Arbeit mit Dateien]
- [pre -rw-r--r-- 1 root root 6.4M Apr 30 2018 /boot/vmlinuz-4.16.5-64]
+ [pre -rwxr-xr-x 1 root root 1.2M Apr 18 06:12 /bin/bash]
]
[slide [h2 Zusammenfassung]
[slide [h2 Zugriffsrechte]
[pre ~$ ls -l datei1]
- [pre -rw-r--r-- 1 knoppix knoppix 12 Apr 10 02:13 datei1]
+ [pre -rw-r--r-- 1 live live 12 Apr 10 02:13 datei1]
[table style="width: 85%;"
[tr [th Typ] [th Eigentümer] [th Gruppe] [th Andere]]
[tr [td [pre -]] [td [pre rw-]] [td [pre r--]] [td [pre r--]]]
[pre
~$ chmod u-r datei1
~$ ls -l datei1]
- [pre --w-r--r-- 1 knoppix knoppix 12 Apr 10 02:13 datei1]
+ [pre --w-r--r-- 1 live live 12 Apr 10 02:13 datei1]
[table style="width: 85%;"
[tr [th Typ] [th Eigentümer] [th Gruppe] [th Andere]]
[tr [td [pre -]] [td [pre -w-]] [td [pre r--]] [td [pre r--]]]
Hallo Welt!]
]
-[slide [h2 Zugriffsrechte]
+[slide [h2 Zugriffsrechte - Gruppen]
[pre
~$ groups
- knoppix disk dialout fax voice cdrom floppy tape sudo
- audio dip backend video plugdev users fuse netdev
- lpadmin partimag powerdev scanner gnokii debian-tor
- x2gousers kismet]
+ live sudo video input]
]
-[slide [h2 Zugriffsrechte]
+[slide [h2 Zugriffsrechte - Gruppen]
[pre
- ~$ chgrp users datei1
+ ~$ chgrp video datei1
~$ ls -l datei1
- -rw-r--r-- 1 knoppix users 12 Apr 10 02:13 datei1]
+ -rw-r--r-- 1 live video 12 Apr 10 02:13 datei1]
+]
+
+[slide [h1 Navigation im Dateisystem]]
+
+[slide [h2 Navigation im Dateisystem]
+ [pre
+ ~$ pwd
+ /home/live]
+]
+
+[slide [h2 Navigation im Dateisystem]
+ [pre
+ ~$ cd .
+ ~$ pwd
+ /home/live]
+]
+
+[slide [h2 Navigation im Dateisystem]
+ [pre
+ ~$ cd ..
+ ~$ pwd
+ /home]
+]
+
+[slide [h2 Navigation im Dateisystem]
+ [pre
+ ~$ cd ..
+ ~$ pwd
+ /
+ ~$ ls
+ bin etc media proc sys var boot home mnt
+ root tmp dev lib opt sbin usr]
+]
+
+[slide [h2 Navigation im Dateisystem]
+ [div
+ [pre ~$ ls bin]
+ [pre ~$ ls etc]
+ [pre ~$ ls dev]
+ ]
+]
+
+[slide [h2 Navigation im Dateisystem]
+ [ul .uncover
+ [li Dateipfade können [em absolut] oder [em relativ] sein]
+ [li Absolute Pfade beginnen immer mit einem Slash (Schrägstrich)]
+ [li [pre /bin/bash]
+ [pre /home/live/datei1]]
+ [li Relative Pfade beginnen niemals mit einem Schrägstrich]
+ [li [pre bash]
+ [pre live/datei1]]
+ [li Relative Pfade bezeichenen einen Ort Abhängig vom Arbeitsverzeichnis (pwd)]
+ ]
+]
+
+[slide [h2 Navigation im Dateisystem]
+ [ul .uncover
+ Weitere Pfade:
+ [li [pre /home/live/../live/../live]]
+ [li [pre /./bin/./]]
+ ]
+]
+
+[slide [h2 Systemordner in Unix]
+ [ul
+ [li [strong /bin] enthält ausführbare Programme]
+ [li [strong /boot] enthält den Systemkernel und Dateien, die damit unmittelbar in Zusammenhang stehen]
+ [li [strong /etc] enthält systemweite Konfigurationsdateien]
+ [li [strong /home] enthält Heimverzeichnisse der Benutzer]
+ [li [strong /lib] enthält sogenannte Softwarebibliotheken]
+ [li [strong /media] wird benutzt um temporäre Medien wie CDs und USB-Sticks abzubilden]
+ [li [strong /var] enthält Dateien, die sich ohne Handlung des Benutzers im regulären Betrieb verändern (z.B. Logbücher)]
+ [li [strong /usr] enthält weitere /bin und /lib Verzeichnisse für weniger grundlegende Programme]
+ ]
+]
+
+[slide [h2 Systemordner in Unix]
+ [ul .uncover
+ [li [strong /dev] enthält Geräte]
+ [li [strong /proc] enthält Prozesse]
+ [li [strong /sys] enthält Treiberschnittstellen]
+ [p style="text-align: center; margin: .5em; font-size: 1.5em" Everything is a File!]
+ ]
+]
+
+[slide [h2 Zusammenfassung]
+ [ul .uncover
+ [li Einführung, Historie]
+ [li Dateien: touch, ls, cat]
+ [li Berechtigungen: chmod, groups, chgrp]
+ [li Navigation: cd, pwd]
+ [li Absolute Pfade, Relative Pfade]
+ [li Ordnerstrukturen]
+ ]
+]
+
+[slide [h1 Syntax der Kommandozeile]]
+
+[slide [h2 Syntax der Kommandozeile]
+ [pre ~$ echo Hallo Welt]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [ul .uncover
+ [li [pre ~$ echo Hallo Welt]]
+ [li [pre Hallo Welt]]
+ [li [pre ~$ echo Hallo Welt]]
+ [li [pre Hallo Welt]]
+ [li [pre ~$ echo "Hallo Welt"]]
+ [li [pre Hallo Welt]]
+ ]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [ul .uncover
+ [li [pre ~$ echo Hallo Welt]
+ [pre ~$ echo Hallo Welt]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl / Programm] [th Parameter 1] [th Parameter 2]
+ ][tr
+ [th ~$] [td [pre echo]] [td [pre Hallo]] [td [pre Welt]]
+ ]
+ ]]
+ [li [pre ~$ echo "Hallo Welt"]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl / Programm] [th Parameter 1]
+ ][tr
+ [th ~$] [td [pre echo]] [td [pre Hallo Welt]]
+ ]
+ ]]
+ ]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [h3 [u Ein] Parameter:]
+ [pre ~$ echo "Hallo Welt"]
+ [pre ~$ echo Hallo" "Welt]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl] [th Parameter 1]
+ ][tr
+ [th ~$] [td [pre echo]] [td [pre Hallo Welt]]
+ ]
+ ]
+]
+[slide [h2 Syntax der Kommandozeile]
+ [h3 [u Drei] Parameter]
+ [pre ~$ echo Hallo " " Welt]
+ [pre ~$ echo "Hallo" " " "Welt"]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl] [th Parameter 1] [th Parameter 2] [th Parameter 3]
+ ][tr
+ [th ~$] [td [pre echo]] [td [pre Hallo]] [td [pre ]] [td [pre Welt]]
+ ]
+ ]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [h3 Folie vom ersten Kurstag:]
+ [pre ~$ echo "Hallo Welt!" \> datei1]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [ul
+ [h3 Folie vom ersten Kurstag:]
+ [li mit [pre echo] können wir text [strike in eine Datei schreiben] [ul
+ [li [strong Eigentlich nur ausgeben!]]
+ ]]
+ ]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl] [th Parameter 1] [th Umleitung] [th Ziel der Umleitung]
+ ][tr
+ [th ~$] [td [pre echo]] [td [pre Hallo Welt!]] [td \>] [td datei1]
+ ]
+ ]
+]
+
+[slide [h2 Syntax der Kommandozeile]
+ [ul .uncover
+ [li style="margin-top: 1em;" [pre ~$ echo "Hallo Welt!" > datei1]]
+ [li style="margin-top: 1em;" [pre ~$ ls -l > datei1]]
+ [li style="margin-top: 1em;" [pre ~$ cat datei1 > datei2]]
+ [li style="margin-top: 1em;" [strong Shellkommandos sind eine Sprache!]]
+ ]
+]
+
+[slide [h1 Arbeit mit Dateien und Pfaden]]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [ul .uncover
+ [li [pre ~$ touch datei1 datei2 datei3]]
+ [li [pre ~$ mkdir ordner1 ordner2]]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [ul .uncover
+ [li [pre ~$ mv datei1 ordner1]]
+ [li [pre ~$ mv datei2 datei3 ordner2]]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl] [th Parameter 1] [th Parameter 2]
+ ][tr
+ [th ~$] [td [pre mv]] [td [pre datei1]] [td [pre ordner1]]
+ ]
+ ]
+ [table width="85%"
+ [tr
+ [th Shellprompt] [th Befehl] [th Parameter 1] [th Parameter 2] [th Parameter 3]
+ ][tr
+ [th ~$] [td [pre mv]] [td [pre datei2]] [td [pre datei3]] [td [pre ordner2]]
+ ]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [ul .uncover
+ [li [pre ~$ ls ordner1]]
+ [li [pre ~$ cd ordner1]]
+ [li [pre ~/ordner1$ ls]]
+ [li [pre ~/ordner1$ ls ordner1 ]]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [ul
+ [li [pre ~$ ls ordner1]]
+ [li [pre ~$ cd ordner1]]
+ [li [pre ~/ordner1$ ls]]
+ [li [pre ~/ordner1$ ls ordner1]]
+ [li Wir sind [strong in] [em ordner1], dieser Ordner enthält nicht seinerseits einen [em ordner1]]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre ~/ordner1$ ls /home/live/ordner1]
+ funktioniert immer =\> absoluter Pfad
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [ul
+ [li Relativer Pfad: [pre ~/ordner1$ ls ../ordner2]]
+ [li Absoluter Pfad: [pre ~/ordner1$ ls /home/live/ordner2]]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre ~/ordner1$ cp datei1 "Name mit Leerzeichen"]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [ul .uncover
+ [li [pre ~/ordner1$ mv "Name mit Leerzeichen" Name_ohne_Leerzeichen]]
+ [li auch möglich:
+ [pre ~/ordner1$ mv Name\\ mit\\ Leerzeichen Name_ohne_Leerzeichen]]
+ ]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~/ordner1$ mv Name_ohne_Leerzeichen ..
+ ~/ordner1$ mv ../Name_ohne_Leerzeichen .]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~/ordner1$ mv ../ordner2/datei2 .
+ ~/ordner1$ mv /home/live/ordner2/datei3 .]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~/ordner1$ cd /home/live
+ ~$ rmdir ordner2]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~$ rmdir ordner1]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~$ rm ordner1]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~$ rm ordner1/datei2]
+]
+
+[slide [h2 Arbeit mit Dateien und Pfaden]
+ [pre
+ ~$ rm -r ordner1/]
+]
+
+[slide [h2 Zusammenfassung]
+ [ul .uncover
+ [h3 Shellsyntax]
+ [li Die Shell erlaubt es Instruktionen zu beschreiben]
+ [li mit \> kann jede Programmausgabe in eine Datei geleitet werden]
+ [li Die Fähigkeiten von Programmen sind so erweiterbar]
+ ]
+]
+
+[slide [h2 Zusammenfassung]
+ [ul .uncover
+ [h3 Pfade]
+ [li Einige Programme nehmen Pfade als Parameter an]
+ [li Pfade können nach Belieben absolut oder relativ sein]
+ [li Pfade mit Leerzeichen werden in Anführungszeichen gefasst, damit sie als einzelne Parameter gelten]
+ [li [strong Kommandos:] mkdir, cp, mv, rmdir, rm, rm -r]
+ ]
+]
+
+[slide [h2 Daran denken:]
+ [ul
+ [li Anwesenheitsliste?]
+ ]
]
]]