linux v0.1.53

tresix69@freenet.de 16. Februar 2025

betreut durch Thomas resiX

1. Vorwort

Habe versucht alles so kurz wie möglich aber dennoch ausführlich zu Beschreiben und wie immer aus verschiedenen Anleitugen abgeschrieben ;-)

Inhaltsverzeichnis

1. Vorwort  3
Inhaltsverzeichnis  5

I. Linux  15
2. Linux  17
2.1. Was ist Linux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Kernel und Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1. Kernel 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2. Kernel 2.6 (Debian 4.0 etch) . . . . . . . . . . . . . . . . . . . 17
3. Befehle  19
3.1. Standartein-aus-gabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2. Anmelden und Abmelden . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3. Anhalten des Systems und Booten . . . . . . . . . . . . . . . . . . . . 19
3.4. Die Runlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.1. Upstart (Systemstart) . . . . . . . . . . . . . . . . . . . . . . . 20
3.5. SuSE-Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.6. Zur Orientierung auf einem UNIX-Rechner . . . . . . . . . . . . . . . . 20
3.7. Datum und Uhrzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.8. Auflisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.9. Dateinamen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.10. Dateiendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.11. Infos über Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.12. Arbeiten(Verwüstungen) im und am Filesystem . . . . . . . . . . . . . 23
3.13. Kopieren und Verschieben . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.14. Löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.15. Ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.16. Der Texteditor vi/vim . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.17. Suchen nach Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.18. Suchen in Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.19. Vergleichen von Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.20. Drucken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.21. File-Inhalt bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.22. TAR (tape archiver) verwaltet Dateiarchive . . . . . . . . . . . . . . . 25
3.22.1. Packen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.22.2. Entpacken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.23. Disketten/Festplatten . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.23.1. Dateisystem verschlüsseln . . . . . . . . . . . . . . . . . . . . . 28
3.24. Zugriffsrechte/Eigentümer/Gruppe . . . . . . . . . . . . . . . . . . . . 28
3.25. Prozessbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.26. Re-install Grub with Live CD . . . . . . . . . . . . . . . . . . . . . . . 31
3.26.1. Chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.26.2. Grub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.27. Software installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.27.1. rpm-Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.27.2. deb-Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.27.3. Portage Gentoo . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.27.4. Quelltexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.27.5. Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.28. Im Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.29. SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.29.1. Generierung eines DSA Schlüsselpaares . . . . . . . . . . . . . 35
3.29.2. Public-Key auf dem Zielrechner hinzufügen . . . . . . . . . . . 35
3.29.3. Private-Key auf dem Qellrechner . . . . . . . . . . . . . . . . . 35
3.29.4. Login nur mit SSH-Keys erlauben . . . . . . . . . . . . . . . . 36
3.30. GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.30.1. Erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.30.2. Hochladen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.30.3. Löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.30.4. Holen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.30.5. Signatur erzeugen und prüfen . . . . . . . . . . . . . . . . . . . 37
3.30.6. Verschlüsseln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.30.7. Entschlüsseln . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.30.8. Schlüsselverwaltung . . . . . . . . . . . . . . . . . . . . . . . . 38
3.30.9. Anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.30.10. Exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.31. X11 - Grafik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.31.1. Bildschirmschoner/Maus . . . . . . . . . . . . . . . . . . . . . . 39
3.31.2. X11 ohne Maus . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4. Verzeichnisse und Dateien  41
4.1. Dateibaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2. /etc/fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3. /dev/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4. Dateisystemtypen unter Linux . . . . . . . . . . . . . . . . . . . . . . . 49
4.5. /etc/group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6. /etc/hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.7. /etc/inittab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.7.1. Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.7.2. Termcapeintrag . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.7.3. Gettykommando . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7.4. Kürzel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7.5. Arbeitsstufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7.6. Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7.7. Kommando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.8. /etc/passwd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5. Die Shells  55
5.1. Die Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2. Die Start-Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.3. Tastenkombinationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4. Die C-Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.5. Bash rechnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

II. Programme  59
6. Der Texteditor vi/vim  61
6.1. Aufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.2. Eingabemodus (input mode) . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3. Befehlsmodus (visual mode) . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3.1. Eingeben: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3.2. Überschreiben: . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3.3. Bewegen: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3.4. Löschen und Eingeben: . . . . . . . . . . . . . . . . . . . . . . 63
6.3.5. Löschen: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.6. Aufheben: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.7. Verschieben: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.3.8. Zusammenfügen: . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.9. Markieren: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.10. Kopieren: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.11. Einfügen: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.12. Suchen: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.13. Wiederholen: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3.14. Sonstige Kommandos: . . . . . . . . . . . . . . . . . . . . . . . 65
6.4. Kommandomodus (colon mode) . . . . . . . . . . . . . . . . . . . . . . 65
6.4.1. Texteingabe Kommandos . . . . . . . . . . . . . . . . . . . . . 65
7. LaTeX  67
7.1. L^{A}TEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8. Docker  69
8.1. Docker installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8.2. Mit Docker arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

III. Linux im Netzwerk  71
9. Netzwerk  73
9.1. /etc/network/interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . 74
10. E-Mail  75
10.1. Verwendung von E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . . 75
11. Apache  77
11.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
11.2. Kompilieren und Installieren . . . . . . . . . . . . . . . . . . . . . . . . 77
11.2.1. Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
11.2.2. Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
11.2.3. OpenSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
11.2.4. Apache 1.3 und SSL . . . . . . . . . . . . . . . . . . . . . . . . 78
11.2.5. Apache2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
11.2.6. Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
11.2.7. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
11.2.8. PureFTPd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
11.3. Apache starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
11.3.1. Apache starten . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
11.3.2. Wie der Apache startet . . . . . . . . . . . . . . . . . . . . . . 82
11.3.3. Fehler während des Hochfahrens . . . . . . . . . . . . . . . . . 83
11.3.4. Automatisch starten und beenden . . . . . . . . . . . . . . . . 83
11.3.5. Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . 83
11.4. Beenden und Neustarten . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.4.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.4.2. Beenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.4.3. Unterbrechungsfreier Neustart . . . . . . . . . . . . . . . . . . 84
11.4.4. Neustarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11.4.5. Anhang: Syntax überprüfen . . . . . . . . . . . . . . . . . . . . 85
11.5. Anhang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
11.5.1. Zu den Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
11.6. Benutzerhandbuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
11.6.1. httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
11.6.2. Access Control List File (.htaccess) . . . . . . . . . . . . . . . . 89
11.6.3. Gruppendatei (.htgroup) . . . . . . . . . . . . . . . . . . . . . . 90
11.6.4. Passwort-Datei (.htpasswd) . . . . . . . . . . . . . . . . . . . . 90
11.6.5. Erstellen eines SSL-Zertifikats . . . . . . . . . . . . . . . . . . . 90
11.6.6. LinkIcon (favicon.ico) . . . . . . . . . . . . . . . . . . . . . . . 90
12. MySQL  93
12.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
12.2. Kompilieren und Installieren . . . . . . . . . . . . . . . . . . . . . . . . 93
12.2.1. Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

12.2.2. Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
12.2.3. MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
12.2.4. MySQL Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
12.2.5. phpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
13. PHP  97
13.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
13.2. Kompilieren und Installieren . . . . . . . . . . . . . . . . . . . . . . . . 97
13.2.1. Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
13.2.2. Vorbereitungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
13.2.3. Libraries für Zusatzfunktionen . . . . . . . . . . . . . . . . . . 98
13.2.4. PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
13.3. Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.3.1. Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.3.2. Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
14. Squid  101
14.1. Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
14.2. Einfacher Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
14.3. Proxy Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
14.4. Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
14.5. Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
14.6. Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
14.6.1. Client-Kommunikation . . . . . . . . . . . . . . . . . . . . . . . 102
14.6.2. Kommunikation zwischen Proxy-Cache-Servern . . . . . . . . . 102
14.7. Systemvoraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
14.8. SuSE Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
14.9. Automatische Starten von Squit . . . . . . . . . . . . . . . . . . . . . . 103
14.10. Squiddateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
14.11. squid.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

IV. Programmieren  107
15. Bash  109
15.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
15.2. Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
15.3. Steuer und Sonderzeichen der Bash . . . . . . . . . . . . . . . . . . . . 110
16. git  111
16.1. Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
16.2. Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
16.3. Konfigurationen über Umgebungsvariablen . . . . . . . . . . . . . . . . 112
16.4. Der Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
16.5. Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

16.6. Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
16.7. Dateien entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
16.8. Dateien verschieben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
16.9. Änderung an einer Datei rückgängig machen . . . . . . . . . . . . . . . 114
16.10. Dateien ignorieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
16.11. Mit externen Repositorys arbeiten . . . . . . . . . . . . . . . . . . . . 114
16.12. Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
16.13. Branch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
16.14. Git Aliase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
16.15. Git auf einen Server bekommen . . . . . . . . . . . . . . . . . . . . . . 116
16.16. Git auf dem SSH-Server einrichten . . . . . . . . . . . . . . . . . . . . 116
16.17. Öffentlicher Webserver-Zugang . . . . . . . . . . . . . . . . . . . . . . 117
16.18. Grundbegriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
16.19. Verwendung von Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
17. C/C++  121
17.1. Befehle und Grundelemente . . . . . . . . . . . . . . . . . . . . . . . . 121
17.2. Steuersequenzen für ANSI-Bildschirme - Innerhalb von Texten . . . . . 121
17.3. stdio.h -> Standard Ein- und Ausgabe . . . . . . . . . . . . . . . . . . 122
17.4. ctype.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
17.5. string.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
17.6. Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
17.7. ASCII(American Standart Code for Information Interchange)-Tabelle . 125
17.7.1. Unterteilung der Steuerzeichen: . . . . . . . . . . . . . . . . . . 126
17.7.2. Bedeutung der Steuerzeichen: . . . . . . . . . . . . . . . . . . . 126
17.8. Operatoren und Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . 127
17.8.1. Arithmetische Operatoren: . . . . . . . . . . . . . . . . . . . . 127
17.8.2. Vergleichsoperatoren: . . . . . . . . . . . . . . . . . . . . . . . 127
17.8.3. Logische Operatoren: . . . . . . . . . . . . . . . . . . . . . . . . 127
17.8.4. Zuweisungsoperatoren: . . . . . . . . . . . . . . . . . . . . . . . 128
17.8.5. Post- und Prefix- Operatoren: . . . . . . . . . . . . . . . . . . . 128
17.8.6. Zeigeroperatoren: . . . . . . . . . . . . . . . . . . . . . . . . . . 128
17.8.7. Diverse Kategorien: . . . . . . . . . . . . . . . . . . . . . . . . 128
17.9. Inkrementieren und Dekrementieren . . . . . . . . . . . . . . . . . . . 129
17.10. Wertebereich und Genauigkeit elementarer Datentypen . . . . . . . . . 129
17.11. Variableninitialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
17.12. Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
17.12.1. Ganzzahlkonstanten . . . . . . . . . . . . . . . . . . . . . . . . 130
17.12.2. Gleitkommakonstanten . . . . . . . . . . . . . . . . . . . . . . 130
17.12.3. Zeichen- und Zeichenkettenkonstanten . . . . . . . . . . . . . . 130
18. Tcl/Tk  131
19. Perl  133

20. CGI+Perl  135
20.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
20.2. Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
20.2.1. Texte und Strings . . . . . . . . . . . . . . . . . . . . . . . . . 135
20.2.2. Rechenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . 135
20.2.3. Arrays (Listen) . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
20.2.4. String- und Zahlenvergleichsoperratoren . . . . . . . . . . . . . 136
20.2.5. if-Bedingung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
20.2.6. if-else-Bedingung . . . . . . . . . . . . . . . . . . . . . . . . . . 136
20.2.7. if-elseif-Bedingung . . . . . . . . . . . . . . . . . . . . . . . . . 137
20.3. Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
20.3.1. String Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . 137
20.3.2. Rechen Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . 137
20.3.3. Array Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . 137
21. Java  139
21.1. Funktion von Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
21.2. Sprache und Syntax von Java . . . . . . . . . . . . . . . . . . . . . . . 139
21.2.1. Kommentrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
21.2.2. Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
21.2.3. Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
21.3. Pakete und Verzeichnisstrukturen . . . . . . . . . . . . . . . . . . . . . 140
21.3.1. Sichtbarkeit und Zugriffsrechte von Klassen und Methoden . . 140
21.3.2. Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
21.3.3. Konstruktoren und Destruktoren . . . . . . . . . . . . . . . . . 141
21.3.4. Methoden überladen . . . . . . . . . . . . . . . . . . . . . . . . 141
21.3.5. Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
21.3.6. Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
21.3.7. Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
21.4. Elementare Syntax von Java . . . . . . . . . . . . . . . . . . . . . . . . 142
21.4.1. Operratoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
21.4.2. Verknüpfungsoperatoren . . . . . . . . . . . . . . . . . . . . . . 142
21.4.3. Inkrement-Operator . . . . . . . . . . . . . . . . . . . . . . . . 142
21.4.4. Dekrement-Operator . . . . . . . . . . . . . . . . . . . . . . . . 143
21.4.5. Arithmetische Zuweisungsoperatoren . . . . . . . . . . . . . . . 143
21.4.6. Bedingungen und Entscheidungen . . . . . . . . . . . . . . . . 143
21.4.7. if - else - Bedingungen . . . . . . . . . . . . . . . . . . . . . . . 143
21.4.8. Verschachtelte Bedingungen . . . . . . . . . . . . . . . . . . . . 143
21.4.9. Fallunterscheidung mit switch - case . . . . . . . . . . . . . . . 144
21.5. Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
21.5.1. Die while - Schleife . . . . . . . . . . . . . . . . . . . . . . . . . 144
21.5.2. Die do - while - Schleife . . . . . . . . . . . . . . . . . . . . . . 144
21.5.3. Die for - Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . 144
21.5.4. Schleifen mit break verlassen . . . . . . . . . . . . . . . . . . . 144
21.5.5. Schleife mit continue wiederholen . . . . . . . . . . . . . . . . . 144

21.6. Komplexe Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.6.1. Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.7. Die Anweisung import . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.8. Java eigene Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.8.1. Die Klasse Math . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.9. Die Klasse Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.9.1. Die Klasse Object . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.10. Die Klasse Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
21.11. Die Klasse String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
21.12. Die Klasse Stringbuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
21.12.1. Die Klasse Stringbuffer . . . . . . . . . . . . . . . . . . . . . . 146
21.13. Die Klasse System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
21.14. Das Paket java.util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
21.14.1. Die Klasse Date . . . . . . . . . . . . . . . . . . . . . . . . . . 147
21.14.2. Die Klasse Random . . . . . . . . . . . . . . . . . . . . . . . . 147
21.14.3. Die Klasse Stack . . . . . . . . . . . . . . . . . . . . . . . . . . 147
21.15. Ausnahmen (Exceptions) . . . . . . . . . . . . . . . . . . . . . . . . . . 147
21.15.1. Eigene Ausnahme erzeugen (throw) . . . . . . . . . . . . . . . 148
21.16. Multitasking mit Threads . . . . . . . . . . . . . . . . . . . . . . . . . 148
21.16.1. Arbeiten mit Threads . . . . . . . . . . . . . . . . . . . . . . . 148
21.17. Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
21.17.1. Applets in eine Webseite einbinden . . . . . . . . . . . . . . . . 149
21.17.2. Das erste Java Applet . . . . . . . . . . . . . . . . . . . . . . . 149
21.17.3. Die Methoden eines Applets . . . . . . . . . . . . . . . . . . . . 149
21.17.4. Ein Applet im Überblick . . . . . . . . . . . . . . . . . . . . . . 149
21.17.5. Pakete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
21.17.6. Die Klasse Graphics . . . . . . . . . . . . . . . . . . . . . . . . 150
21.17.7. Die Klasse Color . . . . . . . . . . . . . . . . . . . . . . . . . . 150
21.17.8. Die Klasse Font . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
21.17.9. Die Klasse Image . . . . . . . . . . . . . . . . . . . . . . . . . . 151
21.17.10. Die Klasse Button . . . . . . . . . . . . . . . . . . . . . . . . . 151
21.18. Eventhandling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
21.18.1. Mouse Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
21.18.2. Action Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
21.18.3. Parameter an ein Applet . . . . . . . . . . . . . . . . . . . . . . 152
21.18.4. Weitere wichtige Pakete . . . . . . . . . . . . . . . . . . . . . . 153
22. JavaScript  155
22.1. Einbindung von JavaScript . . . . . . . . . . . . . . . . . . . . . . . . 155
22.1.1. Einbindung in den Head . . . . . . . . . . . . . . . . . . . . . . 155
22.1.2. Einbindung in den Body . . . . . . . . . . . . . . . . . . . . . . 155
22.1.3. Ausführen bei bestimmten Aktionen . . . . . . . . . . . . . . . 155
22.2. Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
22.3. Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
22.3.1. Standardobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . 156

22.3.2. String-Objekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
22.3.3. Eigene Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
22.3.4. Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
22.4. Mathematische Operationen . . . . . . . . . . . . . . . . . . . . . . . . 158
22.5. Bedingte Ausführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
22.6. Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
22.7. Event-Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
22.8. Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
22.9. Reservierte Wörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

V. Anhang  163
23. Glossar  165

Stichwortverzeichnis  168

Teil I. Linux

15

2. Linux

2.1. Was ist Linux?

Der Kernel, eine Schnittstelle für die Software zur Hardware.

2.2. Kernel und Module

http://www.kernel.org/          http-Adresse für den Kernel und Kernel-Patches
http://www.de.kernel.org/pub/linux/kernel/      Spiegel für den Kernel

2.2.1. Kernel 2.4

tar xvfj kernel.tar.bz2                         entpackt den Kernel
tar xvfz kernel.tar.gz                          entpackt den Kernel
cd kernel                                       Verzeichnis wechseln
bzip2 -dc ../patch-2.x.xx.bz2 | patch -p1       Kernel patchen
gzip -dc ../patch-2.x.xx.gz | patch -p1         Kernel patchen
zcat /proc/config.gz > /usr/src/linux/.config   die aktuelle Konfiguration des
                                                laufenden Kernels auslesen
make menuconfig                 Kernelkonfiguration im Textmodus
make dep                        aktualisiert die Abhängigkeiten
make clean                      löscht die temporären Dateien und Ausgabedateien
make zImage                     übersetzt und komprimiert den Kernel
make bzImage                    übersetzt und komprimiert den gossen Kernel
make dep clean zImage           aktualisiert,löscht und übersetzt
make modules                    übersetzt Module
make modules_install            installiert Module
make zlilo                      installiert den Kernel und den Boot-Loader LILO
make bzlilo                     installiert den gossen Kernel und
                                den Boot-Loader LILO
make zdisk                      erzeugt eine Bootdiskette mit dem neuen Kernel
make mrproper                   löscht alle erzeugten Dateien,
                                auch die Konfiguration

2.2.2. Kernel 2.6 (Debian 4.0 etch)

sudo apt-get update             Paket-Datenbank aktualisieren
sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 \

2. Linux

     build-essential            benötigte Pakete installieren
cd /usr/src                     in das Verzeichnis zu den Quell-Paketen wechseln
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2
                                den aktuellen Kernel downloaden
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2.sign
                                die dazugehörige Signatur downloaden
gpg --keyserver wwwkeys.de.pgp.net --recv-keys 0x517D0F0E
                                Public-Key vom Key-Server holen
gpg --verify linux-2.6.22.1.tar.bz2.sign
                                Kernel-Signatur überprüfen
tar xvfj linux-2.6.22.1.tar.bz2 Kernel entpacken
ln -s linux-2.6.22.1 linux      Soft-Link zu den Kernel-Quellen anlegen
cd /usr/src/linux               zu den aktuellen Kernel-Quellen wechseln
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
                                Aktualisieren prüfen
bzip2 -dc /usr/src/patch.bz2 | patch -p1
                                Kernel-Quellen aktualisieren wenn nötig
make clean && make mrproper     Kernel säubern und korigieren
cp /boot/config-`uname -r` ./.config
                                laufende Konfiguration holen
make menuconfig                 Konfigurations-Programm starten
                                Load an Alternate Configuration File
                                laufende Konfiguration laden und Kernel
                                konfigurieren
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image \
         kernel_headers         Kernel-Pakete und Kernel-Headers herstellen
sudo dpkg -i linux-image-2.6.22.1-custom_2.6.22.1-custom-10.00.Custom_i386.deb
                                den neuen Kernel installieren
sudo dpkg -i linux-headers-2.6.22.1-custom_2.6.22.1-custom-10.00.Custom_i386.deb
                                die neuen Header installieren
sudo shutdown -r now            Neustart um den Kernel zu testen

uname -a                        feststellen welcher Kernel gestartet ist
dmesg                           Kernelmeldungen vom letzten Start anzeigen
insmod Modul                    Modul laden
modprobe Modul                  Modul eigenständig laden
lsmod                           geladene Module anzeigen lassen
rmmod Modul                     Modul entfernen

3. Befehle

3.1. Standartein-aus-gabe

Jedes UNIX kennt 3 spezielle Files:

stdin           Standardeingabe, normalerweise die Tastatur
stdout          Standardausgabe, normalerweise der Bildschirm
stderr          Standardausgabe für Fehlermeldungen,
                normalerweise der Bildschirm

All diese Files können umgelenkt werden

setterm -blank 0       Bildschirmschoner ausschalten

3.2. Anmelden und Abmelden

login: Benutzername             1. zum Anmelden den Benutzernamen eingeben
Passwort: Benutzerpasswort      2. zum Anmelden das Benutzerpasswort eingeben
logout                          zum Abmelden eingeben
exit                            zum Abmelden eingeben
[Strg]+[d]                      beendet die Shell (alle Shells)

3.3. Anhalten des Systems und Booten

Unter keinen Umständen darf während des Betriebs einfach der Strom abgeschaltet oder der Resetknopf betätigt werden. Da es sonst zu einer Beschädigung des Dateisystems mit Datenverlust kommen kann.

root: shutdown -h now           hält das System an
root: halt                      hält das System an
root: init 0                    hält das System an
root: systemctl poweroff        hält das System an
root: shutdown -r now           startet den Computer nach dem Herunterfahren neu
root: reboot                    startet den Computer nach dem Herunterfahren neu
root: init 6                    startet den Computer nach dem Herunterfahren neu
root: systemctl reboot          startet den Computer nach dem Herunterfahren neu
root: systemctl suspend         Bereitschaft
root: systemctl hibernate       Ruhezustand

3.4. Die Runlevel

root: init 0    Systemhalt
root: init S    Einzelbenutzerbetrieb (Single User Mode)
root: init 1    Einzelbenutzerbetrieb (Single User Mode)
root: init 2    Lokaler Mehrbenutzerbetrieb ohne entferntes Netzwerk
                (Local multiuser without remote network)
root: init 3    Voller Mehrbenutzerbetrieb mit Netzwerk
                (Full multiuser with network)
root: init 4    Frei (Not used)
root: init 5    Voller Mehrbenutzerbetrieb mit Netzwerk und KDM, GDM oder XDM
                (Full multiuser with network and xdm)
root: init 6    Systemneustart (System reboot)
root: init q    Quit zum Neueinlesen der inittab

3.4.1. Upstart (Systemstart)

Upstart sorgt dafür das Dienste ereignisbasiert parallel gestartet werden können /etc/inittab entfällt neu /etc/init/ (bzw. /etc/event.d/)

initctl list                        zeigt eine Liste aller Init-Scripte an
initctl [start|stop] Init-Script    startet oder beendet ein Script
initctl reload-configuration        Konfiguration der Scripte neu einlesen
service Init-Script [start|stop]    startet oder beendet ein Script

Im Header der Datei kann dann zum Starten und Beenden flogendes stehen:

start on runlevel [2345]
stop on runlevel [!2345]

3.5. SuSE-Linux

hilfe                           Hilfesystem starten
yast                            Yet another Setup Tool -
                                SuSE Administrationstool
yast2                           Yet another Setup Tool 2 -
                                SuSE Administrationstool
SuSEconfig                      das Skript muss aufgerufen werden
                                nachdem die /etc/rc.config und /etc/sysconfig/
                                von Hand verändert wurden

3.6. Zur Orientierung auf einem UNIX-Rechner

date            zeigt Datum und Uhrzeit an

3.7. Datum und Uhrzeit

df -k           zeigt den feien Platten-Platz in kB an
df -m           zeigt den feien Platten-Platz in MB an
df -h           Ausgabe von Größen in Menschen-lesbarem Format
du -h           zeigt wie viel Platten-Platz in kB bestimmte Dateien einnehmen
echo Text       schreibt den Text auf stdout (Bildschirm)
finger          zeigt Infos über eingeloggte Benutzer an
finger  -l      zeigt ausführliche Infos über eingeloggte Benutzer an
free -t         zeigt den feien Arbeitsspeicher in kB an
last            zeigt wer sich zuletzt von wo aus auf dem Rechner eingeloggt hat
info Begriff    Hilfe zu dem Begriff im Infoformat
man Begriff     Hilfe zu dem Begriff
man -a Begriff  alle Kapitel zu dem Begriff
man -f Begriff  listet die gefundenen Seiten zu dem Begriff auf
man -k Begriff  listet die Seiten in dem der Begriff vorkommt auf
man n Begriff   Hilfe zum Begriff mit der Sektion n
                Die Manual-Pages sind auf verschiedene Sektionen aufgeteilt:
                1 Shell-Kommandos
                2 System-Aufrufe
                3 Funktionen - C-Bibliotheksfunktionen.
                4 Die Beschreibung von Konfigurationsdateien.
                5 Die Syntax wichtiger Dateien.
                6 Beschreibung von Spielen.
                7 Alles was mit Text, Textformatierung und anderen Formaten zu
                  tun hat.
                8 Die Befehle des Systemverwalters.
                9 Die Beschreibung der Linux-Kernelroutinen.
                n n kommt angeblich von neu, hier sind sonstige Manual-Pages
                  aufgeführt, die in eine der oberen Sektionen gehören, aber
                  traditionell hier stehen oder zu keiner Sektion genau passen.
pwd             Ausgabe des aktuellen Verzeichnisses
w               wer ist da und was ist los
whatis Befehl   zeigt Kurzerklärung eines Befehls
which Befehl    zeigt, wo Executable liegt, und eventual alias
who             zeigt Liste aller eingeloggten Benutzer
whoami          zeigt, wem die Shell gehört

3.7. Datum und Uhrzeit

date                                            Datum und Uhrzeit abfragen
date -s '2000-01-29 20:00:00' +'%Y-%m-%d %T'    Datum und Uhrzeit einstellen
netdate Rechnername                             Datum und Uhrzeit vom Rechner-
                                                name holen
clock -u -w                                     Datum und Uhrzeit in
                                                das BIOS schreiben

timedatectl set-local-rtc 1                     locale Zeit einstellen
timedatectl set-local-rtc 0                     UTC Zeit einstellen

3.8. Auflisten

ls                      Auflisten der Dateien im aktuellen Verzeichnis
ls Verzeichnis          Inhalt des Verzeichnisses ausgeben
ls -la                  alles Auflisten im aktuellen Verzeichnis
ls -laFi                alles ausführlicher Auflisten
ls | paste - - - -      Dateien vierspaltig ausgeben
ls -1                   untereinander ausgeben
ls -F                   Verzeichnisse mit angehängtem / markieren
ls -i                   inode-Nummer mit ausgeben
ls -R                   alle Unterverzeichnisse mit ausgeben
ls -r                   Auflisten der Dateien umkehren

3.9. Dateinamen

UNIX unterscheidet Groß- und Kleinschreibung! liesmich, Liesmich, LIESMICH sind verschiedene Dateinamen! max. 256 Zeichen, alle Zeichen sind erlaubt . am Namensanfang versteckt Datei vor ls, cp, rm, mv

alias                           gibt alle definierten Kurznamen aus
alias la='ls -la'               definiert Kurznamen für ein Kommando
                                aus ls -la wird ein la

3.10. Dateiendungen

.a              Objektbibliotheken
.c              C-Quelltextdatei
.cpp            C++-Quellen
.o              Objektdatei
.p              Pascal-Quellen
.s              Assembler

3.11. Infos über Files

file Datei              Anzeige des Dateitypes
wc -lwc Datei           Ausgabe der Zeilen, Worte und Buchstaben der Datei
ls -a | wc -l           alle Dateien im aktuellen Verzeichnis zählen

3.12. Arbeiten(Verwüstungen) im und am Filesystem

3.12. Arbeiten(Verwüstungen) im und am Filesystem

cd Pfad                 Verzeichnis wechseln
mkdir Name              Verzeichnis erzeugen
mkdir -p Name           Verzeichnis erzeugen, fehlende Verzeichnisse mit anlegen

3.13. Kopieren und Verschieben

cp Dateien Ziel         Dateien kopieren
cp -i Dateien Ziel      Dateien kopieren, vor dem Überschreiben
                        einer Datei nachfragen
cp -R Quelle* Ziel      gesamten Inhalt eines Verzeichnises kopieren
mv Quelle Ziel          Datei verschieben oder umbenennen
mv -f Quelle Ziel       Schreibgeschützte Datei verschieben oder umbenennen
mv -i Quelle Ziel       Datei verschieben oder umbenennen,
                        vor dem Überschreiben nachfragen
ln Quelle Ziel          Verknüpfung erzeugen (Hardlink),
                        beide Dateien haben die gleiche inode
ln -s Quelle Ziel       Verknüpfung erzeugen (Softlink)
ln -sf Quelle Ziel      Verknüpfung erzeugen (Softlink)
                        ohne Rückfrage überschreiben

3.14. Löschen

rm Datei                löschen von Daten
rm -r Dateien           löschen von Dateien mit Verzeichnissen
rmdir Verzeichnis       löscht Verzeichnis wenn es leer ist,
                        überflüssig rm -r geht auch

3.15. Ausgeben

cat Datei                       Inhalt der Datei auf dem Bildschirm ausgeben
cat Datei1 Datei2 > Datei3      Dateien1+2 zusammenfügen in die Datei3 schreiben
strings Datei                   Druckbare Zeichen der Datei ausgeben
more Datei                      Datei seitenweise ausgeben
less Datei                      Datei ausgeben und mit den Curser scrollen
                                j eine Zeile weiter
                                k eine Zeile zurück
                                u halbe Seite zurück
                                /Text sucht den Text
                                q less verlassen
nl Datei                        Datei mit Zeilennummern ausgeben
tail Datei                      zeigt die letzten 10 Zeilen einer Datei an

tail -n Datei                   zeigt die letzten n Zeilen einer Datei an
tail -f Datei                   zeigt ständig die letzten 10 Zeilen der Datei an
tail -f /var/log/messages       Systemmeldungen mitverfolgen
head Datei                      zeigt die ersten 10 Zeilen einer Datei an
head -n Datei                   zeigt die ersten n Zeilen einer Datei an
od -b Datei                     Datei oktal ausgeben
od -c Datei                     Datei als ASCII ausgeben
od -x Datei                     Datei hexadezimal ausgeben
ls | paste - - - -              Dateien vierspaltig ausgeben
recode ibmpc:lat1 Datei         Konvertierung der Datei
                                7 Bit DOS in das UNICODE/8 Bit Format

3.16. Der Texteditor vi/vim

vi              Editor vi aufrufen
vi Datei        Editor vi aufrufen und Datei öffnen
vi -r           swap-Dateien anzeigen
vi -r Datei     Datei nach einem Stromausfall (oder Absturz) wieder herstellen
vi -R Datei     Datei schreibgeschützt öffnen

3.17. Suchen nach Dateien

find Pfad Bedingung             nach Dateien suchen
find Pfad | grep name           nach Dateien suchen, hat sich bewährt
find Pfad -name .profile        nach dem Dateinamen .profile suchen
find Pfad -user higi            nach Dateien die dem Benutzer
                                higi gehören suchen
find Pfad -size +1024c          nach Dateien die größer als 1024 Bytes
                                sind suchen
find Pfad -atime +7             nach Dateien suchen die älter als 7 Tage sind
find Pfad -print                alle Dateien im Pfad ausgeben
find -name *.txt                alle Dateien im aktuellen Pfad
                                mit der Endung .txt ausgeben
find / -size +16000000c         alle Dateien die mehr als 16MB haben ausgeben
find / -fstype msdos -name *.zip        sucht auf MS-DOS-Partition nach *.zip
find / -fstype vfat -name *.txt         sucht auf Windows-Partition nach *.txt

3.18. Suchen in Dateien

grep Ausdruck Datei             sucht nach dem Ausdruck in der Datei
grep -c Ausdruck Datei          Anzahl der Zeilen, die den Begriff
                                enthalten ausgeben
grep -i Ausdruck Datei          große und kleine Buchstaben nicht unterscheiden

3.19. Vergleichen von Dateien

grep -l Ausdruck Datei          meldet die Dateien die den Ausdruck enthalten
grep -n Ausdruck Datei          sucht nach dem Ausdruck und
                                gibt die Zeilennummer mit aus
grep -v Ausdruck Datei          Ausgabe der Zeilen die den Ausdruck
                                nicht enthalten
egrep Ausdruck Datei            sucht nach dem Ausdruck in der Datei
fgrep String Datei              sucht nach dem String in der Datei
fgrep -x String Datei           sucht nach dem String in der Zeile einer Datei

3.19. Vergleichen von Dateien

diff Datei1 Datei2              zeigt die Unterschiede zwischen zwei Dateien
comm [-123] Datei1 Datei2       zwei sortierte Textdateien vergleichen
cmp -l Datei1 Datei2            Binär-/Dateien vergleichen

3.20. Drucken

lpr Datei               Datei auf dem Drucker ausgeben
lpr -#n Datei           Datei n mal auf dem Drucker ausgeben
lpr -m Datei            Datei auf dem Drucker ausgeben, nach dem Drucken
                        bekommt man eine mail
lpq                     Warteschlange anschauen
lprm Jobnummer          Druckauftrag/Job aus der Warteschlange löschen
pr                      Dateien für das Drucken aufbereiten

3.21. File-Inhalt bearbeiten

compress Datei                          Datei komprimieren nach Datei.Z
uncompress Datei.Z                      Datei.Z dekomprimieren
expand Datei1 > Datei2                  Tabs aus der Datei1 entfernen und
                                        zur Datei2 schreiben
unpack Datei.z                          Datei.z dekomprimieren
sort Datei1 > Datei2                    die Zeilen der Datei1 in
                                        die Datei2 sortieren
tr [A-Z] [a-z] < Datei1 > Datei2        Klein durch Großbuchstaben ersetzen
uniq Datei                              Datei ausgeben bis auf doppelte Zeilen

3.22. TAR (tape archiver) verwaltet Dateiarchive

Syntax: tar [-Acdrtux] [–delete] [-b n] [-BgGhijklmMoOpPPsSvwWz] [-C Verzeichnis] [-f Datei] [-F Datei] [-K Datei] [-L Länge] [-N Datum] [-T Datei] [-V Name] [-X Datei] [0-7] [lmh]

Optionen:
-A              Archiv an ein Archiv anhängen
-c              erzeugt ein neues Archiv
-d              vergleicht das Archiv mit dem Dateisystem
--delete Datei  löscht die Datei aus dem Archiv (nicht für Magnetbänder)
-r              hängt Dateien an das Archiv an (nicht für Magnetbänder)
-t              zeigt den Inhalt des Archivs
-u              ersetzt neue Dateien oder fügt sie ein (nicht für Magnetbänder)
-x              kopiert/entpackt Datei-en aus dem Archiv
--atime-preserve        Zugriffszeit nach der Archivierung zurück setzen
-b n            setzt die Blockgröße n*512Bytes (Voreinstellung n=20)
-B              unterdrückt den Abbruch beim Lesen unvollständiger Blöcke
                zum Lesen von 4.2BSD Pipes
-C Verzeichnis  wechselt in das Verzeichnis, um dort weitere Dateien zu
                archivieren
-f Datei        benutzt Datei oder das Gerät als Archiv
-F Datei        bei -M führt das Shellscript Datei aus, wenn das Medium voll ist
-G              erzeugt am Anfang des Bandarchives einen speziellen Eintrag für
                jedes archivierte Verzeichnis; spezielles GNU Format
-g Datei        erzeugt eine Datei mit einer Liste der archivierten
                Verzeichnisse als Zeitmarke der Archivierung; wenn die Datei
                bereits existiert, werden nur die Dateien archiviert, die nach
                dieser Zeitmarke erzeugt oder verändert wurden (spezielles GNU
                Format: 1.Zeile=Zeitmarke, 1.Feld=Nr. der Partition,
                2.Feld=Inode des Verzeichnisses, 3.Feld=Name des Verzeichisses)
-h              archiviert die referenzierten Dateien anstelle der Links
-i              ignoriert Blöcke mit Nullbytes im Archiv
-j              erzeugt ein mit bzip2 komprimiertes Archiv
-k              existierende Dateien werden beim Auspacken von Archiven nicht
                überschrieben
-K Datei        beginnt eine Aktion bei Datei im Archiv
-l              verhindert Archivierung von Dateien aus anderen Dateisystemen
-L Länge        wartet auf Medienwechsel nach Länge Bytes
-m              das Datum der letzten Änderung wird nicht mit archiviert
-M              das Archiv ist auf mehrere Medien verteilt (Multi-Volume)
-N Datum        archiviert nur Dateien, die neuer sind als Datum
-o              benutzt das alte V7 tar-Format anstelle des ANSI Formates
-O              schreibt die Dateien in die Standardausgabe
-p              erhält die Zugriffsrechte der Dateien
-P              archiviert mit absoluten Dateinamen
-R              gibt zu jeder Meldung die Blocknummer des Archivblocks aus, von
                dem die Meldung verursacht wurde
-s              zeigt an, dass die Liste von Dateien im Argument die gleiche
                Reihenfolge hat wie die Dateien im Archiv
-T Datei        holt die Namen der zu archivierenden Dateien aus Datei

3.23. Disketten/Festplatten

-v              meldet jede Aktion
-V Name         erzeugt ein Archiv mit dem (internen) Label Name
-w              erwartet interaktiv Bestätigung jeder Aktion
-W              verifiziert die geschriebenen Daten im Archiv
-X Datei        liest aus der Datei Namen oder reguläre Ausdrücke von bzw. für
                Dateien, die nicht archiviert werden soll
-z              erzeugt ein mit gzip komprimiertes Archiv
-Z              erzeugt ein mit compress komprimiertes Archiv
-{0...7}{lmh}   spezifiziert das Gerät und die Dichte des Speichermediums (für
                Diskettenarchive ohne Bedeutung); 0 ist der erste Streamer, 1
                1 der zweite und so weiter; die Dichte bestimmt den Bandtyp

3.22.1. Packen

tar rPvf name.tar /etc/         Verzeichnis zum tar zufügen
tar rPvf name.tar /etc/inittab* Datei-en zum tar zufügen
tar cPvzf name.tgz name.tar     tar -> tgz
tar cPvMf /dev/fd0 name.tgz     tgz auf Diskette sichern
tar cvzf Datei.tgz Verzeichnis  Packt Verzeichnis in Datei.tgz

3.22.2. Entpacken

tar xvfpM /dev/fd0              tgz von Diskette holen
tar xvfpz name.tgz              tgz -> tar
tar tvfp name.tar               Inhalt des Tars anzeigen
tar xvfp name.tar               Tar entpacken

3.23. Disketten/Festplatten

dd if=/dev/zero of=/dev/sda bs=512 count=1      überschreibt den MBR der ersten
                                                SCSI-Platte mit Nullen
fdisk Gerätedatei                       Partitionstabelleneditor
fdisk -l /dev/hda                       zeigt die Partitionstabelle der ersten
                                        Festplatte an
fdisk -C 12416 -H 15 -S 63 /dev/hdb     Partitionstabelle mit vorgegebenen
                                        C-Zylinder H-Köpfe S-Sektoren pro Spur
                                        bearbeiten
cfdisk Gerätedatei                      Curses-Partitionstabelleneditor
fdformat /dev/fd0u1440                  Diskette Low-Level-Formatieren
mformat a:                              Dateisystem DOS-FAT anlegen
mkdosfs -I /dev/sda                     Superfloppy-Format mit FAT16-Dateisystem

                                        für z.B. USB-Sticks anlegen
mkdosfs -n Name /dev/sda1               FAT16-Dateisystem mit Name anlegen
mkfs -t minix /dev/fd0u1440 1440        Dateisystem minix anlegen
mke2fs /dev/fd0u1440                    Dateisystem ext2 anlegen
mkfs -V -t ext2 /dev/sda7               Dateisystem ext2 anlegen
fsck -V -t ext2 /dev/sda7               Dateisystem Prüfung und Reparatur
tune2fs Optionen Gerät                  Einstellungen zum ext2 Dateisystem
mount Gerät Verzeichnis                 Gerät im Verzeichnis anmelden
mount -t minix /dev/fd0 /mnt            Diskette im minix-Format anmelden
mount -t ext2 /dev/fd0 /mnt             Diskette im ext2-Format anmelden
mount -t msdos /dev/fd0 /mnt            Diskette im msdos-Format anmelden
mount -o loop disk.img /mnt             Datei als Diskette anmelden
umount Verzeichnis                      Verzeichnis abmelden
umount /mnt                             Diskette abmelden

3.23.1. Dateisystem verschlüsseln

modprobe loop_fish2                     Modul für die Verschlüssellung laden
dd if=/dev/urandom of=datei bs=1024 count=10000         10MB Datei anlegen
losetup -e twofish /dev/loop0 datei     Datei anmelden (Passwort anlegen)
mkfs -t ext2 /dev/loop0                 Dateisystem anlegen
mount -t ext2 /dev/loop0 /mnt           Dateisystem anmelden
umount /mnt/                            Dateisystem abmelden
losetup -d /dev/loop0                   Datei abmelden
/dev/loop0 /datei /mnt ext2 twofish defaults            /etc/cryptotab
/datei /mnt ext2 loop,encryption=twofish,noauto,user    /etc/fstab

3.24. Zugriffsrechte/Eigentümer/Gruppe

ls -l /dev/fd0
brw-rw-rw-   1 root     disk       2,   0 Feb 16 16:30 /dev/fd0
|                                  |    |                   +----- Gerät
|                                  |    +------ Minor-Device-Nummer(Nebennummer)
|                                  +----------- Major-Device-Nummer(Hauptnummer)
+-------------------- b-blockorientierte Geräte c-zeichenorientierte Geräte
ls -laFi linux.txt
1561 -rw-r-----  1 higi  users  26419 Mar 13 19:19 linux.txt
|    ||||||||||  | |     |      |     |   |  |     +----- Datei/Verzeichnisname

3.24. Zugriffsrechte/Eigentümer/Gruppe

|    ||||||||||  | |     |      |     |   |  +----------- Uhrzeit
|    ||||||||||  | |     |      |     |   +-------------- Tag
|    ||||||||||  | |     |      |     +------------------ Monat
|    ||||||||||  | |     |      +------------------------ Größe
|    ||||||||||  | |     +----------- Gruppe
|    ||||||||||  | +----------------- Eigentümer
|    ||||||||||  +------------------- Links
|    |||||||||+---- alle Anderen   x-ausführen oder t-text mit x-bit
|    |||||||||                                       T-text ohne x-bit
|    ||||||||+----- alle Anderen   w-schreiben
|    |||||||+------ alle Anderen   r-lesen
|    ||||||+------- Gruppe         x-ausführen oder s-Gruppenkennung mit x-bit
|    ||||||                                          S-Gruppenkennung ohne x-bit
|    |||||+-------- Gruppe         w-schreiben
|    ||||+--------- Gruppe         r-lesen
|    |||+---------- Eigentümer    x-ausführen oder s-Benutzerkennung mit x-bit
|    |||                                             S-Benutzerkennung ohne x-bit
|    ||+----------- Eigentümer    w-schreiben
|    |+------------ Eigentümer    r-lesen
|    +------------- d-Verzeichnis  l-Verknüpfung
+------- inode
chmod werwiewas Datei           Zugriffsrechte einer Datei/Verzeichnis ändern
                                wer: u-Eigentümer   g-Gruppe
                                     o-alle Anderen a-alle 3 Benutzergruppen
                                wie: +-hinzufügen --wegnehmen
                                     =-nachfolgendes Muster setzen
                                was: r-lesen w-schreiben x-ausführen
                                   ( s-Benutzerkennung oder Gruppenkennung
                                     t-text )
chmod zahl Datei                Zugriffsrechte einer Datei/Verzeichnis ändern
                                zahl-> rwx rwx rwx -> 4+2 4 0 -> 640
                                       421 421 421
                                640 -> Eigentümer lesen schreiben
                                       Gruppe     lesen
chmod nzahl Datei               Zugriffsrechte und Kennung einer Datei/
                                Verzeichnis ändern
                                bit 4 von n, mit Benutzerkennung/
                                Benutzerrechten ausführen
                                bit 2 von n, mit Gruppenkennung/
                                Gruppenrechten ausführen
                                bit 1 von n, mit text werden die Dateien vor
                                dem Löschen durch fremde Benutzer geschützt,
                                macht nur bei Verzeichnissen sinn
chown NeuerEigentümer Datei    Eigentümer der Datei ändern

chgrp NeueGruppe Datei          Gruppenzugehörigkeit der Datei ändern
passwd Benutzer                 Benutzerpasswort ändern
useradd Optionen Benutzer       Benutzer anlegen
                                -u Benutzer-ID (-u 500)
                                -g Primäre Gruppenzugehörigkeit (-g users)
                                -G weitere Gruppenzugehörigkeit
                                -d Homeverzeichnis (-d /home/user500)
                                -s Shell (-s /bin/bash)
                                -m legt das Homeverzeichnis an und kopiert die
                                   Dateien aus /etc/skel in das Homeverzeichnis
                                -c Kommentar
                                -p Passwort im Klartext!
                                -e Auslaufdatum (-e 2002.12.24)
                                -f Pufferzeit
usermod Optionen Benutzer       Benutzerdaten verändern
userdel Benutzername            Benutzer löschen
userdel -r Benutzername         Benutzer und Benutzerverzeichnis löschen
vipw                            Benutzerdatenbank ändern
su                              Shell mit root-Zugriffsrechten starten
su -                            Shell im root-Homeverzeichnis
                                mit root-Zugriffsrechten starten
sux -                           Shell im root-Homeverzeichnis
                                mit root-Zugriffsrechten starten und X-Variabeln
su -l Benutzername              Shell im Benutzer-Homeverzeichnis
                                mit Benutzer-Rechten starten

3.25. Prozessbefehle

S=schlafend R=running(laufend) T=terminiert Z=Zombie

[Strg]+[z]      im Vordergrund laufendes Programm anhalten
[1]+  Stopped
 |       +----- schlafend
 +------------- Jobnummer
bg %JOB         Job im Hintergrund fortsetzen
fg %JOB         Job im Vordergrund fortsetzen
Programm &      Programm im eigenem Prozess starten
[1] 819
 |   +--------- Prozessnummer
 +------------- Jobnummer
ps              Überblick über die aktuell laufenden Prozesse
ps aux          gibt in den meisten Fällen eine ausreichende Auskunft
pstree          zeigt den kompletten Prozessbaum an

3.26. Re-install Grub with Live CD

jobs            das Schellkommando gibt eine Liste der aktuellen Jobs aus
top             Programm, das die aktuellen Prozesse anzeigt
htop            Programm, das die aktuellen Prozesse anzeigt
kill PID        Prozess killen
kill %JOB       Job killen
kill -1 PID     Prozess initialisieren
kill -1 %JOB    Job initialisieren
kill -9 PID     Prozess killen
kill -9 %JOB    Job killen
kill -15 PID    Prozess beenden
kill -15 %JOB   Job beenden
kill -HUP PID   veranlasst die meisten Dämonen ihre Konfigurationsdateien
                erneut zu lesen

3.26. Re-install Grub with Live CD

3.26.1. Chroot

sudo fdisk -l                                   Patition für das chroot festellen
sudo mount /dev/sdb3 /mnt/gentoo                chroot z.B. /dev/sdb3 auf z.B. /mnt/gentoo mounten
sudo mount -t proc none /mnt/gentoo/proc        Mounten der /proc und /dev Dateisysteme
sudo mount --rbind /dev /mnt/gentoo/dev
sudo chroot /mnt/gentoo /bin/bash               Betreten der neuen Umgebung
env-update                                      Umgebungsvariablen aktualisieren
source /etc/profile                             Profil laden
export PS1="(chroot) $PS1"                      Promt anpassen

3.26.2. Grub

sudo grub
grub> find /boot/grub/stage1
grub> root (hd0,1)
grub> setup (hd0)
grub> quit
reboot

3.27. Software installieren

3.27.1. rpm-Format

http://www.rpm.org/             weiterführende Informationen
http://www.rpmfind.net/         Hilfe zu fehlenden rpms oder Merkmalen
/var/lib/rpm/Packages           rpm-Datenbank

/var/lib/rpm/packages.rpm       -> /var/lib/rpm/Packages

Geänderte Konfigurationsdateien überschreibt rpm beim Update nicht, sondern hebt sie als Datei.rpmsave auf. diff hilft die Unterschiede anzuzeigen.

rpm -i Paketname.rpm            Installiert mit Prüfung auf Abhängigkeiten
rpm -i --nodeps Paketname.rpm   Installiert ohne Prüfung auf Abhängigkeiten
rpm -i --test Paketname.rpm     Testet die Installation ohne Daten zu verändern
rpm -iv Paketname.rpm           Installiert mit Prüfung auf Abhängigkeiten
                                und Rückmeldung
rpm -ivh Paketname.rpm          Installiert, prüft, meldet und
                                zeigt den Vorgang an
rpm -Uvh Paketname.rpm          Update eines rpm-Binärpaketes
rpm -Fvh Paketname.rpm          Aktualisiert rpm-Binärpaket
rpm -Fvh *.rpm                  Aktualisiert alle rpm-Binärpakete im .
rpm -e Paket                    Deinstalliert mit Prüfung auf Abhängigkeiten
rpm -qa                         zeigt die installierten rpm-Pakete an
rpm -qa | grep -i Paket         zeigt ob das Paket installiert ist
rpm -qi Paket                   zeigt Informationen über das installierte Paket
rpm -qip Paketname.rpm          zeigt Informationen über das rpm-Binärpaket
rpm -ql Paket                   zeigt die enthaltenen Dateien des installierten
                                Paketes an
rpm -qlp Paketname.rpm          zeigt die enthaltenen Dateien des
                                rpm-Binärpaketes
rpm -qf /Pfad/Datei             zeigt das Paket aus dem die Datei stammt
rpm -q --requires Paket         zeigt die geforderten Merkmale des installierten
                                Paketes an
rpm -qp --requires Paketname.rpm        zeigt die geforderten Merkmale des
                                rpm-Binärpaketes

3.27.2. deb-Format

dpkg -i Paketname.deb           Installation eines deb-Binärpaketes
dpkg -P Paket                   Deinstalliert mit Prüfung auf Abhängigkeiten
dpkg -l                         zeigt die installierten deb-Pakete an
dpkg -l "*Paket*"               zeigt ob das Paket installiert ist
dpkg -p Paket                   zeigt Informationen über das installierte Paket
dpkg -I Paketname.deb           zeigt Informationen über das deb-Binärpaket
dpkg -L Paket                   zeigt die enthaltenen Dateien des installierten
                                Paketes an
dpkg -c Paketname.deb           zeigt die enthaltenen Dateien des

3.27. Software installieren

                                deb-Binärpaketes
dpkg -S /Pfad/Datei             zeigt das Paket aus dem die Datei stammt
apt                             neue Alternative für apt-get
apt-get autoclean               Veraltete Pakete aus dem Cache löschen
apt-get clean                   alle Pakete aus dem Cache löschen
apt-get install Paket           Installiert mit Prüfung auf Abhängigkeiten
apt-get remove Paket            Deinstalliert mit Prüfung auf Abhängigkeiten
apt-get --purge remove Paket    Deinstalliert vollständig
apt-get autoremove              Deinstalliert nicht benötigte Pakete
apt-get dist-upgrade            aktualisiert die gesamte Distribution
apt-cache search Name           durchsucht die gesamte Distribution
apt-get update                  APT-Datenbank auf den aktuellen Stand bringen
dpkg --get-selections > Paketliste              Paketliste exportieren
###sudo dpkg --set-selections < Paketliste         Paketliste importieren geht nicht

3.27.3. Portage Gentoo

emerge --sync                   Aktualisieren des Portage-Tree mit rsync
emerge --webrsync               Aktualisieren mit dem Portage-Snapshots
emerge --search Pragrammname    Nach Software suchen
emerge --searchdesc Name        Suche nach Paketen im Zusammenhang mit dem Namen
emerge Programmname             Software installieren
emerge -pv Programmname         Installation von Programmen simulieren, USE-Flags anzeigen
emerge --fetchonly Programmname Quellen herunterzuladen, noch nicht kompilieren
emerge --unmerge Programmname   Entfernung von Programm aus dem System
emerge --update --ask world     Aktualisierung des Systems
emerge -f -u -a world           Aktualisierung herunterzuladen, aber nicht
                                kompilieren und installieren
emerge --update --deep world    Aktualisierung des gesamten Systems
emerge --update --newuse world  Neuerstellung des gesamten System
emerge --depclean verweiste Abhängigkeiten entfernen
revdep-rebuild                  reverse Abhängigkeiten neu erstellen
etc-update                      Konfigurationsdateien zusammenzuführen
equery belongs /Pfad/Datei      zeigt das Paket aus dem die Datei stammt
equery depends Programmname     Abhängigkeiten anzeigen
equery depgraph Programmname    Abhängigkeiten als Baum anzeigen
equery files Programmname       Dateien auflisten, die zu einem Ebuild gehören

equery hasuse USE-Flag          Pakete suchen, die ein spezifisches USE-Flag
                                benutzen
equery size Programmname        Paketgröße anzeigen
equery uses Programmname        Gesetzte und nicht gesetzte USE-Flags
equery which Programmname       Anzeigen des Ebuildpfads
euse -a                         Alle aktiven USE-Flags anschauen
euse -a -l                      Aktive lokale USE-Flags anschauen
euse -E USE-Flag                Setzen von USE-Flags
euse -D USE-Flag                Deaktivieren von USE-Flags

3.27.4. Quelltexte

tar xvfz Source.tgz             Quelltext entpacken
./configure                     Makefile konfigurieren
make                            Programm übersetzen,
                                wenn Makefile vorhanden
make install                    Programm installieren
make uninstall                  Programm deinstallieren

3.27.5. Hilfe

ldd Programm                    zeigt die zu ladenen Bibliotheken des Programms
strace -eopen Programm          zeigt die geladenen Bibliotheken des Programms

3.28. Im Netz

#ifconfig -a                -> ip link
ip link                     alle aktiven Netzwerkschnittstellen ausgeben
ifconfig | grep eth0 | cut -c 39-55   Ethernet-Adresse von eth0 ausgeben
ftp Rechner                     Programm zur Übertragung von Files
                                via Internet starten
host www.suse.de                befragt den DNS-Server nach
                                der IP-Nummer des Rechners
host 192.168.9.10               fragt nach dem Namen des Rechners
nslookup www.debian.de          befragt den DNS-Server nach
                                der IP-Nummer des Rechners
nslookup 192.168.11.12          fragt nach dem Namen des Rechners
ping Rechner                    sendet Pakete an Rechner mit Echo
rlogin Rechner                  auf anderen Rechner anmelden

3.29. SSH

scp Rechner:Pfad Rechner:Pfad   Programm zur Übertragung von Files
ssh Rechner                     auf anderen Rechner anmelden
ssh Rechner -l root     oder    auf anderen Rechner als root anmelden
ssh root@Rechner
telnet Rechner                  Kommunikation ueber das TELNET-Protokoll
nmap -sT -PT Rechner            Scannt die Ports von Rechner
nmap -sT -p 1-65535 -PT Rechner Scannt alle Ports von Rechner
netcat ip port                  zeigt den angegebenen Port an

3.29. SSH

SSH(Secure shell) ist ein verschlüsseltes Netzwerkprotokoll auf TCP-Port 22, ermöglicht eine sichere authentifizierte und verschlüsselte Verbindung zwischen zwei Rechnern über ein unsicheres Netzwerk.

scp Rechner:Pfad Rechner:Pfad   Programm zur Übertragung von Files
ssh Rechner                     auf anderen Rechner anmelden
ssh Rechner -l root     oder    auf anderen Rechner als root anmelden
ssh root@Rechner

3.29.1. Generierung eines DSA Schlüsselpaares

ssh-keygen -t dsa -b 2048                generiert DSA-Schlüsselpaar mit
                                         einer Bit-Tiefe von 2048
    ~/.ssh/id_dsa   - private-key mit <ENTER> bestätigen
    passphrase      - Passwort für den private-key und der Anmeldung,
                      für passwortlose SSH-Verbindungen weg lassen oder
                      zu Beginn einer Sitzung mit ssh-add ~/.ssh/id_dsa
                      abfragen lassen

3.29.2. Public-Key auf dem Zielrechner hinzufügen

cat ~/.ssh/id_dsa.pub | ssh zieluser@zielrechner \
    "mkdir -p .ssh; cat >> .ssh/authorized_keys"
                    - public-key auf dem Zielrechner hinzufügen
ssh zieluser@zielrechner "chmod 600 ~/.ssh/authorized_keys"
                    - public-key auf dem Zielrechner schützen

3.29.3. Private-Key auf dem Qellrechner

~/.ssh/id_dsa       - der Private-Key gehört auf dem Qellrechner in das
                      ~/.ssh/ Verzeichnis

3.29.4. Login nur mit SSH-Keys erlauben

/etc/ssh/sshd_config            - folgendes in die Datei sshd_config
    PubkeyAuthentication yes      eingetragen
    UsePAM no
    PasswordAuthentication no
rcsshd restart                  - SSH-Dämon neu starten

3.30. GnuPG

Mit GnuPG kann man Daten signieren und verschlüsseln. GnuPG unterstüzt symmetrische und asymmetrische Verschlüsselung.

http://www.gnupg.org/                          http-Adresse für GnuPG
http://www.gnupg.org/related_software/gpa/     Grafische Benutzereingabe
http://www.heise.de/security/dienste/pgp/      Krypto-Kampagne, bei der
                                               ein Abgleich zwischen
                                               Person, Personalausweis
                                               und Schlüssel erfolgt
http://kmail.kde.org/                          Mailprogramme mit GnuPG
http://www.mutt.org/                           Unterstützung
http://www.ximian.com/products/evolution/

3.30.1. Erzeugen

gpg --gen-key                   Schlüssel-Paar erzeugen
gpg --gen-revoke 0xKeyID        Widerruf Zertifikat erzeugen
                                 > gpg-rev-Will_no_longer_use_it
                                 > gpg-rev-Lost_private_key
                                 > gpg-rev-Forgot_password
                                 > gpg-rev-Key_compromised

3.30.2. Hochladen

gpg --keyserver wwwkeys.de.pgp.net --send-keys 0xKeyID
                                Public Key auf den Keyserver hochladen
gpg -a --export 0xKeyID | mail -s "add" pgp-public-keys@keys.de.pgp.net
                                Public Key an den Keyserver verschicken
Keyserver:
Land          eMail-Adresse                   HTTP-Adresse
----          -------------                   ------------
Deutschland   pgp-public-keys@keys.de.pgp.net http://wwwkeys.de.pgp.net/

3.30. GnuPG

Östereich     pgp-public-keys@keys.at.pgp.net http://wwwkeys.at.pgp.net/
Schweiz       gp-public-keys@keys.ch.pgp.net  http://wwwkeys.ch.pgp.net/

3.30.3. Löschen

gpg --recv-keys 0xKeyID         Key vernichten
gpg --import                    WiderrufZertifikat
gpg --send-keys 0xKeyID
gpg --delete-key 0xKeyID        löscht einen öffentlichen Schlüssel
cat gpg-rev-xxx | mail -s "add" pgp-public-keys@keys.de.pgp.net
                                Widerruf Zertifikat an den Keyserver
                                verschicken

3.30.4. Holen

gpg --keyserver wwwkeys.de.pgp.net --recv-keys 0xKeyID
                                Public-Key vom Keyserver holen
mail -s "get thomasb@trash.net" pgp-public-keys@keys.de.pgp.net
                                Public-Key per E-Mail
                                vom Keyserver holen
gpg --import Key.txt            Public-Key inportieren

3.30.5. Signatur erzeugen und prüfen

gpg -a --sign Datei             einen Text signieren, erzeugt Datei.asc
gpg --verify Datei.asc Datei    eine Signatur prüfen
gpg --clearsign Datei           einen Text signieren,
                                erzeugt neue Datei.asc
gpg --verify Datei.asc          eine Signatur prüfen

3.30.6. Verschlüsseln

gpg -a -r Empfänger0xKeyID -e Datei
                                einen Text verschlüsseln,
                                erzeugt Datei.asc

3.30.7. Entschlüsseln

gpg Datei.asc                   einen verschüsselten und signierten Text
                                entschlüsseln und die Signatur prüfen,
                                erzeugt Datei

3.30.8. Schlüsselverwaltung

gpg --edit 0xKeyID              Schlüsselverwaltung
                                 help - Anzeige aller Befehle
                                 quit - Das Menu beenden

3.30.9. Anzeigen

gpg --list-keys                 zeigt alle öffentlichen Schlüssel
gpg --list-sigs                 zeigt alle Unterschriften
gpg --fingerprint               zeigt alle Fingerabdrücke

3.30.10. Exportieren

gpg -a --export 0xKeyID > Datei exportiert den Schlüssel 0xKeyID
                                in Datei
gpg -a --export > Datei         exportiert alle Schlüssel in Datei

3.31. X11 - Grafik

/etc/XF86Config                 bis XFree86.3.3.x Konfigurationsdatei
/etc/X11/XF86Config             ab XFree86.4.x Konfigurationsdatei
[Alt]+[F1] bis [F6]             Umschalten zwischen Textkonsolen  alle Shells
[AltGr]+[Fn]                    Umschalten zwischen den Textkonsolen n+12
[Alt]+[Pfeil links oder rechts] um durch die benutzten Konsolen zu stöbern
[Strg]+[Alt]+[F1] bis           Umschalten zu Textkonsolen        alle Shells
[Strg]+[Alt]+[F6]               aus X11 heraus
[Strg]+[Alt]+[F7]               Umschalten zu X11 aus Textkonsole alle Shells
                                bei Caldera 2.2 [Alt]+[F8]
[Strg]+[Alt]+[<--]              X-Server sofort beenden
[Strg]+[Alt]+[+]                verschiedene Auflösungen im laufenden
[Strg]+[Alt]+[-]                Betrieb wechseln
xf86config                      Shell-Konfigurationsprogramm für X 3+4
XF86Setup                       X-Konfigurationsprogramm bis XFree86.3.3.x
sax                             X-SuSE-Konfigurationsprogramm bis XFree86.3.3.x
sax2                            X-SuSE-Konfigurationsprogramm ab XFree86.4.x
startx                          X-Server starten
startx -- -bpp 16               X-Server mit 16 Bit starten
startx - -- :0 vt07             X-Server auf F7 starten
startx - -- :1 vt08             2. X-Server auf F8 starten
export WINDOWMANAGER=WM         X-Umgebungsvariable auf WM(kde, gnome,

3.31. X11 - Grafik

                                fvwm, olwm ...) ändern

3.31.1. Bildschirmschoner/Maus

xset s                          auf Standardeinstellungen zurücksetzen
xset s 60                       nach 1 Minute aktivieren
xset s blank                    schwarzen Bildschirm verwenden
xset s noblank                  X-Logo statt schwarzen Bildschirm anzeigen
xset s 60 3                     X-Logo alle 3 Sekunden neu platzieren
xset s off                      Bildschirmschoner deaktivieren
xset s on                       Bildschirmschoner einschalten
xset s activate                 Bildschirmschoner sofort aktivieren
xset q                          aktuelle Einstellungen anzeigen
xset -dpms                      Energy Star features ausschalten
xset +dpms                      Energy Star features einschalten
xsetroot -solid blue            Hintergrund
xset m default                  standart Mausbeschleunigung
xset m 3 10                     normal schnelle Maus
xset m 7 10                     schnelle Maus

3.31.2. X11 ohne Maus

[Umschalt]+[Strg]+[Num]         Maussteuerung am Ziffernblock ein/ausschalten
[4],[6],[8],[8]                 links, rechts, oben, unten
[*],[-]                         auf linke, rechte Maustaste umschalten
[5],[+],[0],[5]                 Maustaste, Doppelklick, gerückt halen, lösen

4. Verzeichnisse und Dateien

4.1. Dateibaum

/                               oberste Verzeichnis
                                im Dateisystem (Root/Wurzel)
.                               Verweis auf sich selbst
..                              Verweis auf das übergeordnete Verzeichnis
/bin/                           ausführbare Dateien der wichtigsten Befehle
#/bin/init                      -> /sbin/init
/boot/                          enthält die Dateien des LILO Bootloaders und
                                kann Kernel-Images enthalten
/boot/boot.b                    der LILO-Maschinencode
/boot/map                       Informationen für LILO
                                um den Betriebssystemkern zu starten
/boot/message                   wird vor der LILO-Bootauswahl ausgegeben
/boot/vmlinuz                   der Betriebssystemkern kann auch im / liegen
/cdrom/                         dient zur CDROM-Einbindung
/dev/                           Sammlung der Gerätedateien
/dev/audio                      ähnlich wie /dev/dsp, Daten werden y-Law codiert
/dev/cdrom                      Link auf den CD-Rom Treiber oft /dev/hdc
/dev/console                    reale Console
/dev/dsp                        Link auf den A/D-W. der Soundk. (-> /dev/dsp0)
/dev/dsp0                       Analog/Digital-Wandler der Soundkarte
/dev/fd0                        erstes Diskettenlaufwerk
/dev/fd1                        zweites Diskettenlaufwerk
/dev/full                       beim Schreiben wird der Fehler ENOSPC erzeugt
/dev/hda                        erstes (E)IDE Gerät
/dev/hda1 -> /dev/hda4          primäre Partitionen
/dev/hda5 -> /dev/hda?          logische Partitionen
/dev/hdb                        zweites (E)IDE Gerät
/dev/hdc                        drittes (E)IDE Gerät
/dev/hdd                        viertes (E)IDE Gerät
/dev/initrd                     zusätzliche RAM-Disk mit Kernelmodulen und
                                Bootsystem zur Initialisierung des Kernels
/dev/kmem                       virtueller Arbeitsspeicher
/dev/loop*                      ermöglicht eine Datei wie eine Diskette oder
                                Festplattenpartition zu mounten
/dev/lp0                        erste parallele Schnittstelle

/dev/lp1                        zweite parallele Schnittstelle
/dev/lp2                        dritte parallele Schnittstelle
/dev/md*                        zusammengelegte Festplatten linear,Raid0 oder 1
/dev/mem                        physikalischer Arbeitsspeicher
/dev/midi00                     direkte Kommunikation mit einem MIDI-Gerät
/dev/mixer                      Link auf den Mixer (-> /dev/mixer0)
/dev/mixer0                     Mischpult der 1. Soundkarte
/dev/modem                      Link auf den Modemtreiber (-> /dev/ttyS0)
/dev/mouse                      Link auf den Maustreiber (-> /dev/psaux)
/dev/music                      eine andere Art von Sequencer, speziell für die
                                MIDI-Schnittstelle
/dev/nst*                       SCSI-Streamer (No Rewind On Close)
/dev/null                       Mülleimer des Systems
/dev/port                       zum ansprechen einzelner IO Ports
/dev/psaux                      PS/2-Maus
/dev/pts/                       Unix98 PTY slaves
/dev/ram                        Link auf die RAM-Disk (-> /dev/ram0)
/dev/random                     zur Erzeugung kryptografisch hochwertiger
                                Zufallszahlen
/dev/rmt*                       QIC-02-Streamer
/dev/rtc                        batteriegepufferte CMOS-Uhr
/dev/sd*                        SCSI-Festplatten
/dev/sequencer                  Synthesizer der Soundkarte oder ein am MIDI-Port
                                angeschlossenes Gerät
/dev/sndstat                    Informationen über den Status des Soundtreibers
/dev/st*                        SCSI-Streamer
/dev/tty                        aktive virtuelle Console
/dev/tty1                       1. virtuelle Console
/dev/tty2                       2. virtuelle Console
/dev/ttyS0                      erste serielle Schnittstelle COM1
/dev/ttyS1                      zeite serielle Schnittstelle COM2
/dev/ttyS2                      dritte serielle Schnittstelle
/dev/ttyS3                      vierte serielle Schnittstelle
/dev/urandom                    zur Erzeugung von Zufallszahlen
/dev/xd*                        8-Bit XT-Festplattencontroller
/dev/zero                       zum Lesen beliebig vieler Nullbytes
/etc/                           Konfigurationsdateien
/etc/adjtime                    zur Korrektur der batteriegepufferten CMOS-Uhr
                                (clock)
/etc/bash.bashrc                globale bash konfiguration
#/etc/conf.modules               -> /etc/modules.conf
/etc/cryptotab                  /etc/fstab für Krypto-Filesystem
/etc/csh.login                  Startdatei für die C-Shell
/etc/diphosts                   eine Art /etc/passwd für SLIP Login
/etc/DIR_COLORS                 festlegen der Farben für ls

4.1. Dateibaum

/etc/exports                    Verzeichnisse und Rchnernamen, die diese
                                Verzeichnisse per NFS mounten dürfen
                                wird hier eingetragen
/etc/fdprm                      Parameter von Diskettenformaten
/etc/fstab                      um Benutzern das An- und Abmelden
                                von Dateisystemen zu erlauben
/etc/ftpaccess                  Woher ? Wann ? Was ? ...
/etc/ftpusers                   ... und Wer NICHT ?
/etc/gateways                   Rechner des lokalen Netzes die Kontakt mit
                                anderen Netzen haben
/etc/gettydefs                  Beschreibung der seriellen Terminals
/etc/group                      Benutzergruppen und ihre Mitglieder
/etc/host                       auflösen von Netzwerknamen
                                über die resolver-Bibliothek
/etc/host.allow                 Rechner und Netze mit denen Verbindung aufgebaut
                                werden darf
/etc/host.conf                  eine der Konfig. den Domain Name Service
/etc/host.deny                  Rechner und Netze die sich nicht mit diesem
                                Rechner verbinden dürfen
/etc/host.equiv                 Rechner die "gleichartig" behandelt werden
/etc/HOSTNAME                   hier steht der Name des Rechners
                                ohne den Domainnamen
/etc/hosts                      ordnet IP-Adressen Hostnamen zu
/etc/inetd.conf                 welche Services gestartet werden (inetd)
/etc/init                      -> /sbin/init
/etc/init/ Dateien für Upstart
/etc/init.d/                    Dateien für die Init-Levels
/etc/init.d/inetd               startet den inetd, z.B. zum Anmelden
                                vom Netzwerk
/etc/init.d/network             startet die Konfiguration
                                der Netzwerk Hard- und Software
/etc/init.d/portmap             starte den Portmapper,
                                um den RPC-Server verwenden zu können
/etc/init.d/route               setzt die statischen Routen im Netzwerk
/etc/init.d/sendmail            kontrolliert den sendmail-Prozess
                                in Abhängigkeit
/etc/init.d/rc0.d/ bis rc6.d/   init 0 bis 6
/etc/init.d/rcS.d/              init S
/etc/initscript                 init führt die Kommandos durch dieses Script
                                ondemand und respawn aus
#/etc/inittab                    Grunteinstellung der Init-Levels und Terminals
                                (/sbin/init)
/etc/isdn/                      ISDN-Konfigurationen
/etc/issue                      Begrüßungstext beim Login (getty)
/etc/ld.so.cache                zur Shared Libraries identifizierung (ldconfig)

/etc/ld.so.conf                 Verzeichnisse zu neuen Shared Libraries
                                (ldconfig)
/etc/lilo.conf                  Konfigurationsdatei des LILO
/etc/login.defs                 Login Einstllungen (login)
/etc/magic                      Magic Numbers zum Erkennen von Dateien (file)
#/etc/man.config                -> /etc/manpath.config
/etc/manpath.config             Verzeichnisse in den Manualpages gesucht werden
/etc/minicom.users              Benutzer die minicom benutzen dürfen
/etc/modules.conf               Modulinformationen ((für den Kerneld(Dämon)))
/etc/motd                       Begrüßung nach dem Anmelden
/etc/mtab                       Liste der aktuell zu Verfügung
                                stehenden Dateisystemen
/etc/mtools.conf                (un)logische Laufwerksbuchstaben
                                von MS-DOS für die M-Befehle
/etc/named.boot                 für den named Dämon des DNS
/etc/networks                   die Namen und IP der lokalen Netze
/etc/nntpserver                 der Name und die IP des Newsrechners
/etc/nologin                    macht jedes "normale" Einloggen unmöglich, nur
                                die root kann sich anmelden, sonst wird der
                                Inhalt von nologin ausgegeben (login)
/etc/nscd.conf                  Konfiguration des Name Service Cache Dämon
/etc/nsswitch.conf              in welcher Reihenfolge bestimmte
                                Informationen abgefragt werden
/etc/opt/                       Rechner-spezifische Konfigurationsdateien
                                der Pakete
/etc/passwd                     Liste aller Benutzer mit Informationen
/etc/powerstatus                Zustand der Stromversorgung
/etc/printcap                   Beschreibung des oder der Drucker des Systems
                                (lpd)
/etc/profile                    Globale Benutzerprofile
/etc/prtocols                   Liste aller Internetprotokolle die vom Kernel
                                unterstützt werden
/etc/psdatabase                 enthält kernelabhängige Daten für procps
/etc/rc*                        Systeminitialisierungsdateien (init)
/etc/rc.config                  zentrale Konfigurationsdatei -> /etc/sysconfig/
/etc/rc.config.d/               weitere Dateien mit rc.config Variablen
/etc/resolv.conf                bestimmt ob und wo ein Nameserver erreicht
                                werden kann
/etc/rpc                        enthält die Zuordnung der durch den rpc-Service
                                bereitgestellten Netzdienste zu Socketnummern
/etc/securetty                  Terminals von den sich der Benutzer
                                root anmelden darf (login)
/etc/services                   ordnet Portnummern Servicenamen zu
/etc/shadow                     hier sind die Shadow-Passwörter gespeichert
/etc/shells                     Liste aller Shells

/etc/shutdown.allow             Liste der Benutzer die zum Herunterfahren des
                                Systems berechtigt sind
/etc/skel/                      Dateien die beim Anlegen
                                eines Benutzers in das ~ kopiert werden
/etc/SuSE-release               Angaben zur installierten SuSE Linux version
/etc/sysconfig/                 zentrale Konfigurationsdateien -> /etc/rc.config
/etc/syslogd.conf               legt fest wohin Meldungen geschrieben werden
                                (syslogd)
/etc/termcap                    Beschreibungen für Terminaleigenschaften (getty)
/etc/ttytype                    legt den voreingestellten Terminaltyp
                                für die Terminals fest
/etc/XF86Config                 bis XFree86.3.3.x Konfigurationsdatei
/etc/X11/XF86Config             ab XFree86.4.x Konfigurationsdatei
/floppy/                        dient zur Floppy-Einbindung
/home/                          Heimatverzeichnisse der Benutzer
/home/~/.bash_history           gespeicherte Eingaben der bash
/home/~/.bashrc                 Konfiguration der bash
/home/~/.ctwmrc                 Konfiguration des ctwm-Fenstermanagers
/home/~/.exrc                   Konfiguration des vi, ex
/home/~/.fvwmrc                 Konfiguration des fvwm-Fenstermanagers
/home/~/.openwin-menu           Konfiguration des olvwm und olwm-Fenstermanagers
/home/~/.profile                wird nach dem User-Anmelden in der bash
                                ausgeführt
/home/~/.rhosts                 erlaubt die r-Kommandos
/home/~/.X.err                  Meldungen des X-Servers
/home/~/.xinitrc                diese Datei wird von .xsession ausgeführt
/home/~/.xsession               diese Datei wird nach dem Befehl
                                startx ausgeführt
/lib/                           gemeinsam genutzte Bibliotheken Shared Libraries
/lib/modules/                   nachladbare Module
/lost+found/                    verlorene Daten, ist in jeder Wurzel
                                des EXT2-Dateisystems
/media/cdrom/                   dient zur CDROM-Einbindung, ist oft im /
/media/floppy/                  dient zur Floppy-Einbindung, ist oft im /
/mnt/                           für temporär einzuhängende Dateisysteme
/mnt/cdrom/                     dient zur CDROM-Einbindung, ist oft im /
/mnt/floppy/                    dient zur Floppy-Einbindung, ist oft im /
/opt/                           kommerzielle Systemerweiterungen
/opt/kde/                       grafische Benutzeroberfläche KDE
/proc/                          virtuelles Filesystem über laufende Prozesse
/proc/cpuinfo                   Informationen zur CPU
/proc/devices                   Liste der wichtigsten Gerätetreiber
/proc/dma                       Liste der verwendeten DMA-Kanäle
/proc/filesystems               Liste der bekannten Dateisystemtypen
/proc/interrupts                Liste der Interrupts

/proc/ioports                   bekannte und definierte EA-Schnittstellen
/proc/kcore                     Gerätedatei für den Zugang
                                zum physikalischen Hauptspeicher
/proc/kmsg                      hier können Systemfehlermeldungen
                                ausgelesen werden
/proc/ksyms                     Liste der Kernel-Symbole und
                                ihrer Speicheradressen
/proc/loadavg                   durchschnittliche Systembelastung
                                in den letzten 1, 5 und 10 Min.
/proc/meminfo                   Beschreibung der aktuellen Speicherauslastung
/proc/modules                   Liste der geladenen Module und
                                Anzahl der aktuellen Nutzungen
/proc/mounts                    Liste der eingehängten Dateisysteme
/proc/net/                      Informationen zur Netzwerkauslastung
/proc/pci                       Liste der gefundenen Geräte am PCI-Bus
/proc/scsi/                     Informationen über SCSI-Geräte
/proc/stat                      Liste allgemeiner Statistiken zum System
/proc/uptime                    Sekunden seit dem Systemstart und
                                der Leerlaufzeit
/proc/version                   aktuelle Version des Linux-Kernels
/root/                          Heimatverzeichnis des Systemverwalters root
/sbin/                          Administrationskommandos
/sbin/init                      Nach dem Kernelstart wird versucht das
                                Programm init zu starten
#/sbin/init.d/                  -> /etc/init.d/
/tmp/                           temporäre Dateien
/usr/                           ausführbare Dateien, Libraries, X Window u.s.w
/usr/bin/                       allgemein verfügbare Programmdateien
#/usr/doc/                      -> /usr/share/doc/
/usr/games/                     Spiele :-)
/usr/include/                   Headerdateien für den C-Compiler
/usr/include/g++/               Headerdateien für den C++-Compiler
/usr/info/                      Infosystem fur GNU-Kommandos
/usr/lib/                       Programmbibliotheken
/usr/lib/terminfo/              Verzeichnis mit Beschreibungen
                                für Terminaleigenschaften
/usr/local/                     Ablage von Dateien und Kommandos die nicht
                                zur Distribution gehören
/usr/man/                       Linux Handbuch
/usr/sbin/                      Superuser Programmdateien
/usr/share/doc/                 Dokumentationen
/usr/share/doc/packages/        Dokumentation der Programme
/usr/src/                       Quellcode für den Kernel und weitere Programme
/usr/src/linux/                 Kernel-Source
/usr/src/linux/arch/            Hardwarearchitektur-abhängige

                                Bestandteile des Kerns
/usr/src/linux/arch/alpha/      DEC-Alpha-Prozessoren
/usr/src/linux/arch/i386/       386-Prozessoren
/usr/src/linux/arch/m68k/       Motorola 68k-Prozessoren
/usr/src/linux/arch/mips/       MIPS-Prozessoren R3000, R4000 bis R10000
/usr/src/linux/arch/ppc/        Power-PC-Prozessor (ursprünglich IBM)
/usr/src/linux/arch/sparc/      SPARC-Prozessoren der Firma SUN
/usr/src/linux/Documentation/devices.txt        offizielle Liste der
                                registrierten Devices mit ihren Gerätenummern
/usr/src/linux/drivers/         Zeichen-, Block-orientierte,
                                Netz-,Soundkarten-Gerätetreiber
/usr/src/linux/drivers/block/   Treiber für blockorientierte Ein-/Ausgabegeräte
                                wie Festplatten
/usr/src/linux/drivers/cdrom/   Treiber für CD-ROM Laufwerke
                                außer Atapi/IDE und SCSI
/usr/src/linux/drivers/char/    Zeichen. Treiber serielle Schnittstellen,
                                Bildschirm, Tastatur usw.
/usr/src/linux/drivers/net/     Treiber für die Netzwerkkarten
/usr/src/linux/drivers/pci/     Spezielle Treiber für PCI-Bus-Bausteine
/usr/src/linux/drivers/sound/   Soundkartentreiber
/usr/src/linux/drivers/scsi/    SCSI-Treiber
/usr/src/linux/fs/              Dateisysteme
/usr/src/linux/ipc/             InterProzessKommunikation,
                                z.B. Shared Memory, Semaphoren
/usr/src/linux/include/         Header-Dateien mit Struktur- und
                                Konstantendefinitionen
/usr/src/linux/init/            Initialisierungscode beim Starten des Systems
/usr/src/linux/kernel/          zentrale Aufgaben, z.B. Prozessverwaltung und
                                Schedulimg usw.
/usr/src/linux/mm/              Speicherverwaltung
/usr/src/linux/modules/         nachladbarer Teil des Kerns
/usr/src/linux/net/             Implementierung der Protokolltreiber
                                für TCP/IP,SPX/IPX usw.
/usr/src/linux/README           Installationsbeschreibung für den Kernel
/usr/X11R6/                     für Daten zum X-Window-System
/usr/X11R6/bin/                 Programmdateien die mit X-Window-System arbeiten
/usr/X11R6/lib/X11/             Fenstermanager
/usr/X11R6/lib/X11/app-defaults/        voreingestellte Konfigurationen der
                                Anwendungen
/var/                           sich schnell oder häufig ändernde Daten
/var/adm/inst-log/              Protokolldateien zur installation
/var/lib/rpm/Packages           rpm-Datenbank
/var/lib/rpm/packages.rpm       -> /var/lib/rpm/Packages
/var/log/                       Protokolldateien
/var/log/boot.msg               Kernelmeldungen vom letzten Start

/var/log/messages               Datei in der die Kernel Meldungen
                                gespeichert werden
/var/log/syslog                 zeit an welches Modul fehlt
/var/tmp/                       für große temporäre Dateien
/vmlinuz                        der Defaultkernel kann auch in /boot/ liegen

4.2. /etc/fstab

#Device   Mountpunkt Typ      Optionen                             Dump Check
/dev/hdd1 /          reiserfs defaults                             1    1
/dev/hda1 /boot      ext2     defaults                             1    2
/dev/sda1 swap       swap     defaults                             0    0
none      /proc      proc     defaults                             0    0
/dev/hda3 /temp      vfat     defaults,umask=7000,uid=500,gid=100  0    0
/dev/hda2 /windows   vfat     defaults                             0    0
/dev/hdc  /cdrom     auto     ro,noauto,user,exec                  0    0
/dev/fd0  /floppy    auto     noauto,user                          0    0
/dev/hda3 /save      reiserfs loop,encryption=twofish,noauto,users 0    0
server:/  /server    nfs      rw,noauto,user,exec                  0    0

4.3. /dev/

ls -l /dev/fd0
brw-rw-rw- 1 root disk     2,   0 Feb 16 16:30 /dev/fd0
|                          |    |                   +----- Gerät
|                          |    +------ Minor-Device-Nummer(Nebennummer)
|                          +----------- Major-Device-Nummer(Hauptnummer)
+----------------- b-blockorientierte Geräte c-zeichenorientierte Geräte

Die Verbindung zum Kernel wird über Slots oder Kanäle hergestellt, die nummeriert sind und hinter denen sich die Treiber verbergen. Die Nummer des Gerätetreibers wird als Haupgerätenummer(Major Device Number) bezeichnet. Ein Treiber kann mehrere Geräte des gleichen Typs verwalten. Um die einzelnen Geräte zu unterscheiden, wird dem Treiber eine zweite Zahl, die Untergerätenummer (Minor Device Number), übergeben. Diese beiden Zahlen charakterisieren jede Datei im /dev Verzeichnis. Zusätzlich werden noch zwei Arten von Geräten unterschieden : Die blockorientierten Geräte mit direktem Zugriff, wie z.B. Disketten oder Festplatten, und die zeichenorientierten squentiellen Geräte, wie Drucker, Terminal oder Maus. Damit hat jede Gerätedatei drei “Koordinaten“, mit der sie vom Kernel, unabhängig von ihrem Namen, eindeutig identifiziert werden kann. Die offizielle Liste der registrierten Devices mit ihren Gerätenummern ist bei den Kernelsourcen in der Datei /usr/src/linux/Documentation/devices.txt zu finden.

4.4. Dateisystemtypen unter Linux

4.4. Dateisystemtypen unter Linux

affs    Ein auf dem Amiga verwendetes Dateisystem (engl. Amiga Fast Filesystem).
ext2    Das Standard-Dateisystem unter Linux (engl. Second extended Filesystem).
ext3    Journaling Filesystem
hpfs    Standard-Dateisystem von IBM OS/2 (engl. High Performance Filesystem).
        Dieses wird von Linux nur mit Lesezugriff unterstüzt.
iso9660 Standard-Dateisystem auf CD-ROMs.
minix   Dieses Dateisystem hat seinen Ursprung in akademischen Lehrprojekten
        über Betriebssysteme und war das erste Dateisystem, welches für Linux
        verwendet wurde. Heute wird es unter Linux vornehmlich als Dateisystem
        für Disketten verwendet.
msdos   Ursprünglich von DOS verwendetes Dateisystem, welches aber bis heute von
        diversen Betriebssystemen genutzt wird.
ncpfs   Dateisystem für das Novell-Volumes.
nfs     Hier sind die Daten auf der Festplatte eines anderen Rechners und
        werden über das Netzwerk zugänglich gemacht (engl. Network Filesystem).
proc    Prozess-Dateisystem (virtuell).
reiserfs        Das ReiserFS ist ein hochperformantes "'Journaling Filesystem"';
                seit SuSE Linux 6.4 auf x86-Architekturen verfügbar.
smbfs   SMB (engl. Server Message Block) ist ein Protokoll, das von WfW,
        Windoofs NT und LAN Manager verwendet wird, um Dateien über ein Netzwerk
        verfügbar zu machen.
sysv    Von SCO-Unix, Xenix und Coherent (kommerzielle UNIX-Systeme für PCs)
        verwendetes Dateisystem.
ufs     Von BSD, SunOS und NeXTstep verwendetes Dateisystem; dies Dateisystem
        wird von Linux nur mit Lesezugriff unterstützt.
umsdos  Setzt auf einem gewöhnlichen fat-Dateisystem auf (engl. UNIX on MSDOS)
        und erreicht durch Anlegen spezieller Dateien die notwendige UNIX-
        Funktionalität (Rechte, Links, lange Dateinamen); es ist jedoch sehr
        langsamm.
vfat    Erweiterung des fat-Dateisystems hinsichtlich der Länge der Dateinamen
        (engl. Virtual FAT).
ntfs    Windows NT-Dateisystem.

4.5. /etc/group

#Gruppenname:Paßwort:Gruppennummer:Mitgliederliste
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:
sys:x:3:
tty:x:5:
disk:x:6:higi

lp:x:7:
shadow:x:15:root,gdm
audio:x:17:root,higi
public:x:32:
video:x:33:higi
game:x:40:higi
modem:x:43:
users:x:100:
nogroup:x:65534:root

4.6. /etc/hosts

# IP-Adresse #Aliasnamen
127.0.0.1  localhost
127.0.1.1  latex
::1        localhost ip6-localhost ip6-loopback
ff02::1    ip6-allnodes
ff02::2    ip6-allrouters
192.168.0.10 rechner rechner.loc www.rechner.loc

4.7. /etc/inittab

Nach dem Kernelstart wird versucht das Programm init zu starten. Dabei werden nacheinander die Verzeichnisse /etc/, /bin/ und /sbin/ nach init abgesucht. Kann init /dev/console nicht öffnen wird im Einzelbenutzerbetrieb (Single User Mode) gestartet. Beim LILO-Bootpromt kann init=/bin/sh angegeben werden um die Shell anstelle von init zu laden. Das Programm init liest die Datei /etc/inittab und wird durch die Datei das System konfigurieren. /etc/inittab wird vom Kommando init Zeile für Zeile abgearbeitet. In jeder Zeile seht jeweils eine Anweisung. Jede Zeile wird durch Doppelpunkte unterteilt. Der Aufbau sieht wie folgt aus:

Terminal:Termcapeintrag:Gettykommando   Simpleinit von Peter Orbaek mit
                                        Erweiterung von Werner Almesberger

4.7.1. Terminal

Bezeichnet das Terminal (tty1, tty2, ttyS0 ...)

4.7.2. Termcapeintrag

Wird in die TERM Variable der Shell geschrieben und sollte mit einem Eintrag in der Datei /etc/termcap übereinstimmen.

4.7. /etc/inittab

4.7.3. Gettykommando

Pfad und Optionen zum Getty-Kommando

# Beispiel einer inittab für simpleinit # Format: Terminal:Termcapeintrag:Gettykommando tty1:linux:/sbin/getty 9600 tty1 tty2:console:/sbin/getty 9600 tty2 tty5:con100x40:/sbin/getty 9600 tty5 ttyS1:vt102:/sbin/getty 9600 ttyS1

Kürzel:Arbeitsstufen:Modus:Kommando     Sysvinit von Mike Jagdis und
                                        Miquel van Smoorenburg

4.7.4. Kürzel

Jede Aktion muß mit einem eindeutigen (maximal vierstelligen, a.out oder Libraries<5.2.18 maximal zweistelligen) Kürzel versehen werden, das bei Einträgen in Logfiles und bei Fehlermeldungen ausgegeben wird.

4.7.5. Arbeitsstufen

Es werden hier die Arbeitsstufen (Runlevel) eingetragen. Zulässige Arbeitsstufen sind 0 - 9 und s. Es können auch die Pseudoarbeitsstufen(ondemand) a, b, c und q für einmalig auszuführende Kommandos verwendet werden. Es wird ohne Groß und Kleinschreibung bezeichnet. In einer Zeile können bis zu 11 Runlevel zugeordnet werden. Wenn das Feld für den Runlevel leer ist, wird die Aktion bei jedem Moduswechsel ausgeführt.

0       Systemhalt
S       Einzelbenutzerbetrieb (Single User Mode)
1       Einzelbenutzerbetrieb (Single User Mode)
2       Lokaler Mehrbenutzerbetrieb ohne entferntes Netzwerk
        (Local multiuser without remote network)
3       Voller Mehrbenutzerbetrieb mit Netzwerk
        (Full multiuser with network)
4       Frei (Not used)
5       Voller Mehrbenutzerbetrieb mit Netzwerk und KDM, GDM oder XDM
        (Full multiuser with network and xdm)
6       Systemneustart (System reboot)
Q       Quit zum Neueinlesen der inittab

4.7.6. Modus

Gibt an wie das Kommando im letzten Feld ausgeführt werden soll.

initdefault     Bestimmt den Runlevel beim Systemstart.
sysinit         Wird einmal nach dem Kernelstart ausgeführt.
bootwait        Wird einmal ausgefürt, wenn in einem Mehrbenutzerbetrieb
                gestartet wird und wartet bis das Kommando beendet ist.
boot            Wie bootwait nur das nicht gewartet wird.

respawn         Überwacht das laufende Kommando und startet es neu, wenn es
                beendet wurde. Wird es in zwei Minuten 10 mal neu gestartet,
                setzt init das Kommando für fünf Minuten aus.
ondemand        Wie respawn, um mit Buchstaben gekennzeichnete Level einzelne
                Kommandos mit telinit zu starten.
wait            Wartet bis das Kommando beendet ist.
once            Wird einmal ausgefürt, es wird nicht gewartet.
off             Wenn das Kommando läuft, wird es angehalten.
ctrlaltdel      Kommando (Signal SIGINT, [Strg]+[Alt]+[Entf]) z.B. Rebooten des
                Systems.
kbrequest       Kommando wird ausgeführt, wenn das Signal SIGWINCH
                [Alt]+[Pfeil hoch] von der Tastatur kommt.
powerwait       Wenn init sich in einem passenden Runlevel befindet, das
                Signal SIGPWR erhält oder über Pipeline /dev/initctrl den
                entsprechenden Befehl erhält und wartet auf Beendigung des
                Kommandows. Das Signal kann mit Hilfe eines Dämons von einer USV
                erzeugt werden.
powerfail       Wie powerwait wartet jedoch nicht.
powerfailnow    Wie powerwait es muß die Datei /etc/powerstatus zusätzlich das
                Wort Low enthalten. So kann das APM eines Notebooks mit Hilfe
                eines Dämons das System herrunterfahren.
powerokwait     Wie powerwait es muß die Datei /etc/powerstatus zusätzlich das
                Wort OK enthalten. Auf diese weise kann das System in den
                normalen Zustand gebracht werden, nachdem die Stromversorgung
                wieder hergestellt ist.

4.7.7. Kommando

Pfad und Optionen zum Kommando, wird durch die Bourne-Again-Shell abgearbeitet. Bei jedem Kommandostart wird versucht die Datei /etc/initscript abzuarbeiten, die dann das Kommando startet.

# Beispiel einer inittab für sysvinit
# Format: Kürzel:Arbeitsstufen:Modus:Kommando
# Bestimmt den Runlevel beim Systemstart
id:5:initdefault:
# Erstes Script, wenn nicht im Notfallsystem (-b) gestartet wird.
si::bootwait:/etc/init.d/boot
# /etc/init.d/rc übernimmt die Runlevel Behandlung
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2

4.8. /etc/passwd

l3:3:wait:/etc/init.d/rc 3
#l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Bestimmt den Einzelbenutzerbetrieb (Single User Mode)
ls:S:wait:/etc/init.d/rc S
~~:S:respawn:/sbin/sulogin
# Aktion bei Signal SIGINT, [Strg]+[Alt]+[Entf]
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now
# Aktion bei Signal SIGWINCH [Alt]+[Pfeil hoch]
kb::kbrequest:/bin/echo "'Keyboard Request -- edit /etc/inittab to let this work."'
# Aktion bei Stormausfall und Wiederherstellung
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
#pn::powerfail:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop
# getty-Programme für die normalen Runlevels
1:2345:respawn:/sbin/mingetty --noclear tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102

4.8. /etc/passwd

#Benutzername:Paßwort:Benutzernummer:Gruppennummer:GCOS:Heimat:Shell
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash
games:x:12:100::/var/games:/bin/bash
man:x:13:2::/var/cache/man:/bin/bash
ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash
nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash
higi:x:500:100:Higi:/home/higi:/bin/bash
gast:x:501:100:Gast:/home/gast:/bin/bash

5. Die Shells

5.1. Die Shells

Eine Shell ist ein Kommando-Interpreter, ein Programm das durch ein anderes ersetzt werden kann. Es zerlegt die Kommandozeile, führt Sonderzeichen durch und reicht das Kommando an UNIX weiter. Ohne Shell gibt es keinen Zugang zum Betriebssystem.

/bin/sh         Bourne-Shell            zum programmieren
/bin/ksh        Korn-Shell              Mischung aus C-und Bourne-Shell
/bin/csh        C-Shell                 zum interaktiven Arbeiten
/bin/bash       Bourne-Again-Shell
/bin/tcsh       TC-Shell
export          Setzt Umgebungsvariablen, Variablen exportieren
locate          Findet Dateien anhand einer Datenbank
setenv          Setzt Umgebungsvariablen unter Nicht-Bash Shells, z.B. csh
unset           Variable löschen in ksh, bsh und bash
unsetenv        Variable löschen in csh

5.2. Die Start-Scripts

~/.bashrc       bash

5.3. Tastenkombinationen

[Strg]+[l]                         Bildschirm löschen           bash und csh
[Strg]+[a] oder [Pos 1]            Zeilenanfang                 bash und csh
[Strg]+[e] oder [Ende]             Zeilenende                   bash und csh
[Alt]+[f]                          Wort vorwäts                 bash und csh
[Alt]+[b]                          Wort rückwärts               bash und csh
[Strg]+[c]                         Befehlseingabe verwerfen     alle Shells
[Strg]+[c]                         Programm abbrechen
[Pfeil rechts] und [Pfeil links]   Cursor bewegen               bash und csh
[Pfeil hoch] und [Pfeil runter]    History-Scrolling            bash und csh
[Strg]+[r]                         in der History suchen        bash
[Tab]                              Komplettierung               bash und csh
[Strg]+[d]                         beendet die Shell            alle Shells

5. Die Shells

[Strg]+[d] oder [Entf]             ein Zeichen löschen
[Strg]+[h] oder [Backspace]        Zeichen rückwärts löschen
[Strg]+[k]                         Zeile ab Cursor löschen
[Alt Gr]+[Umschalt]                zwei folgende Zeichen vereinen
                                   ae -> AE, co -> \texteuro
[Strg]+[z]                         im Vordergrund laufendes Programm anhalten
                                   Fortsetzung mit fg
[Umschalt]+[Bild hoch] und         vorherige Textausgabe        alle Shells
[Umschalt]+[Bild runter]           zurückholen
[Alt]+[F1] bis [F6]                Umschalten zwischen Textkonsolen  alle Shells
[AltGr]+[Fn]                       Umschalten zwischen den Textkonsolen n+12
[Alt]+[Pfeil links oder rechts]    um durch die benutzten Konsolen zu stöbern
[Strg]+[Alt]+[F1] bis              Umschalten zu Textkonsolen        alle Shells
[Strg]+[Alt]+[F6]                  aus X11 heraus
[Strg]+[Alt]+[F7]                  Umschalten zu X11 aus Textkonsole alle Shells
                                   bei Caldera 2.2 [Alt]+[F8]
[Strg]+[Alt]+[<--]                 X-Server sofort beenden
[Strg]+[Alt]+[+]                   verschiedene Auflösungen im laufenden Betrieb
[Strg]+[Alt]+[-]                   wechseln
[Strg]+[Alt]+[Entf]                Signal SIGINT z.B. reboot            Shell

5.4. Die C-Shell

~               Home-Verzeichnis
~user           Home-Verzeichnis des Benutzers user
*               beliebige Zeichen-kette
?               genau Zeichen
{a,b,c}         a oder b oder c
[aceg]          genau eines der Zeichen
[a-z]           a bis z
[!adfh]         kein a, d, f, h
´´  maskiert alles
\               maskiert das nachfolgende Zeichen
""              maskiert $ ` \ nicht
> Datei         Ausgabe in die Datei, stdout
>& Datei        Ausgabe in die Datei, stdout und stderr
>>Datei         Unlenkung in die Datei, stdout umgelenkt
< Datei         von der Datei lesen, anstatt von stdin zu lesen
set noclobber   Überschreiben einer vorhandenen Datei verhindern
|               Ausgabekanal eines Kommandos direkt in den Eingabekanal eines
                anderen Kommandos leiten
#!Programm      so beginnt eine Datei die vom Progamm ausgeführt wird
$HISTSIZE       History-Größe
$LS_OPTIONS     ls Funktionen

5.5. Bash rechnen

$PATH           Pfad zu den Programmdateien
Programm &      Programm im eigenem Prozess starten

5.5. Bash rechnen

echo $((1+1))   gibt 1 aus
a=4
b=5
echo $((a*b))   gibt 20 aus
echo $((a-b))   gibt -1 aus

Teil II. Programme

6. Der Texteditor vi/vim

59 Der vi-Editor ist auf UNIX/Linux(neben Emacs) der meistverwendete Texteditor. Die Bedienung erfolgt über den Befehls- und Kommando-modus. Da es nicht gerade einfach ist sich diese Optionen zu merken, folgt eine Auflistung der meist gebrauchten Optionen.

6.1. Aufruf

vi              Editor vi aufrufen
vi Datei        Editor vi aufrufen und Datei öffnen
vi -r           swap-Dateien anzeigen
vi -r Datei     Datei nach einem Stromausfall oder Absturz wieder herstellen
vi -R Datei     Datei schreibgeschützt öffnen

6.2. Eingabemodus (input mode)

Um in den Eingabemodus zu gelangen muss A, C, I, O, R, S, a, i, o oder s eingegeben werden. i ist eine gute Wahl. Mit <Esc> wird der Eingabemodus verlassen.

6.3. Befehlsmodus (visual mode)

6.3.1. Eingeben:

        (n)i eingeben   fügt den eingeben Text (n mal) vor dem Cursor ein
        (n)a eingeben   fügt den eingeben Text (n mal) hinter dem Cursor ein
        (n)I eingeben   fügt den eingeben Text (n mal) am Zeilenanfang ein
        (n)A eingeben   fügt den eingeben Text (n mal) am Zeilenende ein
        (n)o eingeben   fügt unter der aktuellen Zeile (n neue Zeilen)
                        mit den eingeben Text ein
        (n)O eingeben   fügt über der aktuellen Zeile (n neue Zeilen)
                        mit den eingeben Text ein

6.3.2. Überschreiben:

        (n)R eingeben   überschreibt den Text mit eingeben
        <Einf>          wechselt zwischen INSERT und REPLACE
        (n)r Taste      überschreibt den Text mit (n mal) Taste

                von dem Cursor nach rechts

6.3.3. Bewegen:

(n)h            Cursor um (n) Zeichen nach links bewegen
(n)<Strg>+h     Cursor um (n) Zeichen nach links bewegen
(n)l            Cursor um (n) Zeichen nach rechts bewegen
(n)<SPACE>      Cursor um (n) Zeichen nach rechts bewegen
(n)|            Cursor zur Spalte (n) bewegen
(n)t Taste      Cursor vor das (n) Zeichen Taste nach rechts bewegen
(n)f Taste      Cursor auf das (n) Zeichen Taste nach rechts bewegen
(n)T Taste      Cursor vor das (n) Zeichen Taste nach links bewegen
(n)F Taste      Cursor auf das (n) Zeichen Taste nach links bewegen
(n)j            Cursor um (n) Zeilen abwärts bewegen
(n)k            Cursor um (n) Zeilen aufwärts bewegen
(n)w            Cursor um (n) Wörter nach rechts bewegen
(n)W            Cursor um (n) Wörter(Space) nach rechts bewegen
(n)b            Cursor um (n) Wörter nach links bewegen
(n)B            Cursor um (n) Wörter(Space) nach links bewegen
(n)e            Cursor an das (n) Wortende nach rechts bewegen
(n)E            Cursor an das (n) Wortende(Space) nach rechts bewegen
^Cursor auf das erste Zeilenzeichen stellen
0               Cursor vor das erste Zeilenzeichen stellen
(n)_Cursor auf das erste Zeilenzeichen stellen und
                (n-1) Zeilen nach unten bewegen
$               Cursor zum Zeilenende bewegen
(n)+            Cursor auf das erste Zeilenzeichen stellen und
                (n) Zeilen abwärts bewegen
(n)-            Cursor auf das erste Zeilenzeichen stellen und
                (n) Zeilen aufwärts bewegen
(n))            Cursor um (n) Sätze abwärts bewegen
(n)(            Cursor um (n) Sätze aufwärts bewegen
(n)}            Cursor um (n) Absätze abwärts bewegen
(n){            Cursor um (n) Absätze aufwärts bewegen
(n)<Strg>+u     Cursor um 1/2 Bildschirm oder (n Zeilen)
                aufwärts bewegen
(n)<Strg>+d     Cursor um 1/2 Bildschirm oder (n Zeilen)
                abwärts bewegen
<Strg>+f        Cursor um 1 Bildschirm abwärts bewegen
<Bild runter>   Cursor um 1 Bildschirm abwärts bewegen
<Strg>+b        Cursor um 1 Bildschirm aufwärts bewegen
<Bild hoch>     Cursor um 1 Bildschirm aufwärts bewegen
(n)<Strg>+e     scrollt den Cursor (n) Zeilen abwärts
(n)<Strg>+y     scrollt den Cursor (n) Zeilen aufwärts
'    Taste      Cursor zu der mit Taste markierten Zeile bewegen

6.3. Befehlsmodus (visual mode)

`    Taste      Cursor zu dem mit Taste markierten Zeichen bewegen
gg              Cursor zum Textanfang bewegen
(n)G            Cursor zur Zeile (n) bewegen
G               Cursor zum Textende bewegen
H               Cursor an den Anfang der Bildschirmseite setzen
(n)H            Cursor zur Zeile (n) auf den Bildschirm bewegen
M               Cursor auf den Anfang der mittleren
                Bildschirmzeile bewegen
L               Cursor an das Ende der Bildschirmseite setzen
(n)L            Cursor vom Ende zur Zeile (n) auf den Bildschirm bewegen
z    Taste      bewegt die aktuelle Zeile zum Anfang(+), Ende(-) oder
                zur Mitte(.) des Bildschirms

6.3.4. Löschen und Eingeben:

(n)s eingeben   löscht (n) Zeichen von dem Cursor nach rechts und
                fügt den eingeben Text ein
c Bereich eingeben      löscht den markierten Bereich und
                fügt den eingeben Text ein
cc   eingeben   löscht den Zeilentext und fügt den eingeben Text ein
cw   eingeben   löscht bis zum ende des Wortes und
                fügt den eingeben Text ein
C    eingeben   löscht den Text bis Zeilenende und
                fügt den eingeben Text ein
(n)S eingeben   löscht (n) Zeilen nach unten und
                fügt den eingeben Text ein ( wie (n)cc )

6.3.5. Löschen:

d    Bereich    löscht den markierten Bereich
dd              löscht die ganze Zeile
D               löscht den Text bis Zeilenende
dw              löscht bis zum Ende des Wortes
(n)x            löscht (n) Zeichen auf den sich der Cursor befindet
<Entf>          löscht das Zeichen auf den sich der Cursor befindet
(n)X            löscht (n) Zeichen links vom Cursor

6.3.6. Aufheben:

u               macht die letzte Änderung rückgängig
U               macht die letzte Änderung der ganzen Zeile rückgängig

6.3.7. Verschieben:

>    Bereich    schiebt die markierten Zeilen nach rechts

>>              schiebt die Zeile auf den sich der Cursor befindet
                nach rechts
<    Bereich    schiebt die markierten Zeilen nach links
<<              schiebt die Zeile auf den sich der Cursor befindet
                nach links

6.3.8. Zusammenfügen:

(n)J            hängt (n) Zeilen nach unten aneinander

6.3.9. Markieren:

m    Taste      markiert eine Zeile oder Zeichen
v               setzt den Anfang einer Markierung
V               setzt den Anfang einer Zeilenmarkierung

6.3.10. Kopieren:

y    Bereich    kopiert den mit Bereich angegebenen Text in einen Puffer
(n)Y            kopiert die aktuelle und (n) Zeilen in einen Puffer
"    Taste      legt den nächsten Zwischenpuffer fest
@    Taste      interpretiert den Inhalt des Zwischenspeichers als
                vi Befehle und führt sie aus

6.3.11. Einfügen:

p               fügt den aktuellen Puffer hinter dem Cursor ein
P               fügt den aktuellen Puffer vor dem Cursor ein

6.3.12. Suchen:

(n)%            platziert den Cursor auf die zugehörige () {} [], oder
                platziert den Cursor auf (n) Prozent der Datei
/    Text       sucht den Text vorwärts
?    Text       sucht den Text rückwärts

6.3.13. Wiederholen:

.               wiederholt das letzte EDIT Kommando
n               wiederholt das letzte Suchen
N               wiederholt das letzte Suchen in umgekehrter Richtung
(n);            wiederholt das vorgehende f, F, t, T Kommando
(n),            wiederholt das vorgehende f, F, t, T Kommando in
                umgekehrter Richtung
(n)&            wiederholt den letzten :s// Befehl an der momentanen
                Position

6.4. Kommandomodus (colon mode)

6.3.14. Sonstige Kommandos:

<Strg>G         zeigt den Dateistatus und die momentane Zeilennummer
ZZ              speichert die Datei und beendet vi
<Strg>L         erneuert den Bildschirm

6.4. Kommandomodus (colon mode)

Um in den Kommandomodus zu gelangen muss : eingegeben werden.

6.4.1. Texteingabe Kommandos

q(!)            Editor verlassen
wq              Editor mit speichern verlassen
xit             arbeitet wie wq, speichert nur bei einer Änderung
x(!)            Editor mit speichern verlassen
w(!) Name       Datei mit Namen speichern
h               Hilfe anfordern
args Dateien    Liste der Dateien anlegen
args            Dateien auflisten
next(!)         schaltet zur nächsten Datei
previous(!)     schaltet zur vorhergehenden Datei
rewind(!)       schaltet zur ersten Datei
edit(!) Datei   dient zum wechseln der Datei
!Befehl         externen Befehl ausführen

7. LaTeX^{7.1. L^{A}TEX}^{L^{A}TEX}

67

8. Docker

Docker ist eine freie Software zur Isolierung von Anwendungen mit Hilfe von Containervirtualisierung. Die Podman API ist identisch mit der Docker API.

8.1. Docker installieren

apt install curl                                        falls kein curl
                                                        installiert ist
curl -fsSL https://get.docker.com -o get-docker.sh      Installer holen
sudo sh ./get-docker.sh                                 Installer starten
sudo apt docker docker-compose                          installiert Docker auch

Wenn man nicht mit dem Nutzer root arbeiten möchte, sollte man den aktuellen Benutzer berechtigen:

sudo usermod -aG docker $USER       aktuellen Benutzer für docker freigeben,
                                    danach neu anmelden

8.2. Mit Docker arbeiten

docker ps                           laufende Container auflisten
docker ps -a                        alle Container auflisten, auch gestoppte
docker images                       alle Images auflisten
docker stop Containername           laufenden Container beenden
docker run -p 80:80 nginx           simplen Webserver nginx starten
                                    Hostport:Containerport

Arbeiten mit Docker-Compose

nano docker-compose.yml             Datei docker-compose.yml mit dem Editor
                                    nano bearbeiten. Die Datei docker-compose.yml
                                    enthält die Definition der Container.
docker-compose up -d                die Compose-Zusammenstellung hochfahren
docker-compose pull                 Container updaten, neue Images laden

Meine docker-compose.yml:

8. Docker

services:
portainer:
container_name: portainer
image: portainer/portainer-ce
ports:
 - '9000:9000'
volumes:
 - /var/run/docker.sock:/var/run/docker.sock
 - ./portainer_data:/data
restart: always
forgejo:
container_name: forgejo
image: codeberg.org/forgejo/forgejo:10
ports:
 - '3000:3000'
 - '222:22'
environment:
 - USER_UID=1000
 - USER_GID=1000
volumes:
 - ./forgejo_data:/data
 - /etc/timezone:/etc/timezone:ro
 - /etc/localtime:/etc/localtime:ro
restart: always

Teil III.

Linux im Netzwerk

9. Netzwerk

Rechnername             Name den der Rechner im Netzwerk hat,
sollte nicht mehr als acht Zeichen haben,
darf im lokalen Netzwerk noch nicht vergeben sein
Domainname              Name zur Gliederung von Netzwerken
Top-Level-Domain        umfasst höchstens vier Buchstaben
Beispiel: Rechnername.Domainname.Top-Level-Domain ->
          voyager.startrek.foe
IP-Adresse              Adresse des Rechners im Netzwerk,
jede Netzwerkschnittstelle(z.B. Netzwerk- oder
ISDN-Karte) hat im Netzwerk mindestens eine Adresse
die eindeutig ist, die Adresse besteht derzeit aus
einer Sequenz von vier Bytes die durch Punkte getrennt
sind z.B. 192.168.20.40 , für private Netze sind durch
das Arbeitspapier RFC 1597 drei Adressbereiche
vorgesehen die nicht geroutet werden:
10.0.0.0    -> 10.255.255.255  (Class A-Netz)
172.16.0.0  -> 172.31.255.255  (Class B-Netz)
192.168.0.0 -> 192.168.255.255 (Class C-Netz)
Gatewayadresse          IP-Adresse des Gerätes die das Weiterleiten
von Netzwerkpaketen in das fremde Netz übernimmt
Netzwerkmaske           sagt aus welcher Teil der IP-Adresse
zum lokale Netzwerk gehört z.B. 255.255.255.0
OSI                     Open Systems Interconnection model ist ein Referenzmodell
für Netzwerkprotokolle als Schichtenarchitektur
IEEE                    Institute of Electrical and Electronics Engineers ist
ein weltweiter Berufsverband von Ingenieuren,
Technikern, (Natur-)Wissenschaftlern und angrenzender
Berufe hauptsächlich aus den Bereichen Elektrotechnik
und Informationstechnik
ISO                     Internationale Organisation für Normung ist die
internationale Vereinigung von Normungsorganisationen
und erarbeitet internationale Normen in allen Bereichen
mit Ausnahme der Elektrik und der Elektronik
MAC-Adresse             00:60:97:37:0c:ae Media-Access-Code-Adresse ist die
-------- -------- Nummer eines Gerätes auf einer
|        |         Datenverbindung
|        |
|        laufende Nummer

9. Netzwerk

Herstellerabhängig
NIC                     Network Information Center oder eine Domain Name Registry
verwaltet eine oder mehrere Top-Level-Domains im
Domain Name System
TCP                     Transmission Control Protocol ist ein Netzwerkprotokoll,
das definiert, auf welche Art und Weise Daten zwischen
Netzwerkkomponenten ausgetauscht werden sollen
UDP                     User Datagram Protocol ist ein minimales,
verbindungsloses Netzwerkprotokoll, das zur
Transportschicht der Internetprotokollfamilie gehört
NFS                     Network File System  ist ein von Sun Microsystems
entwickeltes Protokoll, das den Zugriff auf Dateien
über ein Netzwerk ermöglicht
FTP                     File Transfer Protocol ist ein Netzwerkprotokoll zur
Übertragung von Dateien über IP-Netzwerke
Portnummer              ist in Rechnernetzen eine Netzwerkadresse, mit der das
Betriebssystem die Datenpakete eines Transportprotokolls
zu einem Prozess zuordnet
/etc/services           ordnet Namen den Ports zu z.B. SSH, FTP, DNS u.s.w.
0-1023                  System Ports, Server-Ports (IANA), diese Ports werden
auch „well-known Ports“ genannt und sind für
Netzwerkdienste vorgesehen
1024-49151              User Ports, diese Ports sind für registrierte
Netzwerkdienste vorgesehen
49152-65535             Dynamic Ports, diese Ports sind für eine dynamische
Zuweisung durch das Betriebssystem vorgesehen

9.1. /etc/network/interfaces

allow-hotplug eth0                            Netzwerkkabel im Berieb umstecken
iface eth0 inet static                        static feste IP sonst dhcp
address 192.168.10.97/24                    IP-Adresse
gateway 192.168.10.1                        Gateway-Adresse
dns-nameservers 192.168.10.1 192.168.20.1   1. und 2. DNS-Server
dns-search example.net                      Domainname des DNS-Servers

10. E-Mail

E-Mail im Deutschen kurz Mail; englisch electronic mail für „elektronische Post“ oder „elektronischer Brief“ ist zum einen ein System zur computerbasierten Verwaltung von briefähnlichen Nachrichten und deren Übertragung über Computernetzwerke, insbesondere über das Internet. Zum anderen werden auch die auf diesem elektronischen Weg übertragenen Nachrichten selbst als E-Mails bezeichnet.

10.1. Verwendung von E-Mail

sudo apt install mailutils postfix      installiert mailx und MTA-Postfix
sudo dpkg-reconfigure postfix           postfix nochmal konfigurieren
sudo apt install postfix-pcre dovecot-imapd     für den Mail-Server installieren
echo "Inhalt" | mailx -s "Betreff" user@Domain  E-Mail verschicken
E-Mail beim Starten verschicken
/lib/systemd/system/mailx-start.service
[Unit]
Description=Boot Mails
After=postfix.service
[Service]
Type=simple
ExecStart=/usr/bin/sh -c 'echo "Inhalt" | mailx -s "Betreff" user@domain'
[Install]
WantedBy=multi-user.target
E-Mail beim Beenden verschicken (kommt erst beim Booten an)
/lib/systemd/system/mailx-stop.service
[Unit]
Description=Boot Mails
After=shutdown.target
[Service]
Type=simple
ExecStart=/usr/bin/sh -c 'echo "Inhalt" | mailx -s "StopBetreff" user@domain'

10. E-Mail

[Install]
WantedBy=multi-user.target
danach
sudo systemctl enable mailx-start.service
sudo systemctl enable mailx-stop.service

11. Apache

11.1. Einleitung

Der Apache Webserver ist ein Programm das im Netzwerk(WWW), bei Anfragen mit einem Webbrowser, Websites(HTTP-Protokoll) ausgeben kann.

Die Anfragen werden als URL angegeben. Beispiel: Schema://Hostname:Port/Server-Pfad -> http://www.apache.org:80/manual/

11.2. Kompilieren und Installieren

11.2.1. Anforderungen

• Apache-Quellcode 1.3, erhältlich bei http://www.apache.org/

• mod_ssl 1.3, erhältlich bei http://www.modssl.org/

• Apache-Quellcode 2.0, erhältlich bei http://www.apache.org/

• OpenSSL-Quellcode 0.9.x, erhältlich bei http://www.openssl.org/

• Linux ab 2.4.xx(z.B.Debian Sarge 3.1), libgdbm2-devel(ndbm.h -> gdbm-ndbm.h)

• ANSI-C-Compiler und Generierungswerkzeuge, GNU C Compiler (GCC) ab Version 2.7.2, wesentliche Generierungswerkzeuge wie make

• Zeitgenauigkeit bewahren, ntpdate oder xntpd(NTP)

• Perl 5(optional), Version ab 5.003 http://www.perl.com/

• PureFTPd(optional), Version ab 5.003 http://www.perl.com/

11.2.2. Vorbereitungen

su                                      als root anmelden
mkdir /usr/local/src                    das Verzeichnis /usr/local/src anlegen,
                                        wenn es noch nicht vorhanden ist
chmod 777 /usr/local/src                Verzeichnis-Rechte setzen
ln -s /usr/include/gdbm-ndbm.h /usr/include/ndbm.h
                                        Link zu ndbm.h
exit                                    root abmelden
cp Quelldateien /usr/local/src          Quelldateien kopieren

11.2.3. OpenSSL

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz openssl-0.9.7d.tar.gz          Quelldateien entpacken
cd openssl-0.9.7d                       in das Quelldatei-Verzeichnis wechseln
./config --help                         Hilfe zu den möglichen Optionen
./config --prefix=/usr/local/openssl/0.9.7d
                                        Codebaum konfigurieren und
                                        Installations-Verzeichnis angeben
make                                    Programm herstellen
make test                               Programm testen
su                                      als root anmelden
make install                            Programm installieren
ln -s /usr/local/openssl/0.9.7d /usr/local/openssl/current
                                        Link zu OpenSSL
exit                                    root abmelden

11.2.4. Apache 1.3 und SSL

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz apache_1.3.31.tar.gz           Quelldateien entpacken
tar xvfz mod_ssl-2.8.19-1.3.31.tar.gz   Quelldateien entpacken
cd apache_1.3.31                        in das Quelldatei-Verzeichnis wechseln
./configure --help                      Hilfe zu den möglichen Optionen
cd ../mod_ssl-2.8.19-1.3.31
./configure --help                      Hilfe zu den möglichen Optionen
./configure --with-apache=../apache_1.3.31
            --with-ssl=../openssl-0.9.7d
            --prefix=/usr/local/apache/1.3.31
            --datadir=/srv/www
            --enable-module=most
            --enable-shared=max
            --enable-module=ssl
cd ../apache_1.3.31                     in das Quelldatei-Verzeichnis wechseln
make                                    Programm herstellen
make certificate TYPE=custom            Zertifikat erzeugen

Angaben zu der Certificate Authority

Signature Algorithm ((R)SA or (D)SA) [R]:R
1. Country Name             (2 letter code) [XY]:DE
2. State or Province Name   (full name)     [Snake Desert]:Niedersachsen
3. Locality Name            (eg, city)      [Snake Town]:Salzgitter
4. Organization Name        (eg, company)   [Snake Oil, Ltd]:Komtek
5. Organizational Unit Name (eg, section)   [Certificate Authority]:CA

11.2. Kompilieren und Installieren

6. Common Name              (eg, CA name)   [Snake Oil CA]:Komtek CA
7. Email Address            (eg, name@FQDN) [ca@snakeoil.dom]:ca@komtek.de
8. Certificate Validity     (days)          [365]:365
Certificate Version (1 or 3) [3]:3

Angaben zum Serverzertifikat

1. Country Name             (2 letter code) [XY]:DE
2. State or Province Name   (full name)     [Snake Desert]:Niedersachsen
3. Locality Name            (eg, city)      [Snake Town]:Salzgitter
4. Organization Name        (eg, company)   [Snake Oil, Ltd]:Komtek
5. Organizational Unit Name (eg, section)   [Webserver Team]:Webmaster
6. Common Name              (eg, FQDN)      [www.snakeoil.dom]:www.komtek.de
7. Email Address            (eg, name@fqdn) [www@snakeoil.dom]:www@www.komtek.de
8. Certificate Validity     (days)          [365]:365
Certificate Version (1 or 3) [3]:3

Schlüssel verschlüsseln

Encrypt the private key now? [Y/n]: n
Encrypt the private key now? [Y/n]: n
su                                      als root anmelden
make install
groupadd wwwadmin                       Gruppe wwwadmin anlegen
chown -R nobody:wwwadmin /srv/www       Rechte für das www-Verzeichnis setzen
ln -s /usr/local/apache/1.3.31 /usr/local/apache/current
                                        Link zu Apache 1.3
ln -s /usr/local/apache/current/conf /etc/apache
                                        Link zu den Konfigurationen
ln -s /usr/local/apache/current/logs /var/log/apache
                                        Link zu den Logdateien
ln -s /usr/local/apache/current/bin/apachectl /usr/local/bin
                                        Link zu apachectl
ln -s /usr/local/apache/current/bin/apachectl /etc/init.d/apache
                                        Link zu den Startdateien
cd /etc/rc5.d                           in den Start-Runlevel wechseln
ln -s ../init.d/apache S20apache        Link zum automatischen Starten
cd ../rc0.d                             in den Stopp-Runlevel wechseln
ln -s ../init.d/apache K20apache        Link zum automatischen Beenden
cd ../rc6.d                             in den Start-Runlevel wechseln
ln -s ../init.d/apache K20apache        Link zum automatischen Beenden
exit                                    root abmelden

11.2.5. Apache2

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz httpd-2.0.51.tar.gz            Quelldateien entpacken
cd httpd-2.0.51                         in das Quelldatei-Verzeichnis wechseln
./configure --help                      Hilfe zu den möglichen Optionen
./configure --prefix=/usr/local/apache2/2.0.51
            --with-ssl=../openssl-0.9.7d
            --datadir=/srv/www2
            --enable-module=most
            --enable-shared=max
            --enable-module=ssl
            --with-port=81              da auf 80 schon der Apache 1.3 läuft
make                                    Programm herstellen
su                                      als root anmelden
make install                            Programm installieren (als root!)
groupadd wwwadmin                       Gruppe wwwadmin anlegen
chown -R nobody:wwwadmin /srv/www2      Rechte für das www-Verzeichnis setzen
ln -s /usr/local/apache2/2.0.51 /usr/local/apache2/current
                                        Link zu Apache 2
ln -s /usr/local/apache2/current/conf /etc/apache2
                                        Link zu den Konfigurationen
ln -s /usr/local/apache2/current/logs /var/log/apache2
                                        Link zu den Logdateien
ln -s /usr/local/apache2/current/bin/apachectl /usr/local/bin/apachectl2
                                        Link zu apachectl
ln -s /usr/local/apache2/current/bin/apachectl /etc/init.d/apache2
                                        Link zu den Startdateien
cd /etc/rc5.d                           in den Start-Runlevel wechseln
ln -s ../init.d/apache2 S20apache2      Link zum automatischen Starten
cd ../rc0.d                             in den Stopp-Runlevel wechseln
ln -s ../init.d/apache2 K20apache2      Link zum automatischen Beenden
cd ../rc6.d                             in den Start-Runlevel wechseln
ln -s ../init.d/apache2 K20apache2      Link zum automatischen Beenden
exit                                    root abmelden

11.2.6. Testen

/etc/init.d/apache start                Apache1.3 starten
/etc/init.d/apache2 start               Apache2 starten
Browser http://localhost/               Apache1.3 testen
Browser http://localhost:81/            Apache2 testen
/etc/init.d/apache stop                 Apache1.3 beenden
/etc/init.d/apache2 stop                Apache2 beenden

11.2.7. Upgrade

./config.nice                           aus der letzten Installation entnehmen,
                                        Apache2

11.2.8. PureFTPd

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz pure-ftpd-1.0.20.tar.gz        Quelldateien entpacken
cd pure-ftpd-1.0.20                     Verzeichnis wechseln
./configure --prefix=/usr/local/pure-ftpd/1.0.20 --with-language=german
                                        Makefile herstellen
make                                    Programm herstellen
make check                              Programm prüfen
su                                      als root anmelden
make install                            Programm installieren
ln -s /usr/local/pure-ftpd/1.0.20 /usr/local/pure-ftpd/current
                                        Link zu pure-ftpd
mkdir /usr/local/pure-ftpd/current/etc  Verzeichnis etc anlegen
cp configuration-file/pure-ftpd.conf /usr/local/pure-ftpd/current/etc
                                        Konfiguration kopieren
cp pureftpd-*.conf /usr/local/pure-ftpd/current/etc
                                        Konfigurationen kopieren
ln -s /usr/local/pure-ftpd/current/etc /etc/pure-ftpd
                                        Link zu den Konfigurationen
vi /etc/init.d/pure-ftpd                Startdatei für pure-ftpd anlegen
 #!/bin/bash
 case "$1" in
  start)
   echo "pureftpd wird gestartet ..."
   cd /usr/local/pure-ftpd/current
   ./sbin/pure-ftpd &
  ;;
  stop)
   echo "pureftpd wird heruntergefahren ..."
   kill -TERM `cat /var/run/pure-ftpd.pid`
  ;;
  *)
  echo "Usage: $0 {start|stop}"
   exit 1
  ;;
 esac
 exit 0

chmod 755 /etc/init.d/pure-ftpd         Rechte setzen
cd /etc/rc5.d                           Verzechnis wechseln
ln -s ../init.d/pure-ftpd S20pure-ftpd  Link zum automatischen Starten
cd /etc/rc0.d                           Verzechnis wechseln
ln -s ../init.d/pure-ftpd K20pure-ftpd  Link zum automatischen Beenden
cd /etc/rc6.d                           Verzechnis wechseln
ln -s ../init.d/pure-ftpd K20pure-ftpd  Link zum automatischen Beenden
useradd -g wwwadmin -d /srv -s /bin/false wwwadmin
                                        Benutzer wwwadmin anlegen
passwd wwwadmin                         Passwort setzen
NoAnonymous                 yes
UnixAuthentication          yes
MinUID                      1000
MinUID                      1000
TrustedGID                  1002

exit                                    root abmelden

11.3. Apache starten

11.3.1. Apache starten

Unter UNIX/Linux wird das httpd-Progamm als Daemon ausgeführt.

apachectl start                 Apache starten
rcapache start                  Apache starten(SuSE-Linux)

11.3.2. Wie der Apache startet

• apachectl ist die empfohlene Methode, das httpd-Programm zu starten

• apachectl setzt verschiedene Umgebungsvariablen und startet das httpd-Programm

• apachectl reicht alle Kommandozeilenargumente durch

• als erstes liest der httpd die Konfigurationsdatei httpd.conf ein, die beim Kompilieren festgelegt wurde

• zur Laufzeit kann der Ablageort geändert werden, z.B. apachectl -f /etc/apache2/httpd.conf

• beim erfolgreicehn Start, trennt sich der Server vom Terminal ab

• bis zum Port 1024 muss der Apache root-Berechtigung besitzen

• der Haupt-httpd-Prozess läuft unter dem Benutzer root weiter

11.3. Apache starten

• ist der Server gestartet, öffnet er seine Log-Dateien

• der Apache startet mehrere Kind-Prozesse

• die Kind-Prozesse werden unter weniger privilegierten Benutzerkennungen ausgeführt(z.B. nobody, wwwrun ...)

• die Kind-Prozesse lauschen und beantworten Anfragen von Clients

• die Kind-Prozesse werden von dem ausgewählten Multi-Processing-Modul(Apache-MPM prefork UNIX/Linux) gesteuert

11.3.3. Fehler während des Hochfahrens

• wird während des Hochfahrens einen schwerer Fehler feststellt, schreibt der Apache eine Nachricht auf die Konsole oder ins ErrorLog, bevor er sich selbst beendet

• eine der häufigsten Fehlermeldungen ist Ünable to bind to Port ...", der Server läuft schon oder hat keine root-Berechtigung

11.3.4. Automatisch starten und beenden

• apachectl zu den Startdateien des Systems hinzufügen (rc.local, rc.x-Verzeichnis)

z.B. SuSE-Linux:
 cd /etc/rc.d/rc3.d/
 ln -s ../apache S16apache           Link zum automatischen Starten
                                     in Runlevel 3 anlegen
 ln -s ../apache K06apache           Link zum automatischen Beenden
                                     in Runlevel 3 anlegen
z.B. Debian:
 cd /etc/rc3.d/
 ln -s ../init.d/apache2 S20apachectl
                     Link zum automatischen Starten in Runlevel 5 anlegen
 cd /etc/rc0.d/
 ln -s ../init.d/apache2 K20apachectl
                     Link zum automatischen Beenden in Runlevel 0 anlegen

11.3.5. Weitere Informationen

http://localhost/manual/programs/httpd.html
http://localhost/manual/de/programs/httpd.html
http://localhost/manual/programs/apachectl.html
http://localhost/manual/de/programs/apachectl.html

11.4. Beenden und Neustarten

11.4.1. Einleitung

• um den Apache zu stoppen oder neu zu starten, muss ein Signal an den laufenden httpd-Prozess gesendet werden

• es gibt zwei Möglichkeiten Signale zu senden, kill und apachectl

• auf dem System laufen mehrere httpd-Programme

• nur an den Elternprozess sollte ein Signal gesendet werden, /var/log/apache2/httpd.pid • es gibt drei Signale die an den Elternprozess gesendet werden können, TERM -

beenden, HUP - neustarten, USR1 - unterbrechungsfreier Neustart

• es wird empfohlen apachectl zu benutzen

• mit tail -f /var/log/apache2/error_log"kann die Signalisierung beobachtet werden

11.4.2. Beenden

Signal: TERM
apachectl stop                                  sendet das TERM(stop) signal an
                                             den Elternprozess
rcapache stop                                   Apache stoppen
                                             bei SuSE-Linux
kill -TERM `cat /var/log/apache2/httpd.pid`     sendet das TERM(stop) signal an
                                             den Elternprozess

• das Senden des TERM(stop)-Signals an den Elternprozess veranlasst alle seine Kindprozesse sich zu beenden

• es dauert etwas bis alle Kindprozesse beendet sind

• danach beendet sich der Elternprozess

• alle gerade bearbeiteten Anfragen werden abgebrochen

• es werden keine weiteren Anfragen mehr bedient

11.4.3. Unterbrechungsfreier Neustart

Signal: USR1
apachectl graceful                              sendet das USR1 signal an
                                             den Elternprozess
kill -USR1 `cat /var/log/apache2/httpd.pid`     sendet das USR1 signal an
                                             den Elternprozess

11.4. Beenden und Neustarten

• das Senden des USR1-Signals an den Elternprozess veranlasst alle seine Kindprozesse sich zu beenden

• die Kindprozesse bearbeiten noch die letzten Anfragen und beenden sich dann

• der Elternprozess liest, wärend die Kindprozesse noch laufen, seine Konfigurationsdateien erneut ein und öffnet seine Logdateien neu

• die Kindprozesse werden wieder gestartet

• die Serverstatistiken(mod_status) werden nicht auf Null zurückgesetzt

• ist die Konfigurationsdatei fehlerhaft, wird der Elternprozess nicht neu gestartet

• die Kindprozesse bearbeiten noch die letzten Anfragen und beenden sich dann

• wäred noch die letzten Anfragen bearbeitet werden kann der httpd nicht gestartet werden

11.4.4. Neustarten

Signal: HUP
apachectl restart                               sendet das HUP signal an
                                             den Elternprozess
rcapache restart                                Apache stoppen und dann starten
                                             bei SuSE-Linux
kill -HUP `cat /var/log/apache2/httpd.pid`      sendet das HUP signal an
                                             den Elternprozess

• das Senden des HUP(wie TERM)-Signals an den Elternprozess veranlasst alle seine Kindprozesse sich zu beenden

• der Elternprozess liest seine Konfigurationsdateien erneut ein und öffnet seine Logdateien neu

• die Kindprozesse werden wieder gestartet und setzen die Bedienung von Zugriffen fort

• die Serverstatistiken(mod_status) werden auf Null zurückgesetzt

• ist die Konfigurationsdatei fehlerhaft, wird der Elternprozess nicht neu gestartet

11.4.5. Anhang: Syntax überprüfen

apachectl -t            überprüft den Syntax der Konfigurationsdatei, so kann
                     vermieden werden das der Apache nicht neu startet

11.5. Anhang

11.5.1. Zu den Dateien

/etc/apache/
/etc/apache2/
/etc/httpd/
/etc/httpd2/
                access.conf             Zugriffs-Konfiguration
                httpd.conf              Apache Konfigurationsdatei
                mime.types              Zuweisung von Dateiendungen
                srm.conf                Resource-Konfiguration
/var/log/apache/
/var/log/apach2/
/var/log/httpd/
/var/log/httpd2/
                access_log              Zugriffsmeldungen
                error_log               Fehlermeldungen
                httpd.pid               Hauptprozessnummer

11.6. Benutzerhandbuch

11.6.1. httpd.conf

ServerType standalone           Apache nicht ueber den inetd starten.
ServerRoot "/www/"              Diese Einstellung sorgt dafür, dass der Apache
                                ausgehend von diesem Verzeichnis die
                                Verzeichnisse fuer Dokumente, Logfiles und
                                Konfigurationsdateien sucht.
LockFile /var/lock/subsys/httpd/httpd.accept.lock       Spezifizert das Lock
                                                        File.
PidFile /var/run/httpd.pid      Datei, in der sich die Prozess ID des Httpd-
                                Daemons befindet.
ResourceConfig /etc/httpd/srm.conf      Diese Datei enthaelt Angaben zur
                                        Formatierung und dem Aussehen der
                                automatisch erzeugten Verzeichnisindizes
                                (FancyIndexing) sowie Angaben zu den einzelnen
                                Dateitypen.
AccessConfig /etc/httpd/access.conf     Datei zur Definition der Funktionen und

11.6. Benutzerhandbuch

        Zugriffsrechte bestimmter Verzeichnisse
Timeout 300                     Zeitlimit fuer Client-Anfragen in Sekunden.
KeepAlive On                    Unterstuezung der HTTP/1.1 Persistent
Connections. Dardurch koennen ueber eine TCP-
Verbindung mehrere Anfragen an den Server
geschickt werden.
MaxKeepAliveRequests 10         Es werden 10 aufeinanderfolgende Anfragen
innerhalb einer Keep-Alive-Verbindung erlaubt.
KeepAliveTimeout 15             Der Server wartet maximal 15 Sekunden auf
weitere Anfragen des Clients bei einer Keep-
Alive-Verbindung.
MinSpareServers 5               Es existieren immer mindestens 5 und hoechstens
MaxSpareServers 10              10 leerlaufende Prozesse.
StartServers 5                  Es werden automatisch 5 Kindprozesse des Apache
gestartet.
MaxClients 150                  Maximum von gleichzeitig laufenden
Server-Prozessen.
MaxRequestsPerChild 30          Nach 30 Anfragen wird der Kindprozess beendet
und gegebenfalls ein neuer gestartet.
Listen 12.34.56.78:80           Falls mehrere Interfaces bzw. IP Adressen fuer
den Rechner vorhanden sind, kann mit Listen
festgelegt werden, welche Ports fuer welche
Adresse abgehoert werden sollen.
Port 80                         Standalone Server Port 80
User wwwrun                     Nach dem Oeffnen des Ports (als root), wechselt
Group nogroup                   Apache zu der als User und Group angegebenen
UID bzw. GID. Die Zuweisung kann entweder durch
angeben des Namens oder durch # gefolgt von der
ID erfolgen.
ServerAdmin dv@mynet.loc        Bei Fehlermeldungen wird diese Adresse dem
Client zurueckgeliefert.
ServerName www.mynet.loc        Wird bei Redirects benoetigt (wenn man

beispielsweise durch Eingabe von
http://www.mynet.loc/main auf das Verzeichnis
main zugreifen will, erzeugt der Apache einen
Redirect auf http://www.mynet.loc/main/ . Ohne
ServerName würde der richtige Hostname des
Rechners zurückgeliefert werden.
DocumentRoot "/www/htdocs/"     Hier werden die HTML Seiten abgelegt.
AllowOverride All               Konfigurationsanweisungen in der .htaccess
beachten
UserDir public_html             Homepage-Directory der Benutzer
http://server/~benutzer/
DirectoryIndex index.html index.htm index.php   Wird nur ein Directory
                angegeben, wird automatisch die
angegebene Datei gesucht und angezeigt.
AccessFileName .htaccess        Name der .htaccess
DefaultType text/plain          Dateien ohne Endung werden wie Text-Files
behandelt.
HostnameLookups Off             Es sollen keine DNS-Lookups ausgefuert werden.
ErrorLog /var/log/httpd/error_log       Datei zur Aufnahme von Fehlermeldungen
        und sonstigen Info Meldungen
(mod_log_config).
LogLevel warn                   LogLevel :-) debug, info, notice, warn, error,
crit,alert,emerg.
LogFormat ...                   Legt das Format der Logdatei(en) fest.
CustomLog /var/log/httpd/access_log common      Erzeugt die Datei http.access im
                Common Log Format.
ServerSignature Off             ServerSignature kann man auf "Off" stellen,
damit ein Zugriff auf eine nichtexistente Seite
nicht Software und Versionsnummer anzeigt,
jedoch bringt das nicht allzuviel, da im HTTP
Header diese und wesentlich mehr Informationen
zu finden sind.

Alias /icons/ "/www/icons/"     Alias-Namen fuer bestimmte Verzeichnisse. Diese
                                werden anschliessend behandelt, als wenn sie
                                sich unter Document-Root befinden wuerden.
                                Achtung! Die Einstellungen gelten auch fuer
                                virtuelle Hosts.
IndexOptions FancyIndexing      Als Optionen sind angebbar:
                                Fancyindexing - ausführliche Verzeichnisliste
                                  (Icons, Name, Größe, Kurzbeschreibung etc.)
                                SuppressLastModified - keine Angabe der letzten
                                  Modifikationszeit
                                SuppressSize - keine Angabe der Filegröße
                                SuppressDescription - keine Angabe einer
                                  Kurzbeschreibung
                                ScanHTMLTitles - HTML-Titel als Kurzbeschreibung
                                  (Achtung: Rechnerlast!)
ReadmeName README               Die Datei README wird bei der Ausgabe des
                                Verzeichnisbaums angezeigt.
HeaderName HEADER               Die Datei HEADER wird am Anfangs-Tag in den
                                Verzeichnisbaums angezeigt.
IndexIgnore .??* *~ *#   RCS CVS *,v *,t        Diese Dateien werden nicht durch
                                                FancyIndexing angezeigt.
TypesConfig /etc/httpd/mime.types       Enthaelt die Zuweisungen Dateiendung
                                        zu Mime-Typ
BrowserMatch "Mozilla/2" nokeepalive    Hiermit wird der Apache angewiesen, auf
                                        bestimmte Browser unterschiedlich zu
                                        reagieren.

11.6.2. Access Control List File (.htaccess)

Die Datei .htaccess muß in dem zu schützenden Ordner angelegt werden.

AuthUserFile /www/.htpasswd     Pfad zu einer Passwortdatei
AuthGroupFile /dev/null
AuthName "Tux ;-)"
AuthType Basic
<Limit GET POST PUT>
        require user webmaster
</Limit>

AuthUserFile /www/.htpasswd     Pfad zu einer Passwortdatei
AuthGroupFile /www/.htgroup     Pfad zu einer Gruppendatei
AuthName "Tux ;-)"
AuthType Basic
<Limit GET>
        require group logins
</Limit>

11.6.3. Gruppendatei (.htgroup)

cat .htgroup -->
        logins: benutzer1 benutzer2 ...

11.6.4. Passwort-Datei (.htpasswd)

htpasswd -c Passwortdatei Benutzername          erzeugt eine neue Passwortdatei
                                                und ein Benutzer
htpasswd Passwortdatei Benutzername             erzeugt ein Benutzer

11.6.5. Erstellen eines SSL-Zertifikats

openssl req -new > firma.csr
openssl rsa -in privkey.pem -out firma.key
openssl x509 -in firma.csr -out firma.crt -req -signkey firma.key -days 10000
cp firma.key /etc/httpd/ssl.key/server.key
cp firma.crt /etc/httpd/ssl.crt/server.crt
cp firma.csr /etc/httpd/ssl.csr/server.csr
chown root privkey.pem
chmod 400 privkey.pem

11.6.6. LinkIcon (favicon.ico)

Was ist ein favicon.ico?

Immer wenn ein IE5 Benutzer eine Seite seinen Favoriten hinzufügt, sucht der IE5 nach einem Icon das er anstatt des Standardicons in der Favoritenliste anzeigen kann. Er sucht zuerst im aktuellen ’Verzeichnis’ und geht dann Ebene für Ebene weiter bis zum Wurzelverzeichnis. Nehmen wir mal an, das aktuelle Dokument befindet sich unter http://www.bjoernsworld.de/suchmaschinen/ optimieren/aufraeumen.html, dann wird der IE 5 so nach dem Icon suchen:

http://www.bjoernsworld.de/suchmaschinen/optimieren/favicon.ico
http://www.bjoernsworld.de/suchmaschinen/favicon.ico
http://www.bjoernsworld.de/favicon.ico

Er sucht solange, bis er eines gefunden hat oder bei /favicon.ico angekommen ist. Das gilt nur für den Internet Explorer Version 5.0 und 5.01; Version 5.5 sucht nur noch nach /favicon.ico selbstständig. Hat er eins gefunden, zeigt er es in der Favoritenliste an und beim erneuten Besuch der Seite auch links neben der URL in der Adresszeile:

Welches Format hat das favicon.ico?

Das favicon.ico ist ein Icon im Microsoft Windows Icon File Format. Windows Benutzer sehen täglich solche Icons auf ihrem Desktop, in ihrem Startmenü, etc. In der Favoritenliste wird dieses Icon in der Größe 16x16 Pixel dargestellt, daher sollte man das Icon auch in dieser Größe erstellen. Die Farbzahl beschränkt sich auf 16 bzw. 256 Farben, wobei eine als transparente Farbe gilt.

Welchen MIME-Type hat das favicon.ico?

Der korrekte MIME-Type für das favicon.ico ist image/x-icon. Beim Apache Webserver kann man das in einer .htaccess mit der Zeile:

AddType image/x-icon .ico

konfigurieren.

Wie erstelle ich ein favicon.ico?

Man braucht dafür einen Icon Editor wie man sie zuhauf bei Tucows oder Winfiles. com finden kann. Mit z.B. dem Freeware Tool Irfan View ist es ohne Probleme möglich, eine Gifdatei in das Icon Format zu konvertieren. Macintosh Benutzer können den GraphicConverter von Thorsten Lemke oder den Iconographer von MscapeSoftware benutzen um das Icon zu erstellen. Bei favicon.com gibt es einen Online Editor in Java, mit dem man online sein eigenes favicon.ico erstellen kann.

Wohin muss das favicon.ico?

Wie oben schon gesagt, sucht der IE5, vor Version 5.5, zuerst im aktuellen ’Verzeichnis’ und geht dann Ebene um Ebene nach oben, bis er unter http://host/favicon.ico ein Icon findet oder eben nicht. Man kann entweder in jedes Verzeichnis ein favicon.ico plazieren, oder im <HEAD> einer jeden HTML Datei auf ein Icon verweisen:

<link rel="SHORTCUT ICON" href="/favicon.ico" title="external:/favicon.ico">

Wenn der Apache Webserver mit mod_rewrite benutzt wird, kann man mit dieser Regel:

RewriteEngine on
RewriteRule ^(.+)/favicon\.ico$ /favicon.ico [R=permanent] [L]

(z.B. in der .htaccess) alle Anfragen für favicons in Unterverzeichnissen auf das favicon.ico im Root-Verzeichnis der Domain umleiten.

Wenn mod_rewrite nicht zur Verfügung steht, wohl aber Zugriff auf die Konfigurationsdateien Apache Web Servers, kann man in z.B. der <VirtualHost> Sektion folgenden Befehl einfügen:

RedirectMatch Permanent ^(.+)/favicon\.ico$ http://server.de/favicon.ico

Wie kann man diese Funktion abstellen?

Es gibt meines Wissens nach keine Möglichkeit den IE5 dazu zu bringen, nicht nach dem favicon.ico zu suchen.

Links zum Thema:

http://www.favicon.de/
http://www.favicon.com/
http://wdvl.com/Authoring/Design/Images/Favicon/index.html
http://msdn.microsoft.com/workshop/essentials/versions/ICPIE5.asp
http://msdn.microsoft.com/workshop/Author/dhtml/howto/ShortcutIcon.asp
http://www.winfiles.com/apps/98/icons-edit.html
http://web.cip.com.br/flaviovs/sec/favicon/privacy.html
http://web.cip.com.br/flaviovs/sec/favicon/index.html
http://www.bjoernsworld.de/ie/398da66c.24234236@news.bjoern.hoehrmann.de.txt

12. MySQL

12.1. Einleitung

MySQL ist eine Datenbank und phpMyAdmin eine Web-Oberfläche, um MySQL zu konfigurieren.

12.2. Kompilieren und Installieren

12.2.1. Anforderungen

• MySQL-Quellcode 4.x.xx, erhältlich bei http://www.mysql.com/

• Linux 2.x.xx

• ANSI-C-Compiler und Generierungswerkzeuge, GNU C Compiler (GCC) ab Version 2.95.4, wesentliche Generierungswerkzeuge wie make

• phpMyAdmin 2.x.x(optional), erhältlich bei http://www.phpmyadmin.net/, Web-Server, Apache 1 oder 2 mit PHP 4 oder 5

12.2.2. Vorbereitungen

su                                      als root anmelden
mkdir /usr/local/src                    das Verzeichnis /usr/local/src anlegen,
                                        wenn es noch nicht vorhanden ist
chmod 777 /usr/local/src                Verzeichnis-Rechte setzen
exit                                    root abmelden
cp Quelldateien /usr/local/src          Quelldateien kopieren

12.2.3. MySQL

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz mysql-4.0.21.tar.gz            Quelldateien entpacken
cd mysql-4.0.21                         in das Quelldatei-Verzeichnis wechseln
./configure --help                      Hilfe zu den miöglichen Optionen
./configure --prefix=/usr/local/mysql/4.0.21 --localstatedir=/var/mysql/data
                                        prefix: Installations-Verzeichnis
                                        localstatedir: Daten-Verzeichnis
make                                    Programm herstellen

su                                      als root anmelden
make install                            Programm installieren (als root!)
ln -s /usr/local/mysql/4.0.21 /usr/local/mysql/current
                                        Link zu MySQL
cp support-files/mysql.server /etc/init.d/mysql
                                        Startdatei kopieren
chmod 755 /etc/init.d/mysql
                                        Dateirechte einstellen
ln -s /etc/init.d/mysql /etc/rc5.d/S20mysql
                                        Link zum Starten in Runlevel5 anlegen
ln -s /etc/init.d/mysql /etc/rc6.d/K20mysql
                                        Link zum Beenden in Runlevel6 anlegen
ln -s /etc/init.d/mysql /etc/rc0.d/K20mysql
                                        Link zum Beenden in Runlevel0 anlegen
groupadd mysql                          Gruppe mysql anlegen
useradd -g mysql -d /usr/local/mysql/current -s /bin/false mysql
                                        Benutzer mysql anlengen
mkdir -p /var/mysql/data                Daten-Verzeichnis anlegen
./scripts/mysql_install_db --user=mysql initiale Datenbank installieren
cd /usr/local/mysql/current             in das mysql Verzeichnis wechseln
cp share/mysql/my-medium.cnf /var/mysql/data/my.cnf
                                        Konfiguration anlegen
chown -R root:mysql .                   Benutzer-Gruppen-Rechte setzen
chown -R mysql:mysql /var/mysql/data    Rechte für das Daten-Verzeichnis setzen
/etc/init.d/mysql start                 mysql starten
./bin/mysqladmin -u root password 'geheim'
                                        Datenbank-Passwort setzen
                                        Achtung ! das Passwort steht danach in
                                        der ~/.bash_history

12.2.4. MySQL Testen

./bin/mysql -D mysql -u root -p         Client starten und zugriff auf die
                                        Steuerungs-Datenbank nehmen
mysql> show tables;                     Tabelle anzeigen
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv    |
| db              |
| func            |
| host            |
| tables_priv     |
| user            |

+-----------------+
6 rows in set (0.00 sec)
mysql> exit;                            Client beenden
Bye
exit                                    root abmelden

12.2.5. phpMyAdmin

su                                      als root anmelden
cd /srv/www/htdocs                      in das Apache1.3-Verzeichnis wechseln
cd /srv/www2/htdocs                     in das Apache2-Verzeichnis wechseln
tar xvfj /usr/local/src/phpMyAdmin-2.5.7-pl1.tar.bz2
                                        Dateien entpacken
ln -s phpMyAdmin-2.5.7-pl1 phpMyAdmin   Link zu phpMyAdmin anlegen
vi phpMyAdmin/config.inc.php            phpMyAdmin anpassen
 $cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin/';
                                        URL zu Apache1.3
 $cfg['PmaAbsoluteUri'] = 'http://localhost:81/phpMyAdmin/';
                                        URL zu Apache2
 $cfg['Servers'][$i]['user']          = 'root';   // MySQL user
 $cfg['Servers'][$i]['password']      = 'geheim'; // MySQL password
vi phpMyAdmin/.htaccess                 htaccess anlegen
 AuthType Basic
 AuthName "PhpMyAdmin"
 AuthUserFile /srv/www/htdocs/phpMyAdmin/.htpasswd
                                        Apache1.3
 AuthUserFile /srv/www2/htdocs/phpMyAdmin/.htpasswd
                                        Apache2
 AuthGroupFile /dev/null
 <Limit GET POST>
   require valid-user
 </Limit>
cd /usr/local/apache/current/bin        Verzeichnis wechseln, Apache1.3
cd /usr/local/apache2/current/bin       Verzeichnis wechseln, Apache2
./htpasswd --help                       Hilfe zu htpasswd
./htpasswd -c /srv/www/htdocs/phpMyAdmin/.htpasswd root
                                        Apache1.3
./htpasswd -c /srv/www2/htdocs/phpMyAdmin/.htpasswd root
                                        Apache2
vi /etc/apache/httpd.conf               Apache1.3 anpassen

vi /etc/apache2/httpd.conf              Apache2 anpassen
 <Directory "/srv/www/htdocs">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride AuthConfig             None -> AuthConfig
   Order allow,deny
   Allow from all
 </Directory>
/etc/init.d/apache graceful             Einstellungen neu einlesen, Apache1.3
/etc/init.d/apache2 graceful            Einstellungen neu einlesen, Apache2
exit                                    root abmelden

13. PHP

13.1. Einleitung

Wer hat PHP erfunden ?          Der Kanada-Däne Rasmus Lerdorf !
Was heist PHP ?                 Personal Home Page Tools
Was ist PHP ?                   Eine einfache Skriptsprache. Sie wird direkt
                                in HTML-Seiten eingefügt und vom Webserver
                                interpretiert.
Wie funktioniert PHP ?          Der Browser schickt einen HTTP-Request an den
                                Webserver. Der Server reagiert, liest die
                                PHP-Seite ein, und führt die Skripte aus und
                                schickt erst das fertig zusammengesetzte
                                Dokument zurück an den Browser !
LAMP - Linux-Apache-MySQL-PHP
WAMP - Windows-Apache-MySQL-PHP

13.2. Kompilieren und Installieren

13.2.1. Anforderungen

• PHP 4 oder 5, erhältlich bei http://www.php.net/

• Linux ab 2.4.xx(z.B.Debian Sarge 3.1)

• ANSI-C-Compiler und Generierungswerkzeuge, GNU C Compiler (GCC) ab Version 2.7.2, wesentliche Generierungswerkzeuge wie make

• Webserver z.B. Apache 1.3 oder 2

• GD-Library ab 2.x.x, erhältlich bei http://www.boutell.com/gd/, Freetype ab 2.x.x, erhältlich bei http://www.freetype.org/, Zlib ab 1.x.x, erhältlich bei http://www.gzip.org/zlib/, IJG JPEG, erhältlich bei http://www.ijg.org/

13.2.2. Vorbereitungen

su                                      als root anmelden
mkdir /usr/local/src                    das Verzeichnis /usr/local/src anlegen,
                                        wenn es noch nicht vorhanden ist

chmod 777 /usr/local/src                Verzeichnis-Rechte setzen
exit                                    root abmelden
cp Quelldateien /usr/local/src          Quelldateien kopieren

13.2.3. Libraries für Zusatzfunktionen

Freetype

cd /usr/local/src                       Verzeichnis wechseln
tar xvfj freetype-2.1.9.tar.bz2         Quelldateien entpacken
cd freetype-2.1.9                       in das Quelldatei-Verzeichnis wechseln
./configure                             Codebaum konfigurieren
make                                    Programm herstellen
su                                      als root anmelden
make install                            Programm installieren
exit                                    root abmelden

Zlib

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz zlib-1.2.1.tar.gz              Quelldateien entpacken
cd zlib-1.2.1                           in das Quelldatei-Verzeichnis wechseln
./configure                             Codebaum konfigurieren
make                                    Programm herstellen
su                                      als root anmelden
make install                            Programm installieren
exit                                    root abmelden

IJG JPEG

cd /usr/local/src                       Verzeichnis wechseln
tar xvfz jpegsrc.v6b.tar.gz             Quelldateien entpacken
cd jpeg-6b                              in das Quelldatei-Verzeichnis wechseln
./configure --help                      Hilfe zu den möglichen Optionen
./configure --enable-shared
            --enable-static
            --prefix=/usr/local
make                                    Programm herstellen
make test                               Programm testen
su                                      als root anmelden
make install                            Programm installieren
exit                                    root abmelden

GD-Library

cd /usr/local/src                       Verzeichnis wechseln

tar xvfz gd-2.0.28.tar.gz               Quelldateien entpacken
cd gd-2.0.28                            in das Quelldatei-Verzeichnis wechseln
./configure                             Codebaum konfigurieren
make                                    Programm herstellen
su                                      als root anmelden
make install                            Programm installieren
exit                                    root abmelden

13.2.4. PHP

cd /usr/local/src                       Verzeichnis wechseln
tar xvfj php-5.0.1.tar.bz2              Quelldateien entpacken
cd php-5.0.1                            in das Quelldatei-Verzeichnis wechseln
./configure --help                      Hilfe zu den möglichen Optionen
./configure --with-apxs=/usr/local/apache/current/bin/apxs      Apache 1.3 oder
            --with-apxs2=/usr/local/apache2/current/bin/apxs    Apache 2
            --with-mysql=/usr/local/mysql/current
            --with-zlib
            --with-ftp
            --with-gd
            --with-jpeg-dir=/usr/local/lib
            --enable-versioning
            --enable-track-vars=yes
            --enable-url-includes
            --enable-sysvshm=yes
            --enable-sysvsem=yes
            --with-config-file-path=/etc
make                                    Programm herstellen
su                                      als root anmelden
make install                            Programm installieren
cp php.ini-dist /etc/php.ini            PHP-Konfiguration kopieren
vi /etc/apache/httpd.conf               Apache1.3 anpassen
vi /etc/apache2/httpd.conf              Apache2 anpassen
 LoadModule php5_module        modules/libphp5.so
                                        Apache2
 LoadModule php5_module        libexec/libphp5.so
                                        Apache1.3
 AddModule mod_php5.c                   Apache1.3
 DirectoryIndex index.html index.htm index.html.var index.php index.phtml
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
exit                                    root abmelden

13.3. Referenz

13.3.1. Grundlagen

<?php , <? oder <%              Beginn des PHP-Abschnitts
?> oder %>                      Ende des PHP-Abschnitts
;                               Zeilenende
// Kommentartext                Einzeiliger Kommentartext
/* Kommentartext                Einleitung, mehrzeiliger Kommentartext
Kommentartext */                Abschluss, mehrzeiliger Kommentartext
$                               Variablen anfang
echo "Text" ;                   Text ausgeben
echo "Text $Variable Text" ;    Variable ausgeben
echo "Text".$Variable."Text" ;  . Verketten von Zeichenfolgen
echo "Text\n" ;                 \n Erzeugt eine neue Zeile
echo "Text\r" ;                 \r Erzeugt einen neuen Absatz (return)
echo "Text\tText" ;             \t Erzeugt ein Tabulatorschritt
echo "\"Text\"" ;               \" Gänsefüßchen ausgeben
echo "\'Text\'" ;               \' Einfache Anführungszeichen ausgeben
echo "\$Text\$" ;               \$ Dollar-Zeichen ausgeben
echo "\\Text\\" ;               \\ Backslash ausgeben
$Array[Indexwert]="Wert" ;      Wert einer Array-Variable zuweisen (Langform)
$Array=array("W0","W1") ;       Werte einer Array-Variable zuweisen (Kurzform)
echo $Array[Indexwert] ;        Wert einer Array-Variable ausgeben
$Array[Index-Ersatz]="Wert" ;   Wert eines Assoziativen-Arrays zuweisen (Langf.)
$Array=array("I-E0"=>"W0","I-E1"=>"W1") ;
                                Werte eines Assoziativen-Arrays zuweisen(Kurzf.)
echo $Array[Index-Ersatz] ;     Wert eines Assoziativen-Arrays ausgeben
$a=$b+$c ;                      Addition von $b und $c gleich $a
$a=$b-$c ;                      Subtraktion von $b minus $c gleich $a
$a=$b*$c ;                      Multiplikation von $b mal $c gleich $a
$a=$b/$c ;                      Division $b geteilt durch $c gleich $a
$a++ ;                          $a=$a+1 ;
$a-- ;                          $a=$a-1 ;
$a=3.1415 ;                     . Dezimaltrenner

13.3.2. Funktionen

phpinfo() ;                     PHP-Informationen ausgeben
$Wochentag=date("w") ;          Wochentag ermitteln 0-So bis 6-Sa
$Monatszahl=date("m") ;         Monatszahl ermitteln
$Anzahl=count($Array) ;         Elemet-Anzahl eines Arrays ermitteln
$Wert=round($Wert,Nachkommastellen) ;   Rundet den Wert mit Nachkommastellen
$Wert=sprintf("%01.2f",$Wert) ; Rundet den Wert auf 2 :Nachkommastellen

14. Squid

14.1. Proxy

Squid = Proxy-Cache = Stellvertreter-Zwischenspeicher

14.2. Einfacher Cache

*---------------*     *------------*  |  *---------*  |  *------------*
| lokaler Cache |<--->| WWW-Client |<--->| Intenet |<--->| WWW-Server |
*---------------*     *------------*  |  *---------*  |  *------------*
Die einfachste form des Caches        |               |

14.3. Proxy Cache

*------------*
| WWW-Client |<-+                   |               |
*------------*  |                   |               |
                |                   |               |
*------------*  |  *-------------*  |  *---------*  |  *------------*
| WWW-Client |<-+->| Proxy Cache |<--->| Intenet |<--->| WWW-Server |
*------------*  |  *-------------*  |  *---------*  |  *------------*
                |                   |               |
*------------*  |                   |               |
| WWW-Client |<-+                   |               |
*------------*

14.4. Aufgaben

• Zwischenspeichern von Internetseitten -> Beschleunigter Zugriff auf Internetinhalte

• Abkoppelung vom direkten Zugriff auf das Internet -> Erhöte Sicherheit im lokalem Netz

• Filterung von Interrnetseiten

• Protokollierung des Internetverkehrs 14. Squid

14.5. Eigenschaften

• Größe des Cache kann frei definiert werden

• Aufbau von Cache-Hierarchien

• Eigener DNS-Cache

• Authentifizierung über zusätzliche Module möglich

• Für Win, OS/2, Linux, BSD, Solaris verfügbar

• Ausfilterung und Anonymisierung der Anfragen

• Sehr flexible Zugriffskontrolle

• Filterung über externe Programme (Squid-Guard)

14.6. Protokolle

14.6.1. Client-Kommunikation

• Hyper Text Transfer Protocol (HTTP)

• File Transfer Protocol (FTP)

• Gopher

• Wide Area Information Service (WAIS)

• Secure Socket Layer (SSL)

14.6.2. Kommunikation zwischen Proxy-Cache-Servern

• HyperText Transfer Protocol (HTTP)

• Internet Cache Protocol (ICP(3130))

• Cache Digests (Index von anderen Caches abfragen)

• Simple Network Management Protocol (SNMP)

• HyperText Caching Protocol (HTCP(4837))

• Web Cache Coordination Protocol (WCCP)

14.7. Systemvoraussetzungen

14.7. Systemvoraussetzungen

• Langsamme CPU

• Viel RAM

• Schnelle Festplatte(n)

• Große Festplatte(n)

14.8. SuSE Linux

rcsquid start           Squid starten
rcsquid stop            Squid stoppen
rcsquid restart         Squid stoppen und dann starten
rcsquid status          Squid info

14.9. Automatische Starten von Squit

cd /etc/rc.d/rc5.d/
ln -s ../squid S22squid         Link zum automatischen Starten in Runlevel 5
                                anlegen.
ln -s ../squid K02squid         Link zum automatischen Beenden in Runlevel 5
                                anlegen.

14.10. Squiddateien

/etc/squid.conf                 Squid Konfigurationsdatei
/usr/share/squid/errors/        Fehlermeldungen die der Squid ausgibt
/var/cache/squid/               Squid-Cache
/var/log/squid/access.log       Log-Datei mit allen Zugriffen
/var/log/squid/cache.log        Cache-Aktivitaeten

14.11. squid.conf

http_port: Proxy-Portnummer
# http_port 3128
http_port 8080
cache_mem: Hauptspeicherverbrauch (x3)
# cache_mem 8 MB
maximum_object_size: maximale groeße einer Datei die der Proxy speichert
# maximum_object_size 4096 KB

14. Squid

minimum_object_size: minimale groeße einer Datei die der Proxy speichert
# minimum_object_size 0 KB
cache_dir: Verzeichnisname GroeßeMByte Ebene1 Ebene2
# cache_dir ufs /var/cache/squid 100 16 256
cache_dir ufs /var/cache/squid 400 16 256
cache_access_log: Log-Datei mit allen Zugriffen
# cache_access_log /var/log/squid/access.log
cache_log: Log-Datei fuer alle Cache-Aktivitaeten
# cache_log /var/log/squid/cache.log
debug_options: ALL,1-normal 9-maximal
# debug_options ALL,1
log_fqdn: Bei on wird der Name und bei off wird die IP-Nummer
          in der access.log speichert
# log_fqdn off
log_fqdn off
client_netmask: Zum Anonymisieren
                255.255.255.255 volle IP-Nr.,
                255.255.255.0 ersten 3 Stellen
# client_netmask 255.255.255.255
ftp_user: Anonymer FTP-Name
# ftp_user Squid@
ftp_user Anonymous@

dns_children: maximale Anzahl der DNS Prozesse
# dns_children 5
dns_nameservers: Eintrag fuer DNS-Server
#dns_nameservers 194.25.2.129 192.168.6.66
reference_age: maximale Alter der Cachefiles (0.0 week/days/months/hours)
# reference_age 1 year
negative_ttl: gibt an wie lange eine negative DNS Aufloesung gueltig ist
# negative_ttl 5 minutes
http_access: Zugriffsrechte fuer den Cache

14.11. squid.conf

# acl - aclname acltype string - definiert eine Zuganskontrolle und Sperrliste
# src - Client IP-Adresse/Adressbereich
# dst - Zielserver IP-Adresse/Adressbereich
# srcdomain - Client (Domain-)Name
# dstdomain - Zielserver (Domain-)Name
# srcdom_regex - Cient (Domain-)Name als RegEx
# dstdom_regex - Zielserver (Domain-)Name als RegEx
# port - Port oder -bereich für Verbindungen
# proto - Protokoll (z.B. HTTP, FTP ...) für die Verbindung
# method - Methode der Verbindung (z.B. GET, POST ...)
# proxy_auth - Benutzernamen bei Authentifizierung
# urlpath_regex Teil einer URL als RegEx
acl all src 0.0.0.0/0.0.0.0
acl rotten dstdomain www.rotten.com
http_access deny rotten
http_access allow all
cache_mgr: E-Mail bei einen Fehler an: E-Mail oder Alias(/etc/aliases)
# cache_mgr webmaster
cache_effective_user: BenutzerName/ID
# cache_effective_user squid
cache_effective_group: GruppenName/ID
# cache_effective_group nogroup
visible_hostname: ServerName bei Fehlermeldungen
# none
visible_hostname proxy.gelbdmz.loc
logfile_rotate: Zeit der Logdateien in Wochen
# logfile_rotate 0
append_domain: Kein Punkt in der URL ? Dann diesen Domainnamen anhaengen
# none
append_domain .meak.de
error_directory: Verzeichnis zu den Fehlermeldungen die der Squid ausgibt
#error_directory /usr/share/squid/errors

Teil IV.

Programmieren

15. Bash

15.1. Einleitung

Was heist BASH ?                Bourne-Again SHell
Was ist die BASH ?              Standard-Shell der meisten Linux-Distributionen
                                Eine fast komplette Programmiersprache

BASH-Programme werden auch SScripte"(Protokolle) genannt !

15.2. Referenz

#!/bin/bash                     Pfad zur Shell die das Programm ausführen soll
chmod u+x Script                Macht das Script ausführbar
bash Script oder sh Script      so gehts auch
#                               Kommentar bis Zeilenende
:                               Null-Funktion. Ein Befehl, der nichts tut.
(( oder [
)) oder ]
echo Text                       Gibt den Text aus
echo "Text"                     Gibt den Text aus
echo Text   Text                Gibt den Text mit nur einer Leerstelle aus
echo "Text   Text"              Gibt den Text mit allen Leerstellen aus
echo Text\ \ \ Text             Gibt den Text mit allen Leerstellen aus
Variable=7                      Speichert 7 in der Variable
Variable=z                      Speichert z in der Variable
echo $Variable                  Gibt den Inhalt der Variable aus
echo ${Variable}                Gibt den Inhalt der Variable aus
Wert=$[$Wert+1]                 Wert=Wert+1
Wert=$(($Wert+1))               Wert=Wert+1
: $[Wert+=1]                    Wert=Wert+1
: $((Wert+=1))                  Wert=Wert+1

15. Bash

15.3. Steuer und Sonderzeichen der Bash

Zeichen                 Funktion
-------                 --------
Leerzeichen (space)     Trenner zwischen Programm-Parametern
Tabulator (tab)         Trenner zwischen Programm-Parametern
Return (newline)        Befehlseingabe
\ (backslash)           Escape-Zeichen
| (pipe)                Verkettung der Ein-/Ausgabe mehrerer Programme
& (ampersand)           Programm als Hintergrund-Prozess starten,
                        Ein-/Ausgabeumleitung
; (semikolon)           Trenner zwischen zwei Programmaufrufen
( ) (braces)            Gruppierung, Berechnung

16. git

Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien, die durch Linus Torvalds initiiert wurde.

16.1. Dokumentation

git help status                          Manpage von git status anzeigen
git status --help                        Manpage von git status anzeigen
man git-status                           Manpage von git status anzeigen

16.2. Konfiguration

git config --global ...                  Speichern im Homeverzeichnis .gitconfig
git config --system ...                  /etc/gitconfig konfigurieren unueblich
git config ...                           Arbeitsverzeichnis .git/config
git config user.name "Max Mustermann"    Name konfigurieren
git config user.email "max.mustermann@examle.com"
                                         E-Mail konfigurieren
git config --unset user.name             Name löschen
git config alias.st status               Alias status -> st  herstellen
[alias]                                  nützliche Abkürzungen
        st = status
        ci = commit
        br = branch
        co = checkout
        df = diff
        he = help
        cl = clone
git config -e                            startet Editor auf der Konfiguration
git config color.ui auto                 Farben einstellen
git config core.eol lf,crlf oder native  Zeilenende lf-Linux crlf-Windows
                                         native-System-Default
git config core.safecrlf                 Verbietet Commit bei vermischung
git config core.autocrlf input           sichere Einstellung bei älteren
                                         Git-Versionen unter Windows
git config il8n.commitEncoding ISO-8859-1
                                         Zeichenkodierung ISO-8859-1

                                         Standart UTF-8
git config core.pager 'env LESSCHARSET=iso8859 less'
                                         Zeichenkodierung für den Pager
git config core.editor vim               Vim als Editor einstellen
git config core.browser ...              Browser einstellen
git config help.autocorrect n            beim Vertippen ähnliches Subkommando
                                         ausführen, n Zentelsekunden bis zum
                                         Ausführen, -1 für sofort aus, 0 zeigt
                                         nur Möglichkeiten an
git config --list                        alle Einstellungen anzeigen

16.3. Konfigurationen über Umgebungsvariablen

GIT_EDITOR               Editor den Git verwendet
                         sonst greift die Variable EDITOR
GIT_PAGER                der wert cat schaltet den Pager aus
GIT_AUTHOR_EMAIL         E-Mail für den Autor des Commits
GIT_COMMITTER_EMAIL      E-Mail für das Commiter-Feld des Commits
GIT_AUTHOR_NAME          Name für den Autor des Commits
GIT_COMMITTER_NAME       Name für das Commiter-Feld des Commits
GIT_DIR                  Verzeichnis, in dem sich das Git-Repository befindet
                         macht nur sinn bei einem Git-Repository

16.4. Der Index

Der Inhalt von Dateinen liegt für Git auf drei Ebenen, den Working Tree, dem Index und dem Repository.

                          clone/fetch/pull
             +----------+ --------------------------------------------------> +
             |Repository|                                                     |
 --bare init |(origin)  | push                                                |
 ----------> +----------+ <--------------------------------------- +          |
                                                                   |          |
 status         add        status           commit/--amend         |          |
 +------------+ ---------> +--------------+ ---------------------> +----------+
 |Working Tree| diff       |Index         | diff --staged/--cached |Repository|
 |            | <--------> |(Staging Area)| <--------------------> |          |
 +------------+ <--------- +--------------+ <--------------------- +----------+
              | reset HEAD                  reset HEAD --          |          |
              + -------------------------------------------------> +          |
                checkout --                                                   |
 init                                                                         |
 ---------------------------------------------------------------------------> +

16.5. Repository

git diff                         zeigt den Unterschied zwischen Working Tree
                                 und Index an
git diff --color-words           Änderugen Fablich anzeigen
                                 grün-hinzugekommen rot-entfernt
git diff --word-diff --no-color  ohne Frabe mit Zeichen
git diff --staged                zeigt den Unterschied zwischen
                                 Index(Staging Area) und Repository an
git diff --cached                zeigt den Unterschied zwischen
                                 Index(Staging Area) und Repository an

16.5. Repository

git init Beispiel        Neues Repository herstellen, legt Verzeichnis Beispiel
                         an wenn nicht schon vorhanden
git status               zeigt den aktuellen Zustand an
git log                  die Commit Historie anzeigen

16.6. Commit

git add Datei                    Datei zum Index hinzufügen
git add -u oder --update         Alle Veränderungen in den Index übertragen
git reset HEAD Datei             aus der Staging Area zu entfernen
git commit -m "Erste Version"    Index zum Working Tree hinzufügen
        git add forgotten_file   Datei zum Index hinzufügen
        git commit --amend       den letzten Commit ändern
git show                         Commit einsehen
git log                          Commits anzeigen

16.7. Dateien entfernen

git rm Datei             Datei in deinem Arbeitsverzeichnis behalten,
                         aber aus der Staging Area nehmen
git rm -f Datei          Datei aus dem Arbeitsverzeichis und Index löschen
git reset HEAD Datei     Datei in Deinem Arbeitsverzeichnis behalten,
                         aber aus der Staging Area nehmen

16.8. Dateien verschieben

git mv Datei_alt Datei_neu                Datei verschieben

16.9. Änderung an einer Datei rückgängig machen

git checkout -- Datei    Datei zurückversetzen auf den letzten Commit oder Klone

16.10. Dateien ignorieren

Dateien im Projektverzeichnis die nicht versioniert im Repository sein sollen
kommen in die Datei .gitignore.
.gitignore
         #               Zeile mit # oder leere wird ignoriert
         *.o             ignoriert alle Dateien die mit .o enden
         !lib.o          wird nicht ignoriert
         /TODO           ignoriert den Ordner TODO
         build/          ignoriert alle Dateien im build Verzeichnis
         doc/*.txt       ignoriert alle .txt Dateien im doc Verzeichnis
         doc/**/*.txt    ignoriert alle .txt Dateien unterhalb des doc
                         Verzeichnis

16.11. Mit externen Repositorys arbeiten

git clone git://git.kernel.org/pub/scm/git/git.git
                                         git Repository herunterladen, Port 9418
git clone file:///home/git/project.git   Repository herunterladen, legt harte
                                         Links an wenn möglich
git clone ssh://user@server/project.git  ssh Repository herunterladen, Port 22
git clone http(s)://example.com/gitproject.git
                                         http(s) Repository herunterladen,
                                         Port 80(443)
git remote -v                            zeigt an, welche externen Server für
                                         das Projekt lokal konfiguriert sind
git remote add Name URL                  Remote Repository hinzufügen
git remote add origin ssh://git@sonne:/srv/git/linux.git
                                         Beispiel
git fetch Name                           Informationen aus dem Remote Repository
                                         herunterladen
git pull Name                            entspricht git fetch git merge
git checkout -b Branch origin/Branch     erstellt einen lokalen bearbeitbaren
                                         Branch
git push origin master                   Änderungen in ein Remote Repository
                                         hochladen
git push Remote Branch                   Brauch auf Remote hochladen
git push Remote :Branch                  löschen entfernter Branches
git remote show Name                     zeigt die URL für das Remote

16.12. Tags

                                         Repository, die Information welche
                                         Branches verfolgt werden und welcher
                                         Branch aus dem Remote Repository mit
                                         dem eigenen Master zusammengeführt
                                         wird, wenn Du git pull ausführst
git remote rename Name_alt Name_neu      Name des Remote Repository lokal ändern
git remote rm Name                       Remote Repository entfernen

16.12. Tags

git tag                          vorhandene Tags anzeigen
git tag -a v1.4 -m 'my version 1.4'
                                 einen kommentierten Tag anlegen
git tag -s v1.5 -m 'my signed 1.5 tag'
                                 einen kommentierten und signierten Tag anlegen
git tag -v v1.4.2.1              einen signierten Tag zu verifizieren
git tag -a v1.2 -m 'version 1.2' Checksumme
                                 im Nachhinein taggen, Checksumme des Commits
                                 oder einen Teil davon angeben
git log --pretty=oneline         Commit Historie mit Checksumme
git push origin v1.5             Tag veröffentlichen
git push origin --tags           Tags veröffentlichen
git tag -d v1.5                  Tag löschen
git push origin :refs/tags/v1.5  veröffentlichen Tag löschen

16.13. Branch

Was ist ein Branch? Ein Zeiger, der auf den gleichen Commit zeigt, auf dem Du gerade arbeitest.

git branch testing       erstellt einen neuen Branch mit dem Namen testing
git checkout testing     um zu einem anderen Branch zu wechseln
git branch -b testing    erstellt und wechselt zu dem Branch
git merge testing        führt testing mit dem Master-Branch zusammen
git branch -d testing    entfernt testing
git merge master         Deinem Zweig mit dem master kombinieren
git rebase master        alle Änderungen auf einem Branch, auf einen anderen
                         Branch erneut anwenden (nur mit unveröffendlichen
                         Branch machen)
git mergetool            grafischen Tool zur Bereinigung von Merge-Konflikten
git branch               Liste aller Branches anzeigen
git branch -v            für jeden Branch den letzten Commit anzeigen lassen
git branch --merged      Liste gemergter Branches
git branch --no-merged   Liste nicht gemergter Branches

16.14. Git Aliase

git config --global alias.co checkout    co anstelle von checkout schreiben
git config --global alias.br branch      br anstelle von branch schreiben
git config --global alias.ci commit      ci anstelle von commit schreiben
git config --global alias.st status      st anstelle von status schreiben

16.15. Git auf einen Server bekommen

git clone --bare my_project my_project.git
                                 Projekt zu Projekt.git klonen
scp -r my_project.git user@git.example.com:/opt/git
                                 Projekt per ssh hochladen
git clone user@git.example.com:/opt/git/my_project.git
                                 Projekt per ssh zum Arbeiten herunterladen
ssh user@git.example.com         auf dem Server anmelden
cd /opt/git/my_project.git       Projektverzeichnis betreten
git init --bare --shared         Gruppenschreibrechte zu einem Repository
                                 hinzufügen

16.16. Git auf dem SSH-Server einrichten

Einrichtung des SSH-Zugangs auf dem Server mit der Authorized-Keys-Methode zur Authentifizierung der Benutzer.

sudo adduser git                 Benutzer git anlegen
su git                           Rechte von User git erlagen
cd                               ins Home ~ Verzeichnis des Users wechseln
mkdir .ssh                       Verzeichnis .ssh anlegen

- öffentliche SSH-Schlüssel der Entwickler zu der Authorized-Keys-Datei des Benutzers git hinzuzufügen.

cat /tmp/id_rsa.user1.pub > ~/.ssh/authorized_keys
                                 authorized_keys erstellen und User1 einfügen
cat /tmp/id_rsa.user2.pub >> ~/.ssh/authorized_keys
                                 User2 einfügen
cat /tmp/id_rsa.user3.pub >> ~/.ssh/authorized_keys
                                 User3 einfügen

- Leeren Ordner anlegen und mit der Option –bare ein Repository ohne ein Arbeitsverzeichnis erzeugen.

cd /srv                          in den Ordner srv wechseln
mkdir git                        git Ordner anlegen

16.17. Öffentlicher Webserver-Zugang

cd git                           in den Ordner git wechseln
mkdir project.git                project.git Ordner anlegen
cd project.git                   in den Ordner project.git wechseln
git --bare init                  Repository ohne ein Arbeitsverzeichnis erzeugen

- Die erste Version des Projektes in das Repository hochladen

cd project                       in das Projekt wechseln
git init                         Projekt Repository herstellen
git add .                        alle Dateien um Index hinzufügen
git commit -m 'initial commit'   Index zum Working Tree hinzufügen
git remote add origin git@gitserver:/srv/git/project.git
                                 Server hinzufügen
git push origin master           Commits und Referenzen auf den Server hochladen

- Repository klonen und Änderungen hochladen

git clone git@gitserver:/srv/git/project.git     Repository klonen
cd project                                       ins Projekt wechseln
vim README                                       Projekt bearbeiten
git commit -am 'fix for the README file'         Änderung speichern
git push origin master                           Änderung hochladen

- Git-Zugang absichen

/etc/passwd
         git:x:1000:1000::/home/git:/bin/sh      /bin/sh auf
         git:x:1000:1000::/home/git:/usr/bin/git-shell
                                                 /usr/bin/git-shell ändern

16.17. Öffentlicher Webserver-Zugang

Anonymen Lese-Zugriff zu Deinem Projekt ermöglichen, per git clone http://git.gitserver.loc/project.git. - Hook aktivieren

cd project.git                                   in das Projekt wechseln
mv hooks/post-update.sample hooks/post-update    post-update umbenennen
chmod a+x hooks/post-update                      post-update ausfürbar machen

- VirtualHost Eintrag zur Apache-Konfiguration hinzufügen

<VirtualHost *:80>
        ServerName git.gitserver.loc
        ServerAdmin webmaster@localhost
        DocumentRoot /srv/git
#       <Directory /srv/git/>
#               Order allow, deny

#               allow from all
#       </Directory>
<Directory /srv/git/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/git.gitserver.loc-error.log
CustomLog ${APACHE_LOG_DIR}/git.gitserver.loc-access.log combined
</VirtualHost>

Nach dem nächsten push kann per "git clone http://git.gitserver.loc/project.git"das Projekt anonym herunter geladen werden.

16.18. Grundbegriffe

Versionkontrollsystem (Version Control System, VCS)
Eine Versionsverwaltung ist ein System, das zur Erfassung von Änderungen
an Dokumenten oder Dateien verwendet wird.
Zum Beispiel:
Zentrale Systeme - zentraler Server
        RCS-Revision Control System, CVS-Concurrent Versions System,
        SVN-Subversion
Verteilte Systeme - Kein zentraler Server
        Bazaar, Darcs, Fossil, Git, GNU arch, Mercurial, Monotone
Repository
Nutzt Git als Dantenbank in der die verschiedenen Zustände jeder Datei
eines Projektes über die Zeit hinweg ablegt. Jede Änderrung wird als
Commit verpackt und abgespeichert.
Working Tree
Das Arbeitsverzeichnis von Git, oft auch Working Directory genannt.
Commit
Das speichern der veränderten Dateien im Repository.
HEAD
Eine symbolische Referenz auf den neusten Commit im aktuellen Branch.
SHA-1
Der Secure Hash Algorithm erstellt eine eindeutige, 160 Bit lange
Prüfsumme. Alle Commits in Git werden nach ihrer SHA-1-Summe benannt,
die aus dem Inhalt und den Metadaten des Commits errechnet wird.
Objektmodell
Ein Git-Repository lässt sich als Graph von Commits modellieren, der
durch Git-Kommandos manipuliert wird.
Index
Der Index ist eine Zwischenstufe zwischen Working Tree und Repository,

16.19. Verwendung von Git

        in der Sie einen Commit vorbereiten. Enthält also die Dateien für den
        nästen Commit.
Clone
        Wenn Sie sich ein Git-Repository aus dem Internet herrunterladen.
        Enthält die gesamte Versionsgeschichte einschließlich aller Commits.
Branch
        Eine Abzweigung in der Entwicklung. Zum Beispiel für neue Featurs,
        Release vorbereitung oder alte Versionen mit Bugfixes zu versorgen.
master
        Beim Initialisieren eines neuen Repositorys wird der Branch master
        erstellt analog trunk in anderen Systemen.
Tag
        Tags sind symbolische Namen für schwer zu merkende SHA-1-Summen.
        Wichtige Commits, wie zum Beispiel Releases v1.2.3. oder können
        zusätzliche Metadateien wie Autor, Beschreibung und GPG-Signatur
        enthalten.

16.19. Verwendung von Git

git config --global user.name "Thomas resiX"        Benutzernamen angeben
git config --global user.email "resiX@local.loc"    E-Mail angeben
git remote add origin http://user@server:3000/user/test.git Server angeben
git config --list --show-origin                     Alle Einstellungen anzeigen
git config --unset user.name                        Name löschen
git init                                            repository anlegen
git status                                          Änderungen anzeigen
git add README.md                                   stage (hinzufügen) Datei
git commit -m "v0.0.1"          commit (hinzufügen bestätigen/beschreiben) Datei
git push                        alle Änderugen auf den Server hochladen
git pull                                        alle Änderugen vom Server holen
git clone http://github.com/resiX/test.git      repository vom Server holen
git branch neuerZweig                           branch (zweig) herstellen
git checkout neuerZweig                         Bearbeitung verzweigen
git branch                                      alle braches ausgeben
git merge neuerZweig                            branche zum Master hinzufügen

17. C/C++

17.1. Befehle und Grundelemente

gcc Datei.c                             Programm übersetzen -> a.out
g++ Datei.cpp                           Programm übersetzen -> a.out (C++)
gcc -c Datei.c                          Objektdatei herstellen -> Datei.o
g++ -c Datei.cpp                        Objektdatei herstellen -> Datei.o (C++)
gcc -o Programmname Datei1.o Datei2.o   Datei1.o+Datei2.o -> Programmname
g++ -o Programmname Datei1.o Datei2.o   Datei1.o+Datei2.o -> Programmname (C++)
gcc -o Programmname Datei.c             Programm übersetzen -> Programmname
g++ -o Programmname Datei.cpp           Programm übersetzen -> Programmname(C++)
Programmname                            Programm starten
configure                               Makefile konfigurieren
make                                    Programm übersetzen,
                                        wenn Makefile vorhanden
make install                            Programm installieren
/*              Kommentar einleiten
*/              Kommentar abschließen
//              Kommentar einleiten bis zum Zeilenende (C++)
{               Blockbeginn
}               Blockende
,               mehrere Variablen vom gleichen Typ deklarieren z.B. int a, b, c;
;               Funktions-,Operations- und Zeilen-ende (leere Anweisung)
#include<Datei> Datei aus /usr/include/ bei UNIX einlesen
#include"Datei" Datei aus dem aktuellen Verzeichnis einlesen
char            Variablentyp character - Zeichen
int             Variablentyp integer - ganzzahlig mit Vorzeichen
main()          Hauptfunktion
return()        Wert aus einer Funktion zurückliefern

17.2. Steuersequenzen für ANSI-Bildschirme - Innerhalb von Texten

\a              BEL     bell                    Alarm/Piepton

\b              BS      backspace               Rücksetzen um ein Zeichen
\f              FF      formfeed                Seitenvorschub
\n              NL      new line                Zeilenvorschub
\r              CR      carriage return         Wagenrücklauf
\t              HT      horizontal tabulation   horizontaler Tabulator
\v              VT      vertical tabulation     vertikaler Tabulator
\0              NULL    null                    kein Zeichen Textende
\?              ?       Fragezeichen (kein Dreierzeichen)
\'              '       Hochkomma
\"              "       Anführungszeichen
\\              \       umgekehrter Schrägstrich
\ddd            Zeichencode in oktaler Notation
\xdd            Zeichencode in hexadezimaler Notation
\e[1;1H         Cursor auf x1 und y1 setzen
\e[1;1f         -> \e[1;1H
\e[5A           Cursor 5 Zeilen aufwärts bewegen
\e[5B           Cursor 5 Zeilen abwärts bewegen
\e[5C           Cursor 5 Spalten vorwärts(rechts) bewegen
\e[5D           Cursor 5 Spalten rückwärts(links) bewegen
\e[2J           Bildschirm löschen
\e[6n           Ausgabe der Cursor position z.B. ^[[32;6R
\e[s            merkt die aktuelle Cursor Position
\e[u            Cursor auf gemerkte Position setzen
\e[Schrift;Vordergrund;Hintergrundmerkmale   setzt Bildschirmmerkmale
   Schrift           Vordergrund  Hintergrund
   0  normal         30  schwarz  40
   1  grell          31  rot      41
   4  unterstrichen  32  grün     42
   5  blinken        33  gelb     43  braun
   7  reverse        34  blau     44
                     35  magenta  45
                     36  cyan     46
                     37  weiß     47  grau

17.3. stdio.h -> Standard Ein- und Ausgabe

c=getchar();            Eingabe eines Zeichens, ohne Wagenrücklauf
putchar('a');           Ausgabe eines Zeichens, ohne Wagenrücklauf
puts("Text");           Zeichenkette ausgeben, mit Wagenrücklauf
fputs("Text",stdount);  Zeichenkette ausgeben, ohne Wagenrücklauf
fputs("Text",stderr);   Zeichenkette ausgeben, ohne Wagenrücklauf
printf("Text %d",Zahl); Zeichenkette formatiert ausgeben, ohne Wagenrücklauf
        % F Z1 . Z2 L U
        | | |  | |  | + Umwandlungszeichen: %d-dezimal      %u-unsigned

17.4. ctype.h

| | |  | |  |                       %o-oktal        %s-Text %c-Zeichen
| | |  | |  |                       %f-Flieskomma   %e-Expotential
| | |  | |  |                       %x-hexadezimal  %p-pointer
| | |  | |  +-- Long-Ausgabe: notwendig für long int
| | |  | +----- Nachkommastellen: z.B 3 für drei stellen
| | |  +------- Trenzeichen, falls Z1 und Z2
| | +---------- Größe des Ausgabefensters: z.B 7 für sieben stellen
| +------------ Ausrichtung: ohne Angabe rechtsbündig,
|                            mit Minuszeichen linksbündig
+-------------- Fluchtsymbol
scanf("%c",&text);      Zeichen in &text einlesen
% * Z L U
| | | | +------ Umwandlungszeichen
| | | +-------- Long-Ausgabe
| | +---------- Größe des Eingabefensters
| +------------ Wegwerfen
+-------------- Fluchtsymbol

17.4. ctype.h

if(isascii(zeichen))    überprüft ob es sich um ein ASCII-Zeichen handelt
if(isxdigit(zeichen))   überprüft ob es sich um ein Hex-Zeichen handelt

17.5. string.h

char *strcat(char text1, char text2) ;  hängt Text2(mit \0) an Text1
char *strchr(const char *text,
int zeichen) ;                          sucht das erste vorkommende
                                Zeichen im Text, liefert Adresse
                                oder NULL
char *strcpy(char text1, char text2) ;  kopiert Text2(mit \0) zum Text1
sitze_t strlen(const char *text) ;      liefert die Länge von Text(ohne \0)
char *strncat(char *text1,
const char *text2, sitze_t n) ;         hängt Text2 mit n Zeichen
                                an Text1(mit \0)
char *strtok(char *text,
const char *kette) ;                    1.Aufruf: sucht im Text das erste
                                Zeichen das nicht in Kette vorkommt
                                (wird kein Zeichen gefunden gibt strtok
                                einen NULL-Zeiger zurück), wird ein
                                Zeichen gefunden gibt strtok den Zeiger
                                zurück, dann sucht strtok ab Zeiger das
                                erste Zeichen das in der Kette vorkommt

                                        und überschreibt es mit \0, strtok merkt
                                        sich den Zeiger auf das nächste Zeichen
char *strtok(NULL, const char *kette) ; 2.-n.Aufruf: wie 1.Aufruf ab gemerkten
                                        Zeiger

17.6. Kontrollstrukturen

if(Ausdruck)                    wenn der Ausdruck stimmt,
{
        Anweisung-en1;          Anweisung-en1
}
else                            sonst
{
        Anweisung-en2;          Anweisung-en2
}
switch(Ausdruck)                gehe zum Ausdruck
{
        case 1:  Anweisung-en1;  Ausdruck1:                  Anweisung-en1
        case 2:  Anweisung-en2;  Ausdruck2:                  Anweisung-en2
                 break;                                      Anweisungen beenden
        case n:  Anweisung-enn;  Ausdruckn:                  Anweisung-enn
                 break;                                      Anweisungen beenden
        default: Anweisung-en;   Ausdruck nicht vorhanden:   Aneisung-en
}
continue;       unterbricht die Abarbeitung und geht zur Ausdrucksbedingung
break;          verlässt die Schleife oder Verbundsanweisung
for(Ausdruck1;Ausdruck2;Ausdruck3)      Ausdruck1 einmal ausführen
{                                       so lange der Ausdruck2 stimmt,
                                        vorher noch Ausdruck3
        Anweisug-en;                    Anweisung-en
}
while(Ausdruck)                 so lange der Ausdruck stimmt,
{
        Anweisung-en;           Anweisung-en
}
do                              mach
{
        Anweisung-en;           Anweisung-en
}

17.7. ASCII(American Standart Code for Information Interchange)-Tabelle

while(Ausdruck);                so lange der Ausdruck stimmt

17.7. ASCII(American Standart Code for Information Interchange)-Tabelle

654     000     001     010     011     100     101     110     111
Bit
3210
        NUL     DLE     SP      0       @       P       `       p
0000    $0 0    $10 16  $20 32  $30 48  $40 64  $50 80  $60 96  $70 112
        SOH     DC1     !       1       A       Q       a       q
0001    $1 1    $11 17  $21 33  $31 49  $41 65  $51 81  $61 97  $71 113
        STX     DC2     "       2       B       R       b       r
0010    $2 2    $12 18  $22 34  $32 50  $42 66  $52 82  $62 98  $72 114
        ETX     DC3     #       3       C       S       c       s
0011    $3 3    $13 19  $23 35  $33 51  $43 67  $53 83  $63 99  $73 115
        EOT     DC4     $       4       D       T       d       t
0100    $4 4    $14 20  $24 36  $34 52  $44 68  $54 84  $64 100 $74 116
        ENQ     NAK     %       5       E       U       e       u
0101    $5 5    $15 21  $25 37  $35 53  $45 69  $55 85  $65 101 $75 117
        ACK     SYN     &       6       F       V       f       v
0110    $6 6    $16 22  $26 38  $36 54  $46 70  $56 86  $66 102 $76 118
        BEL     ETB     '       7       G       W       g       w
0111    $7 7    $17 23  $27 39  $37 55  $47 71  $57 87  $67 103 $77 119
        BS      CAN     (       8       H       X       h       x
1000    $8 8    $18 24  $28 40  $38 56  $48 72  $58 88  $68 104 $78 120
        HT      EM      )       9       I       Y       i       y
1001    $9 9    $19 25  $29 41  $39 57  $49 73  $59 89  $69 105 $79 121
        LF      SUB     *       :       J       Z       j       z
1010    $A 10   $1A 26  $2A 42  $3A 58  $4A 74  $5A 90  $6A 106 $7A 122
        VT      ESC     +       ;       K       [Ä      k       {ä
1011    $B 11   $1B 27  $2B 43  $3B 59  $4B 75  $5B 91  $6B 107 $7B 123

        FF      FS      ,       <       L       \ö      l       |ö
1100    $C 12   $1C 28  $2C 44  $3C 60  $4C 76  $5C 92  $6C 108 $7C 124
        CR      GS      -       =       M       ]Ü      m       }ü
1101    $D 13   $1D 29  $2D 45  $3D 61  $4D 77  $5D 93  $7D 109 $7D 125
        SO      RS      .       >       N       ^n       ~ß
1110    $E 14   $1E 30  $2E 46  $3E 62  $4E 78  $5E 94  $7E 110 $7E 126
        SI      US      /       ?       O       _o       DEL
1111    $F 15   $1F 31  $2F 47  $3F 63  $4F 79  $5F 95  $7F 111 $7F 127

17.7.1. Unterteilung der Steuerzeichen:

TC      transmission control    Übertragungssteuerzeichen
FE      format effects          Formatsteuerzeichen
IS      information separators  Informationstrennzeichen
DC      device control          Gerätesteuerzeichen

17.7.2. Bedeutung der Steuerzeichen:

NUL             null                            kein Zeichen
SOH     TC      start of heading                Anfang des Kopfes
STX     TC      start of text                   Anfang des Textes
ETX     TC      end of text                     Ende des Textes
EOT     TC      end of transmission             Ende der Übertragung
ENQ     TC      enquiry                         Stationsaufforderung
ACK     TC      acknowledge                     positive Rückmeldung
BEL             bell                            Alarm / Piepton
BS      FE      backspace                       Rückwärtsschritt
HT      FE      horizontal tabulation           horizontaler Tabulator
LF      FE      line feed                       Zeilenvorschub
VT      FE      vertical tabulation             vertikaler Tabulator
FF      FE      form feed                       Seitenvorschub
CR      FE      carriage return                 Wagenrücklauf
SO              shift out                       Dauerumschaltung
SI              shift in                        Rückschaltung
DLE     TC      data link escape                Datenübertragungsumschaltung
DCn     DC      device control                  Gerätesteuerzeichen
NAK     TC      negative acknowledge            negative Rückmeldung
SYN     TC      synchronous idle                Synchronisierung
ETB     TC      end of transmission block       Ende des Übertragungsblocks
CAN             cancel                          ungültig
EM              end of medium                   Ende der Aufzeichnung

17.8. Operatoren und Ausdrücke

SUB             substitute character            Substitution
ESC             escape                          Umschaltung
FS      IS      file separator                  Hauptgruppentrennung
GS      IS      group separator                 Gruppentrennung
RS      IS      record separator                Untergruppentrennung
US      IS      unit separator                  Teilgruppentrennung
SP              space                           Leerzeichen
DEL             delete                          löschen

17.8. Operatoren und Ausdrücke

17.8.1. Arithmetische Operatoren:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
+               Addition                        >       5       a+b
-               Subtraktion                     >       5       a-b
*               Multiplikation                  >       4       a*b
/               Division                        >       4       a/b
%               Modulo                          >       4       a%b

17.8.2. Vergleichsoperatoren:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
<               kleiner als                     >       7       a<b
<=              kleiner oder gleich             >       7       a<=b
>               größer                          >       7       a>b
>=              größer oder gleich              >       7       a>=b
==              gleich                          >       8       a==b
!=              ungleich                        >       8       a!=b

17.8.3. Logische Operatoren:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
&               bitweises AND                   >       9       a&b
|               bitweises OR                    >       11      a|b
^bitweises XOR                   >       10      a^b
<<              bitweises Linksschieben         >       6       a<<n
>>              bitweises Rechtsschieben        >       6       a>>n
~               Einerkomplement                 <       2       ~a
&&              logisches AND                   >       12      a&&b
||              logisches OR                    >       13      a||b
!               logische Negation               <       2       !a

17.8.4. Zuweisungsoperatoren:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
=               Zuweisung                       <       15      a=b
+=              Zuweisung nach Addition         <       15      a+=b
-=              Zuweisung nach Subtraktion      <       15      a-=b
*=              Zuweisung nach Multiplikation   <       15      a*=b
/=              Zuweisung nach Division         <       15      a/=b
%=              Zuweisung nach Modulo           <       15      a%=b
<<=             Zuweisung nach bitweisem        <       15      a<<=b
                Linksschieben
>>=             Zuweisung nach bitweisem        <       15      a>>=b
                Rechtsschieben
&=              Zuweisung nach bitweisem AND    <       15      a&=b
|=              Zuweisung nach bitweisem OR     <       15      a|=b
^=              Zuweisung nach bitweisem XOR    <       15      a^=b

17.8.5. Post- und Prefix- Operatoren:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
++              Inkrement                       > <     1 2     a++ ++a
--              Dekrement                       > <     1 2     a-- --a
()              Funktionsaufruf                 >       1       sqrt(a)
[]              Arrayelement                    >       1       feld[a]
.               Feld einer structur oder union  >       1       tag.dat
->              Zeiger auf structur             >       1       zeig->ele
( type )        expl. Typenumwandlung           <       2       double(a)

17.8.6. Zeigeroperatoren:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
&               Adresse von                     <       2       &a
*               Indirektion                     <       2       *a
.*              Dereferenzzeiger                >       3       tag.*dat
->*             Dereferenzzeiger                >       3       tag->dat

17.8.7. Diverse Kategorien:

Operator        Bedeutung               Assoziativität  Rang    Beispiel
--------        ---------               --------------  ----    --------
?:              Bedinung                        <       14      a?b:c
        i = x<y ? 6 : k+1 ;             x kleiner y dann 6 sonst k+1

17.9. Inkrementieren und Dekrementieren

,               Aufzählungsoperator             >       16      a,b, ...
-               unäres Minus                    <       2       -n
+               unäres Plus                     <       2       +n
sizeof(typ)     Größe des Types in Byte         <       2       sizeof(a)
new             dynam. Objekt erzeugen          <       2       b = new float[a]
delete          dynam. Objekt löschen           <       2       delete b
::              Zugiffs-/Bereichsoperator       <       2       adr::nam

17.9. Inkrementieren und Dekrementieren

i++ ;                   i = i + 1
++i ;                   i = i + 1
x = i++ ;               1. x = i        2. i = i + 1
x = ++i ;               1. i = i + 1    2. x = i
i-- ;                   i = i - 1
--i ;                   i = i - 1
x = i-- ;               1. x = i        2. i = i - 1
x = --i ;               2. i = i - 1    2. x = i

17.10. Wertebereich und Genauigkeit elementarer Datentypen

Datentyp           Bit          Min.Wert        Max.Wert        Genauigkeit
--------           ---          --------        --------        -----------
char               8            -128            127
unsigned char      8            0               255
short int          16           -32768          32767
unsigned short int 16           0               65535
int                (16)32(64)   -2147483648     2147483647
unsigned int       16           0               65535
long int           32(64)       -2147483648     2147483647
unsigned long int  32           0               4294967295
float              32           ca. 3.4E-38     3.4E38          >= 6 Ziffern
double             64           ca. 1.7E-308    1.7E308         >= 10 Ziffern
long double        80           ca. 1.2E-4932   1.2E4932        >= double

17.11. Variableninitialisierung

Nichtinitialisierte Variabeln haben nicht automatisch den Wert 0!

short faktor=10 ;
short laktor, messwert ;

messwert=faktor ;

17.12. Konstanten

Konstanten werden mit dem vorangestellten Schlüsselwort const wie Variabeln deklariert. Der dem Namen über das =-Zeichen zugeordnete Wert kann nicht im Programm verändert werden. Für eine fehlende Typenangabe wird int angenommen.

cont float      PI =    3.14159 ;       // bevorzugen
#define         PI      3.14159 ;

17.12.1. Ganzzahlkonstanten

dezimal = 30 ; oktal = 036 ; hexadezimal = 0x1E ; Zusätzlich kann frau eine Ganzzahlkonstante durch das Suffix L oder l als long und durch U oder u als unsigned kennzeichnen (z.B. 30U).

17.12.2. Gleitkommakonstanten

0.033 +.033 33E-3 +33.0e-03 Zusätzlich kann frau eine Gleitkommakonstante durch das Suffix F oder f als float und durch L oder l als long double kennzeichnen (z.B. 0.033L).

17.12.3. Zeichen- und Zeichenkettenkonstanten

’n’ “zeichenkette’"

18. Tcl/Tk

wish    startet den Tcl/Tk-Interpeter
exit    beendet den Tcl/Tk-Interpeter
wish Programm.tcl       startet das Programm.tcl
button .name Option/en  Knopf definieren Optionen:
-text "Aufschrift"      Knopf-Aufschrift
-text [Befehl]          Knopf-Aufschrift vom Befehl
-command {Befehl}       Knopf-Befehl
Befehl: z.B. exec ls oder exec xterm -e vi &
-relief flat            Knopf flach
-relief raised          Knopf erhoben
-relief sunken          Knopf eingedrückt
-relief ridge           Knopf Band erhoben
-relief groove          Knopf Band eingedrückt
-padx Pixelzahl         Abstand zum Rand in x-Richtung
-pady Pixelzahl         Abstand zum Rand in y-Richtung
-image [ image create photo -file Bildname ]
                        Knopf mit gif, ppm oder pgm
-foreground Farbe       Schriftfarbe "#rgb"->"#ff0000" oder red
-fg Farbe               Abkürzung für -foreground Farbe
-background Farbe       Knopffarbe
-bg Farbe               Abkürzung für -background Farbe
-width Pixelbreite      Knopfbreite
-height Pixelhöhe       Knopfhöhe
-font Zeichensatz       Schrift für den Knopf
pack .name Option/en    Knopf anzeigen Option:
-fill x                 Knopf an die Fensterbreite anpassen
-expand true            Knopf im großen Fenster aufteilen

19. Perl

perl -v                         überprüfen ob Perl installiert ist

20. CGI+Perl

20.1. Einleitung

Was ist CGI?    Common Gateway Interface. Web-Server-Schnittstelle, um mit
                anderen Programmen zusammenzuarbeiten.
Was ist Perl?   Practical Extraction and Report Language. Interpreter-Skript-
                Sprache, die häufig zur Programmierung von CGI-Anwendungen
                benutzt wird.

20.2. Perl

20.2.1. Texte und Strings

# Kommentartext                 (Hash) Einzeiliger Kommentartext
print "Text" ;                  Text ausgeben
print "Text\n" ;                \n Neue Zeile
print "Text\r" ;                \r Wagenrücklauf
print "Text\t" ;                \t Tabulator
print "Text\v" ;                \v Vertikalzeichen
print "Text\f" ;                \f Papiereinzugszeichen
print "Text\b" ;                \b Rücksetzzeichen
print "Text\a" ;                \a Piepton
print "Text\e" ;                \e Unterbrechungszeichen
print $Variable ;               Variable ausgeben
print "Text\"" ;                \" Gänsefüßchen ausgeben
print "Text\'" ;                \' Einfache Anführungszeichen ausgeben
print "Text\$" ;                \$ Dollar-Zeichen ausgeben
print "Text\\" ;                \\ Backslash ausgeben
print "Text".$Var."Text" ;      . Verketten von Zeichenfolgen
print "Text"x10 ;               Text 10 mal zusgeben

20.2.2. Rechenoperationen

$a=$b+$c ;                      Addition von $b und $c gleich $a
$a=$b-$c ;                      Subtraktion von $b minus $c gleich $a
$a=$b*$c ;                      Multiplikation von $b mal $c gleich $a
$a=$b/$c ;                      Division $b geteilt durch $c gleich $a

20. CGI+Perl

$a=$b**$c ;                     Potenz $b hoch $c gleich $a
$a=$b%$c ;                      Modulo $b geteilt durch $c Rest gleich $a
$a++ ;                          $a=$a+1 ;
$a-- ;                          $a=$a-1 ;
$a=3.1415 ;                     . Dezimaltrenner

20.2.3. Arrays (Listen)

@Array=("W0","W1") ;            Werte einer Array-Variable zuweisen (Kurzform)
$Array[Indexwert]="Wert" ;      Wert einer Array-Variable zuweisen (Langform)
@Array=$Liste[2,4,8] ;          Werte eines Arrays eines Arrays zuweisen
print @Array ;                  Gesamtes Array ausgeben
print $Array[Indexwert] ;       Wert einer Array-Variable ausgeben
print $#Array ;                 Nummer des letzten Listenelements ausgeben

20.2.4. String- und Zahlenvergleichsoperratoren

Vergleich       Zahlenvergleich Stringvergleich
Gleich                  ==              eq
Ungleich                !=              ne
Kleiner als             <               lt
Größer als              >               gt
Kleiner oder gleich     <=              le
Größer oder gleich      >=              ge

20.2.5. if-Bedingung

if (Bedingung)                  Wenn die Bedingung Wahr,
{
        Befehle ;               Befehle ausführen
}

20.2.6. if-else-Bedingung

if (Bedingung)                  Wenn die Bedingung Wahr,
{
        Befehle ;               Befehle ausführen
}
else                            sonst
{
        Befehle ;               Befehle ausführen
}

20.3. Funktionen

20.2.7. if-elseif-Bedingung

if (Bedingung)                  Wenn die Bedingung Wahr,
{
        Befehle ;               Befehle ausführen
}
elseif (Bedingung)              sonst Wenn die Bedingung Wahr,
{
        Befehle ;               Befehle ausführen
}

20.3. Funktionen

20.3.1. String Funktionen

$Var=chop($String) ;            Löscht das letzte Zeichen von String und
                                gibt es an Var

20.3.2. Rechen Funktionen

$a=sqrt($b) ;                   Quadratwurzel von $b nach $a
$a=log($b) ;                    Logarithmus
$a=exp($b) ;                    Exponenten
$a=abs($b) ;                    Absoluterwert
$a=int($b) ;                    Ganzzahlwert

20.3.3. Array Funktionen

push(@Liste,@Elemente) ;        Setzt ein oder mehrere Elemente an
                                das Ende der Liste
unshift(@Liste,"Wert") ;        Setzt ein oder mehrere Elemente an
                                den Anfang der Liste
$a=shift(@Liste) ;              Entfernt das erste Element aus der Liste
                                und gibt es an $a
$a=pop(@Liste) ;                Entfernt das letzte Element aus der Liste
                                und gibt es an $a
splice(@Liste,Start,Anzahl,Element) ;   Entfernt die Anzahl vom Start der Liste
                                und fügt Element ein

21. Java

21.1. Funktion von Java

 +---------------+  +--------------------------+  +---------------------+
 | Programm Code |->| Java Compiler (java.exe) |->| Bytecode (01010011) |
 +---------------+  +--------------------------+  +---------------------+
                                                  |                     |
                                                  V                     V
                                          +--------------+      +--------------+
                                          | Ineterpreter |      | Browser/     |
                                          | (java.exe)   |      | Appletviewer |
                                          +--------------+      +--------------+
javac.exe progammcode.java -> programmcode.class        Programm compilieren
java.exe programmcode                                   Programm ausführen
appletviewer.exe                                        Applets ausführen

21.2. Sprache und Syntax von Java

21.2.1. Kommentrare

/*      Kommentar-Anfang
*/      Kommentar-Ende
//      Einzeiliger Kommentar ohne Ende
;       Anweisung abschließen

21.2.2. Datentypen

Typ     Inhalt                  Standdartwert   Größe   Wertebereich
boolean True oder False         False            1 Bit  -
char    Unicode Zeichen         0000            16 Bit    0000 bis FFFF (Hex.)
byte    Ganzzahl mit Vorzeichen 0                8 Bit    -256 bis 255
short   Ganzzahl mit Vorzeichen 0               16 Bit  -32768 bis 32767
int     Ganzzahl mit Vorzeichen 0               32 Bit   -2^31 bis 2^31-1
long    Ganzzahl mit Vorzeichen 0               64 Bit   -2^63 bis 2^63-1
float   Kommazahl               0.0             32 Bit  -
double  Kommazahl               0.0             64 Bit  -

21.2.3. Variablen

Variable deklarieren

boolean myBool;
int x = 32;
double y = 3.2;
char buchstabe;

Variabeln ansprechen

this.buchstabe;         bezieht sich auf die aktuelle Klasse

21.3. Pakete und Verzeichnisstrukturen

21.3.1. Sichtbarkeit und Zugriffsrechte von Klassen und Methoden

public                  Klasse, Methode oder Variable die überall sichtbar ist
protected               Methode oder Variable die nur im eigenen Paket und
                        abgeleiteten Klassen sichtbar ist
default                 Klasse, Methode oder Variable die Sichtbarkei beschrängt
                        sich auf das eigen Paket
private protected       Methode oder Variable die nur in abgeleiteten Klassen
                        sichtbar ist
private                 Methode oder Variable die nur in der eigenen Klasse
                        sichtbar ist
Zugriff                       public protected default private protected private
-------                       ------ --------- ------- ----------------- -------
Zugriff ...
... im selben Paket           Ja     Ja        Ja      Nein              Nein
... von anderen Paketen       Ja     Nein      Nein    Nein              Nein
Vererbt ...
... Klassen im selben Paket   Ja     Ja        Ja      Ja                Nein
... Klassen an andere Pakete  Ja     Ja        Nein    Ja                Nein

21.3.2. Klassen

class Klasse            Klassendeklaration
{
        ...
}
public class Klasse     öffendliche Klassendeklaration

21.3. Pakete und Verzeichnisstrukturen

{                       -ohne public ist die Klasse automatisch "privat"
        ...
}
package Paketklasse;    Klassen zusammenfassen d.h. Paketklasse.Klasse
public class Klasse
{
        ...
}
package Paket.Paketklasse       Oberklassen zusammenfassen d.h.
                                Paket.Paketklasse.Klasse

21.3.3. Konstruktoren und Destruktoren

class Klasse                    Konstruktor
{                               -----------
        public Klasse()         Methode die beim Erschaffen eines neuen Objektes
        {                       automatisch aufgerufen wird
                ...
        }                               Destruktor
                                        ----------
        protected void finalize()       Methode die beim Löschen eines alten
        {                               Objektes automatisch aufgerufen wird
                ...
        }
}

21.3.4. Methoden überladen

class Klasse
{
        Methode()               Dieselbe Metode mehrmals mit unterschielichen
        {                       Parametern schaffen
                ...
        }
        Methode(int var)        Dieselbe Metode mehrmals mit unterschielichen
        {                       Parametern schaffen
                ...
        }
}

21.3.5. Objekte

objekt Neuobjekt = new objekt();        Neues Objekt Neuobjekt von der Klasse

                                        objekt erstellen

21.3.6. Vererbung

public class NeuKlasse extends Klasse {}        neue Klasse NeuKlasse herstellen
                                                alle sichtbaren Eigenschaften
                                                und Methoden werden übernommen

21.3.7. Schnittstellen

public interface Klasse {               Schnittstelle erschaffen
        Methodenkopf();
        Variablen;
}
class NeuKlasse extends Klasse implements IntKlasse     neue Klasse NeuKlasse
                                                        herstellen
                                                alle sichtbaren Eigenschaften
                                                und Methoden werden übernommen
                                                und die Schnittstelle IntKlasse
                                                hinzufügen

21.4. Elementare Syntax von Java

21.4.1. Operratoren

x = 10;         Das Gleichheitszeichen weist immer den rechten Wert dem auf
                der linken Seite zu

21.4.2. Verknüpfungsoperatoren

Operator        Bedeutung       Beispiel
--------        ---------       --------
+               Addition        7 = 3 + 4;
-               Subtraktion     1 = 7 - 6;
*               Multiplikation  6 = 2 * 3;
/               Division        3 = 9 / 3;
%               Modulo(Rest)    1 = 9 % 4;

21.4.3. Inkrement-Operator

x++;            x = x + 1;

21.4. Elementare Syntax von Java

21.4.4. Dekrement-Operator

x--;            x = x - 1;

21.4.5. Arithmetische Zuweisungsoperatoren

Operator        Beispiel        Bedeutung
--------        --------        ---------
+=              x += 3;         x = x + 3;
-=              x -= 3;         x = x - 3;
*=              x *= 3;         x = x * 3;
/=              x /= 3;         x = x / 3;
%=              x %= 3;         x = x % 3;

21.4.6. Bedingungen und Entscheidungen

if(Bedingung) {         wenn Bedingung wahr dann Anweisungen
        Anweisungen;    if ( x != y ) { z++; }
}
Operator        Beschreibung
--------        ------------
==              Gleichheit
!=              Ungleichheit
<               kleiner als
>               größer als
<=              kleiner gleich
>=              größer gleich

21.4.7. if - else - Bedingungen

if(Bedingung) {         wenn Bedingung wahr dann Anweisungen1 sonst Anweisungen2
        Anweisungen1;   if ( x != y ) { z++; } else { z--; }
} else {
        Anweisungen2;
}

21.4.8. Verschachtelte Bedingungen

if(Bedingung1) {                wenn Bedingung1 und Bedingung2 dann Anweisungen1
        if(Bedingung2){         sonst Anweisungen2
                Anweisungen1;   if( x != y ) { if( a < b ){z++;} } else { z--; }
        }
} else {
        Anweisungen2
}

21.4.9. Fallunterscheidung mit switch - case

switch(Ausdruck) {                      switch(2) {             Route 2 also
        case Wert1: Anweisungen1;               case 1: x++;    x = x - 1;
                break;                                  break;
        case Wert2: Anweisungen2;               case 2: x--;
                break;                                  break;
        case Wert3: Anweisungen3;       }
                break;
}

21.5. Schleifen

21.5.1. Die while - Schleife

while(Bedingung) {              int x=0;                solange Bedingung wahr
        Anweisungen;            while(x<10) {           Anweisungen
}                                       x++;
                                }

21.5.2. Die do - while - Schleife

do {                            int x=0;                Anweisungen dann solange
        Anweisungen;            do {                    Bedingung wahr
} while(Bedingung);                     x++;            Anweisungen
                                } while(x<10);

21.5.3. Die for - Schleife

for(Initialisierung; Bedingung; Schleifenschritt) {     solange Bedingung wahr
        Anweisungen;                                    Anweisungen
}                               for(x=0;x<10;x++) {
                                        y++;
                                }

21.5.4. Schleifen mit break verlassen

for(x=0;x<10;x++) {             Die Schleife wird vor dem y++ verlassen
        break;
        y++;
}

21.5.5. Schleife mit continue wiederholen

for(x=0;x<10;x++) {             Die Schleife wird vor dem y++ wiederholt

21.6. Komplexe Datentypen

        continue;
        y++;
}

21.6. Komplexe Datentypen

21.6.1. Arrays

int liste[] = new int[10];      schafft ein Array dass zehn verschiedene int-
                                Werte speichern kann
int Array[][] = new int[3][3];  schafft ein zweidimensionales Array
int liste[] = {3, 5, 7};        schaft ein Array mit 3 Werten
liste[0] = Wert;                Wert des 1. Elements zuweisen
liste[0][0] = Wert;             Wert des 1. Elements zuweisen
Wert = liste[0];                Wert des 1. Elements abrufen
Wert = liste[0][0];             Wert des 1. Elements abrufen
liste.length                    enthält die Länge des Arrays liste

21.7. Die Anweisung import

import haus.wand.stein;         import erlaubt es Klassen im Sourcecode
getAnzahl();                    über einen gekürzten Namen anzuspechen
                                haus.wand.stein.getAnzahl() -> getAnzahl()
import java.lang.*;             importiert alle Bestandteile ins Programm

21.8. Java eigene Klassen

21.8.1. Die Klasse Math

Math.*                          bietet mathematische Funktionen
Math.E                          Eulersche Zahl
Math.PI                         PI
Math.random()                   Zufallszahl zwischen 0 und 1
Math.round()                    rundet zu Ganzzahlen

21.9. Die Klasse Object

21.9.1. Die Klasse Object

getClass()                      liefert die Klasse eines Objektes zurück
equals()                        vergleicht zwei Objekte gibt true oder false

21.10. Die Klasse Runtime

Um diese Klasse zu nutzen,muss mit getRuntime() erst ein Objekt erstellt werden!
Runtime mySystem = Runtime.getRuntime();        Objekt Runtime erstellen
freeMemory()                    freier Speicher
totalMemory()                   gesamter Speicher
exit(0)                         Programm sofort mit Wert verlassen
exec()                          Systemprogramme starten (s. Exceptions)

21.11. Die Klasse String

String s = "Hallo" + " Du !";   Strings zusammenfassen
charAt()                        gibt einen Buchstaben aus dem String zurück
indexOf()                       Position von Buchstaben/ketten feststellen
substring()                     String auseinanderschneiden
lenght()                        Länge eines Strings bestimmen

21.12. Die Klasse Stringbuffer

21.12.1. Die Klasse Stringbuffer

Um diese Klasse zu nutzen, muss erst ein Objekt erstellt werden!

Stringbuffer buffer = newStringbuffer("");      Objekt Stringbuffer erstellen
setCharAt()                     änderrung eines bestimmten Buchstaben im String
delete()                        löscht Teile aus dem String
replace()                       ersetzt Teile im String
insert()                        setzt Teile im String ein

21.13. Die Klasse System

Standardeingabe - in, Standardausgabe - out, Fehlerausgabe - err

System.out.println("Text")      Text ausgeben
byte[] b = new byte[80];
System.in.read(b);              Einlesen von Daten

21.14. Das Paket java.util

import java.util.*;             Paket einbinden

21.15. Ausnahmen (Exceptions)

21.14.1. Die Klasse Date

Date myDate = new Date();       Objekt Date erstellen
toString()                      Datum in einen String umwandeln
getTime()                       UNIX-Timestamp, der die Sekunden seit dem
                                1.1.1970 ausgibt
before()                        vergleicht das Datumsobjekt od es davor ist
after()                         vergleicht das Datumsobjekt od es danach ist

Erweiterte Funktionen rund um das Datum gibt es in der Klasse Calendar bzw. DateFormat in der Java-API

21.14.2. Die Klasse Random

Random zz = new Random();       Objekt Random erstellen
Methode         Bereich                 Typ
-------         -------                 ---
nextInt()       -2^31 bis 2^31-1        int
nextLong()      -2^63 bis 2^63-1        long
nextFloat()     0.0 bis 1.0             float
nextDouble()    0.0 bis 1.0             double
nextGaussian()          gibt eine Zufallszahl zurück, die nach dem Gauß-
                        Verfahren ermittelt wurde

21.14.3. Die Klasse Stack

Stack myStack = new Stack();    Objekt Stack erstellen
push()                          legt ein Objekt auf dem Stack ab
pop()                           holt das oberste Objekt vom Stack und löscht es
peek()                          holt das oberste Objekt vom Stack

21.15. Ausnahmen (Exceptions)

import java.io.*;
public class trycatchfinally {
  public static void main(String args[]) {
    Runtime mySystem = Runtime.getRuntime();    //Objekt Runtime erstellen
    try{                                        //unsichere Anweisungen
      mySystem.exec("xaos");
    } catch(IOException e) {                    //Fehlerbehandlung
      System.err.println("Es ist ein Fehler aufgetreten: " + e);

    } finally {                         //Anweisungen werden immer ausgeführt
      System.out.println("Kritischer Bereich wurde ausgeführt!");
    }
  }
}

21.15.1. Eigene Ausnahme erzeugen (throw)

Methode(int zahl) {
        if(zahl<0) {
                throw(new Exception("Fehler!"));
        } elese {
                zahl++;
        }
}

21.16. Multitasking mit Threads

21.16.1. Arbeiten mit Threads

java.lang               die Klasse Thread ist ein Bestandteil des Paketes
public class Klasse implements Runnable {}      neue Klasse über die
                                                Schnittstelle Runnable erstellen
run()                                           Methode run() (Code des Threads)
                                                muss überschrieben werden
Klasse test = new Klasse();             In main(): Objekt der eigenen Klasse
test.start();                                   erstellen und Startmethode
                                                aufrufen
public void start() {
        Thread myThread = new Thread(this);     Objekt aus der Klasse Thrad
                                                erstellen und deren Konstruktor
                                                das aktuelle Objekt als
                                                parameter übergeben
        myThread.start();                       Thread starten
        ...;
        myThread.stop();                        Thread beenden
}
myThread.sleep(x);                              Thread x Milisekunden pausieren
                                                muss mit Ausnahme abgefangen

21.17. Applets

                                                werden InterruptedException
myThread.suspend();                             Thraed anhalten
myThread.resume();                              Thread wieder starten
myThread.destroy();                             Thread zerstören/anhalten

21.17. Applets

21.17.1. Applets in eine Webseite einbinden

<html>
  <head>
    <title>Mein erstes Applet</title>
  </head>
  <body>
    <applet code="myApplet.class" width=150 height=150>
      <parm name="var1" value="Hallo">
      <parm name="var2" value="Java!">
    </applet>
  </body>
</html>

21.17.2. Das erste Java Applet

import java.applet.*;
import java.awt.*;
public class MyApplet extends Applet {
        public void paint(Graphics g) {
                g.drawString("Mein erstes Applet !", 20, 40);
        }
}

21.17.3. Die Methoden eines Applets

init()          wird automatisch bei der Initialisierung des Applets aufgerufen
start()         wird automatisch aufgerufen, wenn das Applet im sichtbaren
                Browser-Bereich erscheint
stop()          wird automatisch aufgerufen, wenn das Applet den sichtbaren
                Bereich verläßt
destroy()       wird automatisch beim verlassen der Seite oder schließen des
                Browsers aufgerufen

21.17.4. Ein Applet im Überblick

import java.applet.*;
import java.awt.*;

public class newApplet extends Applet {
        public void init() {
                //initialisierung aller nötigen Werte für das Programm
        }
        public void start() {
                //Start des Applets
        }
        public void paint(Graphics g) {
                //Grafikausgabe über das Objekt g !
        }
        public void stop() {
                //Stop des Applets
        }
        public void destroy() {
                //Ende des Applets
                //Speicher wird freigegeben
        }
}

21.17.5. Pakete

java.awt                dient zur Bearbeitung und Ausgabe von Grafiken und
                        Fensterelementen in Applikationen und Applets
                        (advanced window toolkit)
java.applet             eine Grundvoraussetzung für ein Applet

21.17.6. Die Klasse Graphics

public void paint(Graphics g) {         um in das Applet zu zeichnen
        drawString("Text",x,y);         Text im Applet ausgeben
}
drawLine()                              Linie zeichnen
drawRect()                              Rechteck zeichnen
fillRect()                              gefülltes Rechteck zeichen
drawRoundRect()                         Rechteck mit abgerundeten Ecken zeichnen
fillRoundRect()                         gefülltes Rundeck zeichnen
drawOval()                              Kreis/Elipse zeichnen
fillOval()                              gefüllte/r Kreis/Elipse zeichnen
copyArea()                              kopieren eines sichtbaren Bereiches

21.17.7. Die Klasse Color

Color farbe = new Color(r,g,b);         Farben erzeugen r=0-255 g=0-255 r=0-255
Color dfarbe = farbe.darker();          nächst dunklere Farbe

Color hfarbe = farbe.brighter();        nächst hellere Farbe
Konstante               Frabe
---------               -----
Clolor.white            weiss
Clolor.yellow           gelb
Clolor.orange           orange
Clolor.grey             grau
Clolor.pink             pink
Clolor.red              rot
Clolor.magenta          magenta
Clolor.green            grün
Clolor.blue             blau
Clolor.darkGray         dunkelgrau
Clolor.lightGray        hellgrau
Clolor.black            schwarz

21.17.8. Die Klasse Font

Windows         Java
-------         ----
Arial           Helvetica
Courier New     Corier
MS Sans Serif   Dialog
Times New Roman TimesRoman
WingDings       ZapfDingbats
Arial           default
Font f = new Font("art", stil, größe);          neue Schrift erstellen
                                                stil: plain(normal),
                                                italic(kursiv), blod(fett)

21.17.9. Die Klasse Image

Image myImage = getImage(getCodeBase(), "Bild.jpg");    Bildobjekt erschaffen
drawImage()                                             Bild anzeigen

21.17.10. Die Klasse Button

Button myButton = new Button("Klick");          Buttonobjekt erschaffen
setLabel()                              Beschriftung des Buttons ändern
getLabel()                              Beschriftung des Buttons auslesen

21.18. Eventhandling

java.awt.event.*;               Paket zur Ereignisbehandlung einbinden

21.18.1. Mouse Events

public class myApplet extends Applet implements MouseListener {}
                                Schnittstelle MouseListener implementieren
Methode         Aufgabe
-------         -------
mousePressed()  Maustaste wird gedrückt
mouseReleased() Maustaste wird losgelassen
mouseClicked()  Mausklick
mouseEntered()  Maus bewegt sich in das Applet
mouseExited()   Maus verlässt das Applet
addMouseListener(this);         Listener soll auf das gesamte Applet achten
public void mousePressed(mouseEvent e) {
        int x = e.getX();                       Maustaste an X gedrückt
        int y = e.getY();                       Maustaste an Y gedrückt
}
addMouseMotionListener(this);   MotionListener soll auf das Applet achten
mouseMoved()                    bewegte Mausereignisse
mouseDragged()

21.18.2. Action Events

public class myApplet extends Applet implements ActionListener {}
                                Schnittstelle ActionListener implementieren
Button myButton = new Button("Knopf");  Button erstellen
this.add(myButton);                     Button setzen
myButton.addActionListener(this);       Button mit ActionListener versehen
public void actionPerformed(ActionEvent e) {    Aufruf beim Anklicken des Button
        String Klick = e.getActionCommand();    gibt die Aufschift des Button
}

21.18.3. Parameter an ein Applet

<applet code="myApplet.class" width=150 height=150>

21.18. Eventhandling

        <parm name="var1" value="Hallo">        Parameter1
        <parm name="var2" value="Java!">        Parameter2
</applet>

String var1 = getParameter("var1");             Parameter1 an den String var1
String var2 = getParameter("var2");             und var2 übergeben

21.18.4. Weitere wichtige Pakete

java.net                Klassen und Schnittstellen für Netzwerkentwicklung
java.beans              wieder verwentbare Komponenten
java.security           erhöte Sicherheit innerhalb von Applikationen/Applets
java.rmi                Verteilung eines Programms auf mehrere Rechner
java.sql                Anbindung an SQL-Datenbanken
java.servlet            Applikationen die serverseitig laufen

22. JavaScript

22.1. Einbindung von JavaScript

22.1.1. Einbindung in den Head

<html>
<head>
  <title></title>
  <script language="JavaScript">      Leitet den JavaScript-Quelltext ein
    <!--                              Kommentar anfang für alte Browser die
      Definition von Fnktionen und    kein JavaScript unterstüzen
      Variablen                       JavaScript-Quelltext
    //-->                             Kommentar ende
  </script>                           Beendet den JavaScript-Quelltext
</head>
<body>
</body>
</html>

22.1.2. Einbindung in den Body

<html>
<head>
  <title></title>
</head>
<body>
  <script>                            Leitet den JavaScript-Quelltext ein
  </script>                           Beendet den JavaScript-Quelltext
</body>
</html>

22.1.3. Ausführen bei bestimmten Aktionen

<html>
<head>
  <title></title>
</head>
<body onLoad="JavaScript-Quelltext">  Beim Laden wird der JavaScript-Quelltext

                                        ausgeführt
  </body>
</html>

22.2. Variablen

var GlobaleVariable     Globale Variable deklarieren
function() {
  var LokaleVariable    Lokale Variable deklarieren
}
var variable            Variable deklarieren
variable = "Wert"       Wert zuweisen
var zahl=9              Variable deklarieren und Wert zuweisen
+                       Verketten

22.3. Objekte

22.3.1. Standardobjekte

document.write("Hallo")                 Hallo auf der Seite ausgeben
document.writeln("Hallo")               Hallo auf der Seite mit Zeilenumruch
                                        ausgeben
document.close()                        Schreiben schließen
document.bgColor=("ffffff")             Hintergrunffarbe
document.fgColor=("000000")             Fordergrundfarbe
document.linkColor=("00ff00")           Neuer Link
document.vlinkColor=("ffff00")          Besuchter Link
document.alinkColor=("ff0000")          Aktiver Link
document.referrer                       URL von der aufgerufen wurde
document.location                       URL der Datei selber
document.title                          Titel der Seite
document.Name.src="bild2.gif"           <img src="bild.gif" name="Name"> um auf
                                        das Bild zuzugreifen
document.forms[0].Name.value            Formular 1(0); aktueller Text im
                                        Eingabefeld auslesen oder überschreiben
document.forms[0].Name.defaultValue     Defaultwert auslesen oder überschreiben
document.forms[0].Name.select()         Text im Eingabefeld makieren
document.forms[0].Name.focus()          Cursor in das Eingabefeld setzen

22.3. Objekte

document.forms[0].Name[0].checked       Radio-Checkbuttons liest oder schreibt,
                                        ob ein Button ausgewählt ist
document.forms[0].Name[0].defaultChecked
                                        Voreinstellung eines Button lesen oder
                                        schreiben
                                        nicht markiert          markiert
                                        0                       1
                                        false                   true
document.forms[0].Name.options[0].selectedIndex
                                        Auswahlliste auslesen oder schreiben
document.forms[0].Name.options[0].value Wert auslesen oder schreiben
parent.frames[0].location.href=         Frameinhalt ändern 0 -> Frame 1
"frame.htm"
parent.                                 verzweigt in den nächsthöheren Frame
top.                                    verzweigt in den höchsten Frame im
                                        Browser
frames[n]                               verzweigt auf die nächstniedrigere Stufe
                                        in den Frame mit dem Index n
window.status=("Hallo")                 Hallo in der Statusleiste ausgeben
myWindow=window.open("Dateiname","Fenstername","Eigenschaften")
                                        Öffnet ein neues Fenster
Eigenschaften:  width=(Pixel)           gibt die Breite an
                height=(Pixel)          gibt die Höhe an
                resizable=yes/no        größe des Fensters veränderbar ?
                menubar=yes/no          Menüleiste vorhanden ?
                toolbar=yes/no          Buttonleiste vorhanden ?
                location=yes/no         Adresszeile vorhanden ?
                status=yes/no           Statuszeile vorhanden ?
                scrollbars=yes/no       Bildlaufleiste vorhanden ?
                dependent=yes/no        Vom aktuellen Fenster abhängig ?
myWindow.close()                        Schließt das neue Fenster
myWindow.closed                         Zugriff auf den Fensterzustand

22.3.2. String-Objekt

String.length                   Anzahl der Zeichen des Strings
String.substring(Anfang,Ende)   Gibt den Anfang bis Ende des Strings zurück
String.toLowerCase              Wandelt alle Buchstaben in Kleinbuchstaben
String.toUpperCase              Wandelt alle Buchstaben in Großbuchstaben

22.3.3. Eigene Objekte

function person(name, alter) {                  Funktion
  this.name = name                              zum
  this.alter = alter                            Objekt
}                                               anlegen
var meier = new person("Geier Meier", 18)       Objekt erzeugen
meier.name = "Mr. Geier Meier"                  Wert ändern
meier.alter = 20                                Wert ändern
meier = new Object                              Objekt erzeugen
meier.vorname = "Geier"                         Wert zuweisen
meier.nachname = "Meier"                        Wert zuweisen

22.3.4. Arrays

Variable = new Array                            Array erzeugen
Variable[0] = "hallo"                           Wert zuweisen

22.4. Mathematische Operationen

c = a + b               Addition
a++ ; a = a + 1
c = a - b               Subtraktion
a-- ; a = a - 1
c = a * b               Multiplikation
c = a / b               Division
a = Math.round(b)       Ganzzahlige Rundung

22.5. Bedingte Ausführung

if(Ausdruck)                    wenn der Ausdruck stimmt,
{
        Anweisung-en1           Anweisung-en1
}

22.6. Schleifen

for(Ausdruck1;Ausdruck2;Ausdruck3)      Ausdruck1 einmal ausführen
{                                       so lange der Ausdruck2 stimmt,
                                        vorher noch Ausdruck3
        Anweisug-en                     Anweisung-en

22.7. Event-Handler

}
while(Ausdruck)                         so lange der Ausdruck stimmt,
{
        Anweisung-en                    Anweisung-en
}

22.7. Event-Handler

onLoad="Aktion"         Beim Laden Aktion ausführen
onUnload="Aktion"       Beim Schließen Aktion ausführen
onMouseOver="Aktion"    Beim Überfahren Aktion ausführen
onMouseOut="Aktion"     Beim Verlassen Aktion ausführen
onFocus="Aktion"        Beim Setzen des Cursors auf das Element
                        (Einsatz in Formularen)
onBlur="Aktion"         Beim Verlassen des Elementes
onChange="Aktion"       Beim Verlassen des Elementes wenn verändert
onClick="Aktion"        Beim Anklicken eines Formularelements
<a href="javascript:function('Link')">Verweistext</a>
onSubmit="Aktion"       Beim Senden eines Formulares Aktion ausführen

22.8. Funktionen

function Name(var1,var2)        Definiert eine Funktion mit dem Name
{
  alert(var2)                   Hier kommt der Funktionsinhalt rein
}
return("Hallo")                 Hallo zurück geben
alert("Text")                   Öffnet ein Fenster und gibt den Text aus
uhrzeit=new Date()              Datum und Uhrzeit in das Objekt uhrzeit
                                schreiben
st=uhrzeit.getHours()           Stunden aus dem Objekt uhrzeit der Variable
                                st zuweisen
min=uhrzeit.getMinutes()        Minuten aus dem Objekt uhrzeit der Variable
                                min zuweisen
setTimeout("Funktion",Millisekunden)    Funktion nach Millisekunden aufrufen
Math.random()

22.9. Reservierte Wörter

abstract
boolean
break
byte
case
catch
char
class
const
continue
debugger
default
delete
else
enum
export
extends
false
final
finally
float
for
function
goto
if
implements
import
in
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
super

22.9. Reservierte Wörter

switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with

Teil V. Anhang

163

23. Glossar

Abhängigkeiten Ein von rpm verwendetes System, um die Verwaltung installierter Software zu vereinfachen. Jedes Paket enthält ein Skript, das dem lokalen rpm mitteilt, welche anderen Pakete es zur Ausführung benötigt. Sind die erforderlichen Pakete nicht installiert, wird die Installation abgebrochen. Gleiches gilt für die Deinstallation.

Andere, others In UNIX die Gruppe der Benutzer, die weder Eigetümer einer Datei sind, noch zur Besitzergruppe gehören. Es ist generell eine gute Idee, die Rechte dieser Gruppe so restriktiv wie möglich zu handhaben. Siehe auch Besitzergruppe.

alias Ein Shell-Mechanismus, um eine Zeichenkette durch einen anderen zu ersetzen, bevor ein Kommando ausgeführt wird. Einen Überblick über alle definierten Aliasse erhalten Sie mit dem Kommando alias.

Anzeigehilfe Programm zum Anzeigen einer (Text-) Datei. Es bietet die Möglichkeit einfach vorwärts und rückwärts durch das Dokument zu navigieren sowie Zeichenketten zu suchen. Wir empfehlen Ihnen das Programm less zu verwenden (u.a. da es die selben Tastaturkürzel wie vim verwendet).

APM Advanced Power Management (”Fortgeschrittenes Energiemanagement”). Wird von einigen BIOSsen dazu benutzt, die Maschine nach einer Periode von Inaktivität in einen energiesparenden Ruhezustand zu bringen. Auf Laptops ist APM auch dafür zuständig, Informationen über den Batteriestatus bzw. die verbleibende Arbeitszeit bereit zu stellen.

Arbeitsfläche Wenn Sie das X-Windows-System verwenden, ist die Arbeitsfläche der teil des Bildschirmes, auf dem Sie arbeiten und auf dem Ihre Symbole und Fenster dargestellt werden. Manschmal wird auch lachs vom ”Hitergrund” gesprochen. Siehe auch: virtuelle Arbeitsfläche.

ARP Address Resolution Protocol. (”Protokoll zur Adress-Auflösungs”). Das Protokoll um IP-Adressen dynamisch in physikalische (Hardware-)Adressen umzuwandeln. Nur möglich auf direkt verbundenen Netzwerken im Hardware- Broadcasting.

ASCII Abkürzung für American Standart Code for Information Interchange. Es handelt sich um den meistvervwendeten 7-Bit-Kode zur Darstellung von Ziffern, Buchstaben und Sonderzeichen. Der ASCII-Code ist mittlerweile per ”normativer Kraft des Faktischen” durch den ISO Standart 8859-1 abgelöst (Siehe ISO 8859).

23. Glossar

Assembler Maschinensprache. Vorstufe des Objekt-Kodes. Programme werden meist in sogenannten Hochsprachen (wie C) geschrieben, die dann per Kompilation in Assembler umgewandelt werden.

ATAPI eine Familie von CD-ROM-Laufwerken, die an den IDE-Controller angeschlossen werden. Es gibt auch SCSI-Laufwerke, die am SCSI-Controler betrieben werden, sowie proprietäre Laufwerke, die ihren eigenen Controller benutzen oder an die Soundkarte angeschlossen werden.

atomar Eine Gruppe von Operationen, die nicht weiter aufgeteilt werden kann.

ausführlicher Modus Befehle produzieren im ausführlichen Modus Zusatzinformationen, die auf die Standardausgabe oder Standart-Fehlerausgabe ausgegeben werden. Einige Programme bieten die Möglichkeit einzustellen wie ”redselig” sie sein sollen.

HTTP HyperText Transfer Protokoll(Hypertext-Übertragungsprotokoll). Ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten aus dem World Wide Web (WWW) in einen Webbrowser zu laden.

URL Uniform Resource Locator (Einheitlicher Quellenanzeiger). Bezeichnet man eine Unterart von Uniform Resource Identifiern (URIs). URLs identifizieren und lokalisieren eine Ressource über die zu verwendende Zugriffsmethode (z. B. das verwendete Netzwerkprotokoll wie HTTP oder FTP) und den Ort (engl. location) der Ressource in Computernetzwerken. Im allgemeinen Sprachgebrauch werden sie auch als Internetadresse bezeichnet, wobei damit (der umgangssprachlich häufigen Gleichsetzung von Internet und WWW folgend) meist speziell URLs von Webseiten gemeint sind.

USV Unterbrechungsfreie Stromversorgung. Sehr großer Akku (aufladbare Baterie) der bei einem Stromausfall den Rechner mit Strom versorgt.

WWW World Wide Web(Weltweites Netz). Ist ein über das Internet abrufbares Hypertext-System, bestehend aus elektronischen Dokumenten, die durch Hyperlinks miteinander verknüpft sind.

Stichwortverzeichnis

&, 30

affs, 49 alias, 22 apt, 32 apt-get, 32

bash, 55 bg, 30 Bildschirmschoner, 19,

39 blockorientiert, 28 bzip2, 17

cat, 23 cd, 23 cfdsik, 27 chgrp, 28 chmod, 28 chown, 28 chroot, 31 clock, 21 cmp, 25 comm, 25 compress, 25 cp, 23 csh, 55

date, 20, 21 Datum, 21 dd, 27 df, 20 diff, 25 dmesg, 17 docker, 69 docker-compose, 69 dpkg, 17, 32 echo, 20 egrep, 24 Eigentümer, 28 emerge, 33 env-update, 31 equery, 33 etc-update, 33 euse, 33 expand, 25 export, 31, 38, 55 ext2, 49 ext3, 49

fakeroot, 17 fdformat, 27 fdisk, 27 fg, 30 fgrep, 24 file, 22 find, 24 finger, 20 free, 20 fsck, 27 fstab, 48 ftp, 34

git, 119 gpg, 17, 36 grep, 24 group, 49 grub, 31 Gruppe, 28 gzip, 17

halt, 19 Hardlink, 23 head, 23 host, 34 hosts, 50 hpfs, 49 htop, 30

ifconfig, 34 info, 20 init, 19, 20 initctl, 20 insmod, 17 ip, 34 iso9660, 49

jobs, 30

Kernel, 17 kill, 30 ksh, 55

last, 20 ldd, 34 less, 23 ln, 23 locate, 55 login, 19 logout, 19 losetup, 28 lpq, 25 lpr, 25 lprm, 25 ls, 22 lsmod, 17

STICHWORTVERZEICHNIS

mail, 37, 75 make, 17, 34 make-kpkg, 17 man, 20 mfomat, 27 minix, 49 mkdir, 23 mkdosfs, 27 mke2fs, 27 mkfs, 27 modprobe, 28 more, 23 mount, 27 msdos, 49 mv, 23

ncpfs, 49 netcat, 34 netdate, 21 nfs, 49 nl, 23 nmap, 34 nslookup, 34 ntfs, 49

od, 23

passwd, 28, 53 ping, 34 pr, 25 proc, 49 ps, 30 pstree, 30 pwd, 20

rcsshd, 36 reboot, 19 recode, 23 reiserfs, 49 revdep-rebuild, 33 rlogin, 34 rm, 23 rmdir, 23 rmmod, 17 rpm, 32

sax, 38 scp, 34, 35 setenv, 55 settherm, 19 sh, 55 shutdown, 19 smbfs, 49 Softlink, 23 source, 31 ssh, 34, 35 ssh-keygen, 35 startx, 38 stderr, 19 stdin, 19, 56 stdout, 19 strace, 34 strings, 23 su, 28 sux, 28 systemctl, 19 sysv, 49

tail, 23 tar, 27 tcsh, 55 telnet, 34 timedatectl, 21 top, 30 tr, 25 tune2fs, 27

ufs, 49 Uhrzeit, 21 umount, 27 umsdos, 49 uname, 17 uncompress, 25 uniq, 25 unpack, 25 unset, 55 unsetenv, 55 Upstart, 20 useradd, 28 userdel, 28 usermod, 28 UTC, 21

vfat, 49 vi, 24, 61 vipw, 28

w, 20 wc, 22 wget, 17 whatis, 20 which, 20 who, 20 whoami, 20

xf86config, 38 XF86Setup, 38 xset, 39 xsetroot, 39

yast, 20

zcat, 17

zeichenorientiert, 28 Zeit, 21