[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: Jugendclub, 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@plutz.net]
+ [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]]
]
]
[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
- -rw-r--r-- 1 root root 6673264 Apr 30 2018 /boot/vmlinuz-4.16.5-64]
+ ~$ 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--]]]
[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 - 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/knoppix]
+ /home/live]
]
[slide [h2 Navigation im Dateisystem]
[pre
~$ cd .
~$ pwd
- /home/knoppix]
+ /home/live]
]
[slide [h2 Navigation im Dateisystem]
[slide [h2 Navigation im Dateisystem]
[div
[pre ~$ ls bin]
- [pre ~$ ls boot]
+ [pre ~$ ls etc]
[pre ~$ ls dev]
]
]
[ul .uncover
[li Dateipfade können [em absolut] oder [em relativ] sein]
[li Absolute Pfade beginnen immer mit einem Slash (Schrägstrich)]
- [li [pre /boot/vmlinuz-4.16.5-64]
- [pre /home/knoppix/datei1]]
+ [li [pre /bin/bash]
+ [pre /home/live/datei1]]
[li Relative Pfade beginnen niemals mit einem Schrägstrich]
- [li [pre vmlinuz-4.16.5-64]
- [pre knoppix/datei1]]
+ [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/knoppix/../knoppix/../knoppix]]
- [li [pre /./boot/./]]
+ [li [pre /home/live/../live/../live]]
+ [li [pre /./bin/./]]
]
]
]
]
-[slide [h1 Mehr dazu nächstes mal!]]
-
[slide [h2 Zusammenfassung]
[ul .uncover
[li Einführung, Historie]
]
]
+[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]
- [li Lehrnachweis]
- [li nächster Termin: Freitag]
+ [li Anwesenheitsliste?]
]
]