[li Paul Hänsch]
[li Seit 2012 freiberuflicher Programmierer]
[li Arbeit an und mit Freier Software (Open Source)]
- [li Kunden: Jugendclub, Kinderzirkus, Kulturserver, ...]
- [li in der Vergangenheit: Free Software Foundation Europe]
+ [li Kunden: Denkmalstiftung, Kinderzirkus, ...]
+ [li in der Vergangenheit: Free Software Foundation Europe, Jugendclub, Kulturserver]
[li Videopodcast: GNUfunzt! http://gnufunzt.de]
[li Kontakt: Paul.Haensch@damago.eu]
]
]
[slide [h2 Organisatorisches zum Kurs]
[ul
- [li 9 Termine]
+ [li 19 Termine]
+ [li Feiertag am 3. Oktober]
[li 8:00 bis 15:15 Uhr]
- [li Letzter Termin 3.5.]
- [li Pausenzeiten?]
+ [li Letzter Termin 11.10. [ul
+ [li Danach: eine Woche Prüfungsvorbereitung]]]
+ [li Pausenzeiten [ul
+ [li ca. 9:30 - 10:00 Uhr: Frühstückspause]
+ [li ca. 12:30 - 13:15 Uhr: Mittagspause]
+ ]]
[li Themenübersicht - Nach der Einführung]
]
]
]
[slide [h2 Was ist Unix?]
- [ul .uncover
- [li 1969 von an den Bell Labs für PDP-7 konzipiert]
+ [img src="Thompson_Ritchie.jpg" style="max-width: 40%; max-height: 80vh;"]
+ [ul style="display: inline-block; vertical-align:top;"
+ [li 1969 von an den Bell Labs für [a href="https://en.wikipedia.org/wiki/PDP-7" PDP-7] konzipiert]
[li Von "C"-Erfinder Dennis Ritchie und Ken Thompson]
[li Entworfen um "Space Travel"-Spiel als Anwendung]
[li Schafft grundlegenden Aufbau für Beriebssysteme]
]
[slide [h2 Was ist GNU?]
- [ul .uncover
+ [img src="Stallman.jpg" style="max-width: 40%; max-height: 80vh;"]
+ [ul style="display: inline-block; vertical-align:top;"
[li 1983 am durch Richard M. Stallman am MIT begonnen]
[li Auslöser war u.A. Missmut über Kopierschutzpraktiken]
[li Grundlage der Free Software Bewegung]
]
[slide [h2 Was ist Linux?]
- [ul .uncover
+ [ul style="display: inline-block; vertical-align:top;"
[li 1991 durch Linus Torvalds an der Uni Helsinki begonnen]
[li Unix-Kompatibler Betriebssystem-[em Kernel]]
[li Lauffähig mit GNU-Dienstprogrammen]
[p style="text-align: center; font-size: 2em; line-height: 1.25em;" GNU + Linux]
]
+ [img src="Torvalds.jpg" style="max-width: 40%; max-height: 80vh;"]
]
[slide [h2 Was ist eine Distribution?]
[slide [h2 Beispiele für Distributionen]
[ul
- [li Ubuntu - Kommerzielle Distribution basierend auf Debian]
- [li Debian - Frühe Distribution mit Online-Paketsystem]
- [li Gentoo - Zusammenstellung von Quellcode zum selbst anpassen]
- [li Arch - Verbreitete Distribution mit eigenem Paketsystem]
- [li Knoppix - Debian basiertes Live-System]
- [li Fedora, RedHat, Suse, Parabola, Puppy, Rebecca Black, ...]
+ [li [img src="Ubuntu.png" style="height:1em;"] Ubuntu - Kommerzielle Distribution basierend auf Debian]
+ [li [img src="Debian.png" style="height:1em;"] Debian - Frühe Distribution mit Online-Paketsystem]
+ [li [img src="Gentoo.png" style="height:1em;"] Gentoo - Zusammenstellung von Quellcode zum selbst anpassen]
+ [li [img src="Archlinux.png" style="height:1em;"]Arch - Verbreitete Distribution mit eigenem Paketsystem]
+ [li [img src="Knoppix.png" style="height:1em;"] Knoppix - Debian basiertes Live-System]
+ [li [img src="Fedora.png" style="height:1em;"] Fedora, [img src="RedHat.png" style="height:1em;"] RedHat, [img src="Suse.png" style="height:1em;"] Suse, Parabola, Puppy, Rebecca Black, ...]
[li Tausende weitere]
]
]
[li Paketsysteme, Softwareinstallation, Systeminstallation]
[li Netzwerk, SSH]
[li [strike nach Wunsch Android, X11, Verschlüsselung, Internetdienste, Versionskontrolle, Gameserver,] ..., Scripting, Programmierunmgebungen, Webentwicklung]
- [li [strike Installparty?] Ihr könnt eure eigenen Notebooks mitbringen.]
+ [li [strike Installparty?]]
+ [li [a href="https://www.lpi.org/de/exam-010-objectives/" Lernziele LPI]]
]
]
]
]
-[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?]
- ]
-]
-
]]
[body
[footer Paul Hänsch | Linux für Anwendungsentwicklung | damago GmbH]
-[slide
- [h1 Linux für Anwendungsentwicklung - Teil 2]
+[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 [h2 Themen]
+[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 style="list-style-type: disclosure-closed;" [pre Hallo Welt]]
+ [li [pre ~$ echo Hallo Welt]]
+ [li style="list-style-type: disclosure-closed;" [pre Hallo Welt]]
+ [li [pre ~$ echo "Hallo Welt"]]
+ [li style="list-style-type: disclosure-closed;" [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
- [li Datenträger und Dateisysteme]
+ [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 Organisatorisches zum Kurs]
+[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
+ [h1 Linux für Anwendungsentwicklung - Teil 2]
+]
+
+[slide [h2 Themen]
[ul
- [li Pausenzeiten?]
+ [li Datenträger und Dateisysteme]
]
]