2 [head [title Linux für Anwendungsentwicklung]]
4 [footer Paul Hänsch | Linux für Anwendungsentwicklung | damago GmbH]
6 [h1 Linux für Anwendungsentwicklung]
11 [li Seit 2012 freiberuflicher Programmierer]
12 [li Arbeit an und mit Freier Software (Open Source)]
13 [li Kunden: Jugendclub, Kinderzirkus, Kulturserver, ...]
14 [li in der Vergangenheit: Free Software Foundation Europe]
15 [li Videopodcast: GNUfunzt! http://gnufunzt.de]
16 [li Kontakt: Paul.Haensch@damago.eu]
19 [slide [h2 Organisatorisches zum Kurs]
22 [li 8:00 bis 15:15 Uhr]
23 [li Letzter Termin 3.5.]
25 [li Themenübersicht - Nach der Einführung]
28 [slide [h2 Vorstellungsrunde]
30 [li Wie seid ihr zu der Umschulung gekommen?]
31 [li Wie habt ihr bisher programmiert?]
32 [li Welches kleine Programm wolltet ihr immer schonmal schreiben?]
36 [slide [h1 Was ist ein Betriebssystem?] ]
38 [slide [h2 Was ist ein Betriebssystem?]
40 [li Unterscheidung: Anwendungsprogramm, "App"]
41 [li idR. nicht selbst als "Programm" bezeichnet]
42 [li Läuft vom Start bis zum Halt des Computers]
43 [li Für Benutzer mehr oder weniger unsichtbar]
44 [li Stellt Funktionen für Programme Bereit]
48 [slide [h2 Funktionen eines Betriebssystems]
50 [li Einheitlicher Zugriff auf Hardware (Treiber)]
51 [li Organisation von Dateien]
52 [li Zugriff auf Netzwerk]
53 [li Zuteilung von Rechenzeit (Task-Switching, Multitasking)]
54 [li Trennung von Applikationen (Virtualisierung)]
55 [li Trennung von Benutzern, Zugriffsrechte]
56 [li [b Kontrolle dieser Funktionen über Dienstprogramme]]
61 [p style="text-align: center; font-size: 3em; line-height: 1.25em;"
62 [sup [b GNU]] [sub Desktop] [sup [i Unix]] [br]
63 [sub [u Ubuntu]] [sup [b Linux]] [sub Distribution]
64 [sub Gnome] [sup Knoppix]
68 [slide [h2 Was ist Unix?]
70 [li 1969 von an den Bell Labs für PDP-7 konzipiert]
71 [li Von "C"-Erfinder Dennis Ritchie und Ken Thompson]
72 [li Entworfen um "Space Travel"-Spiel als Anwendung]
73 [li Schafft grundlegenden Aufbau für Beriebssysteme]
74 [li Von Bell an kommerzielle Computerhersteller lizensiert]
78 [slide [h2 Was ist GNU?]
86 [slide [h2 Was ist GNU?]
88 [li 1983 am durch Richard M. Stallman am MIT begonnen]
89 [li Auslöser war u.A. Missmut über Kopierschutzpraktiken]
90 [li Grundlage der Free Software Bewegung]
91 [li Unix-Kompatibles Betriebssystem]
92 [li Umfasst Unix-Dienstprogramme]
96 [slide [h2 Was ist Freie Software?]
99 [li [b Verwenden:] das Programm für jeglichen Zweck ausführen]
100 [li [b Verstehen:] die Funktionsweise des Programms untersuchen und eigenen Bedürfnissen anpassen]
101 [li [b Verbreiten:] das Programm weitergeben]
102 [li [b Verbessern:] das Programm verbessern und diese Verbesserungen der Öffentlichkeit freigeben]
106 [slide [h2 Was ist Linux?]
108 [li 1991 durch Linus Torvalds an der Uni Helsinki begonnen]
109 [li Unix-Kompatibler Betriebssystem-[em Kernel]]
110 [li Lauffähig mit GNU-Dienstprogrammen]
111 [p style="text-align: center; font-size: 2em; line-height: 1.25em;" GNU + Linux]
115 [slide [h2 Was ist eine Distribution?]
117 [li Linux-Kernel ist ein eigenes Softwareprojekt]
118 [li GNU ist ein eigenes Softwareprojekt]
119 [li Grafische Bedienoerflächen sind unabhängig davon]
120 [li Anwendungsprogramme sind eigenständige Projekte]
121 [li "Distributor" stellt Softwarepakete zusammen]
122 [li Softwarekomponenten werden angepasst um miteinander kompatibel zu sein]
123 [li Software wird für Computerarchitekturen "kompiliert"]
127 [slide [h2 Beispiele für Distributionen]
129 [li Ubuntu - Kommerzielle Distribution basierend auf Debian]
130 [li Debian - Frühe Distribution mit Online-Paketsystem]
131 [li Gentoo - Zusammenstellung von Quellcode zum selbst anpassen]
132 [li Arch - Verbreitete Distribution mit eigenem Paketsystem]
133 [li Knoppix - Debian basiertes Live-System]
134 [li Fedora, RedHat, Suse, Parabola, Puppy, Rebecca Black, ...]
135 [li Tausende weitere]
139 [slide [h2 Desktopumgebungen]
140 Grafische Bedienoberflächen können sehr unterschiedlich aussehen
146 [li Maté, i3, Awesome, WindowMaker, LXQT, Enlightenment, usw...]
147 [li Unterscheidung: Window Manager, Toolkit, Softwaresuite]
151 [slide [h2 Weitere Begriffe]
153 [li [b Android:] anderes Betriebssystem mit Linux-Kernel]
154 [li [b BSD:] Berkeley Software Distribution, anderes Freies Unix]
155 [li [b Busybox:] andere Suite von Unix-Dienstprogrammen]
159 [slide [h1 Themenübersicht]]
161 [slide [h2 Themen Tag 1]
163 [li Arbeit mit Dateien]
164 [li Etwas Kommandozeile]
166 [li Benutzer, Gruppen]
167 [li Ordnerstrukturen]
171 [slide [h2 Weitere Themen]
173 [li Prozessmanagement]
174 [li Vertiefung Kommandozeile, Shellscripting]
175 [li Datenträger, Dateisysteme, Partitionen]
177 [li Paketsysteme, Softwareinstallation, Systeminstallation]
179 [li [strike nach Wunsch Android, X11, Verschlüsselung, Internetdienste, Versionskontrolle, Gameserver,] ..., Scripting, Programmierunmgebungen, Webentwicklung]
180 [li [strike Installparty?] Ihr könnt eure eigenen Notebooks mitbringen.]
184 [slide [h1 Arbeit mit Dateien]
188 [slide [h2 Arbeit mit Dateien]
189 [pre ~$ touch datei1]
192 [slide [h2 Arbeit mit Dateien]
196 [slide [h2 Arbeit mit Dateien]
199 -rw-r--r-- 1 live live 0 Apr 10 02:13 datei1]
202 [slide [h2 Arbeit mit Dateien]
203 [pre ~$ echo "Hallo Welt!" \> datei1]
206 [slide [h2 Arbeit mit Dateien]
209 -rw-r--r-- 1 live live 12 Apr 10 02:13 datei1]
212 [slide [h2 Arbeit mit Dateien]
216 [slide [h2 Arbeit mit Dateien]
217 [pre style="font-size: .75em; line-height: 1.5em;"
222 -rw-r--r-- 1 live live 0 Apr 10 02:13 datei1
223 ~$ echo "Hallo Welt!" > datei1
225 -rw-r--r-- 1 live live 12 Apr 10 02:13 datei1
232 [slide [h2 Arbeit mit Dateien]
235 -rwxr-xr-x 1 root root 1168776 Apr 18 06:12 /bin/bash]
238 [slide [h2 Arbeit mit Dateien]
239 [pre ~$ ls -l -h /bin/bash]
242 [slide [h2 Arbeit mit Dateien]
243 [pre -rwxr-xr-x 1 root root 1.2M Apr 18 06:12 /bin/bash]
246 [slide [h2 Zusammenfassung]
248 [li [pre touch] legt eine Datei an]
249 [li [pre ls] zeigt Informationen über eine Datei]
253 [slide [h2 Zusammenfassung]
255 [li Kommandos lassen sich parametrisieren, z.B. [pre ls -l] und [pre ls -h]]
259 [slide [h2 Zusammenfassung]
261 [li mit [pre echo] können wir text [strike in eine Datei schreiben] [ul .uncover
262 [li [strong Eigentlich nur ausgeben!]]
267 [slide [h2 Zusammenfassung]
269 [li [pre cat] zeigt den Inhalt von Dateien an]
273 [slide [h2 Zusammenfassung]
281 [slide [h1 Zugriffsrechte]]
283 [slide [h2 Zugriffsrechte]
284 [pre ~$ ls -l datei1]
285 [pre -rw-r--r-- 1 live live 12 Apr 10 02:13 datei1]
286 [table style="width: 85%;"
287 [tr [th Typ] [th Eigentümer] [th Gruppe] [th Andere]]
288 [tr [td [pre -]] [td [pre rw-]] [td [pre r--]] [td [pre r--]]]
292 [slide [h2 Zugriffsrechte]
293 [pre ~$ ls -l /bin/cat]
294 [pre -rwxr-xr-x 1 root root 34676 Feb 22 2017 /bin/cat]
295 [table style="width: 85%;"
296 [tr [th Typ] [th Eigentümer (root)] [th Gruppe (root)] [th Andere]]
297 [tr [td [pre -]] [td [pre rwx]] [td [pre r-x]] [td [pre r-x]]]
301 [slide [h2 Zugriffsrechte]
305 [pre --w-r--r-- 1 live live 12 Apr 10 02:13 datei1]
306 [table style="width: 85%;"
307 [tr [th Typ] [th Eigentümer] [th Gruppe] [th Andere]]
308 [tr [td [pre -]] [td [pre -w-]] [td [pre r--]] [td [pre r--]]]
312 [slide [h2 Zugriffsrechte]
315 cat: datei1: Keine Berechtigung]
318 [slide [h2 Zugriffsrechte]
325 [slide [h2 Zugriffsrechte - Gruppen]
328 live sudo video input]
331 [slide [h2 Zugriffsrechte - Gruppen]
333 ~$ chgrp video datei1
335 -rw-r--r-- 1 live video 12 Apr 10 02:13 datei1]
338 [slide [h1 Navigation im Dateisystem]]
340 [slide [h2 Navigation im Dateisystem]
346 [slide [h2 Navigation im Dateisystem]
353 [slide [h2 Navigation im Dateisystem]
360 [slide [h2 Navigation im Dateisystem]
366 bin etc media proc sys var boot home mnt
367 root tmp dev lib opt sbin usr]
370 [slide [h2 Navigation im Dateisystem]
378 [slide [h2 Navigation im Dateisystem]
380 [li Dateipfade können [em absolut] oder [em relativ] sein]
381 [li Absolute Pfade beginnen immer mit einem Slash (Schrägstrich)]
383 [pre /home/live/datei1]]
384 [li Relative Pfade beginnen niemals mit einem Schrägstrich]
387 [li Relative Pfade bezeichenen einen Ort Abhängig vom Arbeitsverzeichnis (pwd)]
391 [slide [h2 Navigation im Dateisystem]
394 [li [pre /home/live/../live/../live]]
399 [slide [h2 Systemordner in Unix]
401 [li [strong /bin] enthält ausführbare Programme]
402 [li [strong /boot] enthält den Systemkernel und Dateien, die damit unmittelbar in Zusammenhang stehen]
403 [li [strong /etc] enthält systemweite Konfigurationsdateien]
404 [li [strong /home] enthält Heimverzeichnisse der Benutzer]
405 [li [strong /lib] enthält sogenannte Softwarebibliotheken]
406 [li [strong /media] wird benutzt um temporäre Medien wie CDs und USB-Sticks abzubilden]
407 [li [strong /var] enthält Dateien, die sich ohne Handlung des Benutzers im regulären Betrieb verändern (z.B. Logbücher)]
408 [li [strong /usr] enthält weitere /bin und /lib Verzeichnisse für weniger grundlegende Programme]
412 [slide [h2 Systemordner in Unix]
414 [li [strong /dev] enthält Geräte]
415 [li [strong /proc] enthält Prozesse]
416 [li [strong /sys] enthält Treiberschnittstellen]
417 [p style="text-align: center; margin: .5em; font-size: 1.5em" Everything is a File!]
421 [slide [h2 Zusammenfassung]
423 [li Einführung, Historie]
424 [li Dateien: touch, ls, cat]
425 [li Berechtigungen: chmod, groups, chgrp]
426 [li Navigation: cd, pwd]
427 [li Absolute Pfade, Relative Pfade]
428 [li Ordnerstrukturen]
432 [slide [h1 Syntax der Kommandozeile]]
434 [slide [h2 Syntax der Kommandozeile]
435 [pre ~$ echo Hallo Welt]
438 [slide [h2 Syntax der Kommandozeile]
440 [li [pre ~$ echo Hallo Welt]]
441 [li [pre Hallo Welt]]
442 [li [pre ~$ echo Hallo Welt]]
443 [li [pre Hallo Welt]]
444 [li [pre ~$ echo "Hallo Welt"]]
445 [li [pre Hallo Welt]]
449 [slide [h2 Syntax der Kommandozeile]
451 [li [pre ~$ echo Hallo Welt]
452 [pre ~$ echo Hallo Welt]
455 [th Shellprompt] [th Befehl / Programm] [th Parameter 1] [th Parameter 2]
457 [th ~$] [td [pre echo]] [td [pre Hallo]] [td [pre Welt]]
460 [li [pre ~$ echo "Hallo Welt"]
463 [th Shellprompt] [th Befehl / Programm] [th Parameter 1]
465 [th ~$] [td [pre echo]] [td [pre Hallo Welt]]
471 [slide [h2 Syntax der Kommandozeile]
472 [h3 [u Ein] Parameter:]
473 [pre ~$ echo "Hallo Welt"]
474 [pre ~$ echo Hallo" "Welt]
477 [th Shellprompt] [th Befehl] [th Parameter 1]
479 [th ~$] [td [pre echo]] [td [pre Hallo Welt]]
483 [slide [h2 Syntax der Kommandozeile]
484 [h3 [u Drei] Parameter]
485 [pre ~$ echo Hallo " " Welt]
486 [pre ~$ echo "Hallo" " " "Welt"]
489 [th Shellprompt] [th Befehl] [th Parameter 1] [th Parameter 2] [th Parameter 3]
491 [th ~$] [td [pre echo]] [td [pre Hallo]] [td [pre ]] [td [pre Welt]]
496 [slide [h2 Syntax der Kommandozeile]
497 [h3 Folie vom ersten Kurstag:]
498 [pre ~$ echo "Hallo Welt!" \> datei1]
501 [slide [h2 Syntax der Kommandozeile]
503 [h3 Folie vom ersten Kurstag:]
504 [li mit [pre echo] können wir text [strike in eine Datei schreiben] [ul
505 [li [strong Eigentlich nur ausgeben!]]
510 [slide [h2 Syntax der Kommandozeile]
513 [th Shellprompt] [th Befehl] [th Parameter 1] [th Umleitung] [th Ziel der Umleitung]
515 [th ~$] [td [pre echo]] [td [pre Hallo Welt!]] [td \>] [td datei1]
520 [slide [h2 Syntax der Kommandozeile]
522 [li style="margin-top: 1em;" [pre ~$ echo "Hallo Welt!" > datei1]]
523 [li style="margin-top: 1em;" [pre ~$ ls -l > datei1]]
524 [li style="margin-top: 1em;" [pre ~$ cat datei1 > datei2]]
525 [li style="margin-top: 1em;" [strong Shellkommandos sind eine Sprache!]]
529 [slide [h1 Arbeit mit Dateien und Pfaden]]
531 [slide [h2 Arbeit mit Dateien und Pfaden]
533 [li [pre ~$ touch datei1 datei2 datei3]]
534 [li [pre ~$ mkdir ordner1 ordner2]]
538 [slide [h2 Arbeit mit Dateien und Pfaden]
540 [li [pre ~$ mv datei1 ordner1]]
541 [li [pre ~$ mv datei2 datei3 ordner2]]
545 [slide [h2 Arbeit mit Dateien und Pfaden]
548 [th Shellprompt] [th Befehl] [th Parameter 1] [th Parameter 2]
550 [th ~$] [td [pre mv]] [td [pre datei1]] [td [pre ordner1]]
555 [th Shellprompt] [th Befehl] [th Parameter 1] [th Parameter 2] [th Parameter 3]
557 [th ~$] [td [pre mv]] [td [pre datei2]] [td [pre datei3]] [td [pre ordner2]]
562 [slide [h2 Arbeit mit Dateien und Pfaden]
564 [li [pre ~$ ls ordner1]]
565 [li [pre ~$ cd ordner1]]
566 [li [pre ~/ordner1$ ls]]
567 [li [pre ~/ordner1$ ls ordner1 ]]
571 [slide [h2 Arbeit mit Dateien und Pfaden]
573 [li [pre ~$ ls ordner1]]
574 [li [pre ~$ cd ordner1]]
575 [li [pre ~/ordner1$ ls]]
576 [li [pre ~/ordner1$ ls ordner1]]
577 [li Wir sind [strong in] [em ordner1], dieser Ordner enthält nicht seinerseits einen [em ordner1]]
581 [slide [h2 Arbeit mit Dateien und Pfaden]
582 [pre ~/ordner1$ ls /home/live/ordner1]
583 funktioniert immer =\> absoluter Pfad
586 [slide [h2 Arbeit mit Dateien und Pfaden]
588 [li Relativer Pfad: [pre ~/ordner1$ ls ../ordner2]]
589 [li Absoluter Pfad: [pre ~/ordner1$ ls /home/live/ordner2]]
593 [slide [h2 Arbeit mit Dateien und Pfaden]
594 [pre ~/ordner1$ cp datei1 "Name mit Leerzeichen"]
597 [slide [h2 Arbeit mit Dateien und Pfaden]
599 [li [pre ~/ordner1$ mv "Name mit Leerzeichen" Name_ohne_Leerzeichen]]
601 [pre ~/ordner1$ mv Name\\ mit\\ Leerzeichen Name_ohne_Leerzeichen]]
605 [slide [h2 Arbeit mit Dateien und Pfaden]
607 ~/ordner1$ mv Name_ohne_Leerzeichen ..
608 ~/ordner1$ mv ../Name_ohne_Leerzeichen .]
611 [slide [h2 Arbeit mit Dateien und Pfaden]
613 ~/ordner1$ mv ../ordner2/datei2 .
614 ~/ordner1$ mv /home/live/ordner2/datei3 .]
617 [slide [h2 Arbeit mit Dateien und Pfaden]
619 ~/ordner1$ cd /home/live
623 [slide [h2 Arbeit mit Dateien und Pfaden]
628 [slide [h2 Arbeit mit Dateien und Pfaden]
633 [slide [h2 Arbeit mit Dateien und Pfaden]
635 ~$ rm ordner1/datei2]
638 [slide [h2 Arbeit mit Dateien und Pfaden]
643 [slide [h2 Zusammenfassung]
646 [li Die Shell erlaubt es Instruktionen zu beschreiben]
647 [li mit \> kann jede Programmausgabe in eine Datei geleitet werden]
648 [li Die Fähigkeiten von Programmen sind so erweiterbar]
652 [slide [h2 Zusammenfassung]
655 [li Einige Programme nehmen Pfade als Parameter an]
656 [li Pfade können nach Belieben absolut oder relativ sein]
657 [li Pfade mit Leerzeichen werden in Anführungszeichen gefasst, damit sie als einzelne Parameter gelten]
658 [li [strong Kommandos:] mkdir, cp, mv, rmdir, rm, rm -r]
662 [slide [h2 Daran denken:]
664 [li Anwesenheitsliste?]