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 ;-)
3
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
5
Inhaltsverzeichnis
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
6
Inhaltsverzeichnis
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.
LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8. Docker
69
8.1.
Docker installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
8.2.
Mit Docker arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7
Inhaltsverzeichnis
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
8
Inhaltsverzeichnis
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
9
Inhaltsverzeichnis
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
10
Inhaltsverzeichnis
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
11
Inhaltsverzeichnis
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
12
Inhaltsverzeichnis
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
13
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 \
17
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
18
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 Dateisy-
stems 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
19
3. Befehle
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
20
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
21
3. Befehle
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 Namens-
anfang 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
22
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
23
3. Befehle
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
24
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]
25
3. Befehle
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
26
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
27
3. Befehle
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
28
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
29
3. Befehle
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
30
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
31
3. Befehle
/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
32
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
33
3. Befehle
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
34
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ög-
licht eine sichere authentifizierte und verschlüsselte Verbindung zwischen zwei Rech-
nern ü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
35
3. Befehle
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 symme-
trische 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/
36
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
37
3. Befehle
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,
38
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
39
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
41
4. Verzeichnisse und Dateien
/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
42
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)
43
4. Verzeichnisse und Dateien
/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
44
4.1. Dateibaum
/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
45
4. Verzeichnisse und Dateien
/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
46
4.1. Dateibaum
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
47
4. Verzeichnisse und Dateien
/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), über-
geben. 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 regi-
strierten Devices mit ihren Gerätenummern ist bei den Kernelsourcen in der Datei
/usr/src/linux/Documentation/devices.txt zu finden.
48
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
49
4. Verzeichnisse und Dateien
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.
50
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 Librari-
es<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 Klein-
schreibung 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.
51
4. Verzeichnisse und Dateien
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
52
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
53
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
55
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
56
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
57
Teil II.
Programme
59
6. Der Texteditor vi/vim
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 ein-
fach 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
61
6. Der Texteditor vi/vim
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
62
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
63
6. Der Texteditor vi/vim
>>
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
64
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
65
7. LaTeX
7.1. LATEX
LATEX
67
8. Docker
Docker ist eine freie Software zur Isolierung von Anwendungen mit Hilfe von Contai-
nervirtualisierung. 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:
69
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
70
Teil III.
Linux im Netzwerk
71
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
73
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
74
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, insbe-
sondere ü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’
75
10. E-Mail
[Install]
WantedBy=multi-user.target
danach
sudo systemctl enable mailx-start.service
sudo systemctl enable mailx-stop.service
76
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 Ver-
sion 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
77
11. Apache
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
78
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
79
11. Apache
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
80
11.2. Kompilieren und Installieren
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
81
11. Apache
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 Kom-
pilieren 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
82
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 aus-
gefü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 Apa-
che 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
83
11. Apache
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 wer-
den
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
84
11.4. Beenden und Neustarten
• das Senden des USR1-Signals an den Elternprozess veranlasst alle seine Kind-
prozesse sich zu beenden
• die Kindprozesse bearbeiten noch die letzten Anfragen und beenden sich dann
• der Elternprozess liest, wärend die Kindprozesse noch laufen, seine Konfigurati-
onsdateien 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
85
11. Apache
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
86
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
87
11. Apache
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.
88
11.6. Benutzerhandbuch
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>
89
11. Apache
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 un-
ter 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
90
11.6. Benutzerhandbuch
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 Be-
nutzer 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]
91
11. Apache
(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 Konfigu-
rationsdateien 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
92
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 Ver-
sion 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
93
12. MySQL
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
|
94
12.2. Kompilieren und Installieren
+-----------------+
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
95
12. MySQL
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
96
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 Ver-
sion 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
97
13. PHP
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
98
13.2. Kompilieren und Installieren
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
99
13. PHP
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
100
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 Internetin-
halte
• Abkoppelung vom direkten Zugriff auf das Internet -> Erhöte Sicherheit im
lokalem Netz
• Filterung von Interrnetseiten
• Protokollierung des Internetverkehrs
101
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)
102
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
103
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
104
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
105
Teil IV.
Programmieren
107
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
109
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
110
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-1Zeichenkodierung ISO-8859-1
111
16. git
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
|
---------------------------------------------------------------------------> +
112
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
113
16. git
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
114
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
115
16. git
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 Benut-
zers 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 Arbeits-
verzeichnis erzeugen.
cd /srv
in den Ordner srv wechseln
mkdir git
git Ordner anlegen
116
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
117
16. git
#
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,
118
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
119
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
121
17. C/C++
\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
122
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
123
17. C/C++
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
}
124
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
125
17. C/C++
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
126
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
127
17. C/C++
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
128
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 ;
129
17. C/C++
messwert=faktor ;
17.12. Konstanten
Konstanten werden mit dem vorangestellten Schlüsselwort const wie Variabeln dekla-
riert. 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 Ganz-
zahlkonstante 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’"
130
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
131
19. Perl
perl -v
überprüfen ob Perl installiert ist
133
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
135
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
}
136
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
137
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 -
139
21. Java
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
140
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
141
21. Java
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;
142
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
}
143
21. Java
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
144
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
145
21. Java
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
146
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);
147
21. Java
} 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
148
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.*;
149
21. Java
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
150
21.17. Applets
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
151
21. Java
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>
152
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
153
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
155
22. JavaScript
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
156
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].defaultCheckedVoreinstellung 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
157
22. JavaScript
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
158
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()
159
22. JavaScript
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
160
22.9. Reservierte Wörter
switch
synchronized
this
throw
throws
transient
true
try
typeof
var
void
volatile
while
with
161
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 erforderli-
chen 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 Besitzergrup-
pe.
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 Zei-
chenketten 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 Inakti-
vität in einen energiesparenden Ruhezustand zu bringen. Auf Laptops ist APM
auch dafür zuständig, Informationen über den Batteriestatus bzw. die verblei-
bende 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 han-
delt sich um den meistvervwendeten 7-Bit-Kode zur Darstellung von Ziffern,
Buchstaben und Sonderzeichen. Der ASCII-Code ist mittlerweile per ”normati-
ver Kraft des Faktischen” durch den ISO Standart 8859-1 abgelöst (Siehe ISO
8859).
165
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 angeschlos-
sen werden. Es gibt auch SCSI-Laufwerke, die am SCSI-Controler betrieben wer-
den, 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 Zusatzinformatio-
nen, die auf die Standardausgabe oder Standart-Fehlerausgabe ausgegeben wer-
den. Einige Programme bieten die Möglichkeit einzustellen wie ”redselig” sie sein
sollen.
HTTP HyperText Transfer Protokoll(Hypertext-Übertragungsprotokoll). Ist ein Pro-
tokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich ein-
gesetzt, um Webseiten aus dem World Wide Web (WWW) in einen Webbrowser
zu laden.
URL Uniform Resource Locator (Einheitlicher Quellenanzeiger). Bezeichnet man ei-
ne 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. locati-
on) der Ressource in Computernetzwerken. Im allgemeinen Sprachgebrauch wer-
den 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 mit-
einander verknüpft sind.
166
Stichwortverzeichnis
&, 30
echo, 20
host, 34
egrep, 24
hosts, 50
affs, 49
Eigentümer, 28
hpfs, 49
alias, 22
emerge, 33
htop, 30
apt, 32
env-update, 31
apt-get, 32
equery, 33
ifconfig, 34
etc-update, 33
info, 20
bash, 55
euse, 33
init, 19, 20
bg, 30
expand, 25
initctl, 20
Bildschirmschoner, 19,
export, 31, 38, 55
insmod, 17
39
ext2, 49
ip, 34
blockorientiert, 28
ext3, 49
iso9660, 49
bzip2, 17
fakeroot, 17
jobs, 30
cat, 23
fdformat, 27
cd, 23
Kernel, 17
fdisk, 27
cfdsik, 27
kill, 30
fg, 30
chgrp, 28
ksh, 55
fgrep, 24
chmod, 28
file, 22
last, 20
chown, 28
find, 24
ldd, 34
chroot, 31
finger, 20
less, 23
clock, 21
free, 20
ln, 23
cmp, 25
fsck, 27
locate, 55
comm, 25
fstab, 48
login, 19
compress, 25
ftp, 34
logout, 19
cp, 23
losetup, 28
csh, 55
git, 119
lpq, 25
gpg, 17, 36
lpr, 25
date, 20, 21
grep, 24
lprm, 25
Datum, 21
group, 49
ls, 22
dd, 27
grub, 31
lsmod, 17
df, 20
Gruppe, 28
diff, 25
gzip, 17
mail, 37, 75
dmesg, 17
make, 17, 34
docker, 69
halt, 19
make-kpkg, 17
docker-compose, 69
Hardlink, 23
man, 20
dpkg, 17, 32
head, 23
mfomat, 27
167
STICHWORTVERZEICHNIS
minix, 49
rmdir, 23
Uhrzeit, 21
mkdir, 23
rmmod, 17
umount, 27
mkdosfs, 27
rpm, 32
umsdos, 49
mke2fs, 27
uname, 17
mkfs, 27
sax, 38
uncompress, 25
modprobe, 28
scp, 34, 35
uniq, 25
more, 23
setenv, 55
unpack, 25
mount, 27
settherm, 19
unset, 55
msdos, 49
sh, 55
unsetenv, 55
mv, 23
shutdown, 19
Upstart, 20
smbfs, 49
useradd, 28
ncpfs, 49
Softlink, 23
userdel, 28
netcat, 34
source, 31
usermod, 28
netdate, 21
ssh, 34, 35
UTC, 21
nfs, 49
ssh-keygen, 35
nl, 23
startx, 38
vfat, 49
nmap, 34
stderr, 19
vi, 24, 61
nslookup, 34
stdin, 19, 56
vipw, 28
ntfs, 49
stdout, 19
w, 20
od, 23
strace, 34
strings, 23
wc, 22
wget, 17
passwd, 28, 53
su, 28
whatis, 20
ping, 34
sux, 28
which, 20
pr, 25
systemctl, 19
who, 20
proc, 49
sysv, 49
whoami, 20
ps, 30
pstree, 30
tail, 23
xf86config, 38
pwd, 20
tar, 27
XF86Setup, 38
tcsh, 55
xset, 39
rcsshd, 36
telnet, 34
xsetroot, 39
reboot, 19
timedatectl, 21
recode, 23
top, 30
yast, 20
reiserfs, 49
tr, 25
revdep-rebuild, 33
tune2fs, 27
zcat, 17
rlogin, 34
zeichenorientiert, 28
rm, 23
ufs, 49
Zeit, 21
168
Document Outline