              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.    Auﬂisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .         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.   Zugriﬀsrechte/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 - Graﬁk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      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
                                A
                       7.1.    LT X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      67
                                  E
                    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-Zertiﬁkats . . . . . . . . . . . . . . . . . . .     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.   MySQLTesten . . . . . . . . . . . . . . . . . . . . . . . . . . . 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.   Konﬁguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
                        16.3.   Konﬁgurationen ü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. Öﬀentlicher Webserver-Zugang . . . . . . . . . . . . . . . . . . . . . . 117
                                        16.18. Grundbegriﬀe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Preﬁx- 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 Zugriﬀsrechte 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 Stringbuﬀer . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
                                              21.12.1. Die Klasse Stringbuﬀer      . . . . . . . . . . . . . . . . . . . . . . 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)
                             UpstartsorgtdafürdasDiensteereignisbasiertparallelgestartetwerdenkö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 ﬂogendes 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. Auﬂisten
                             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. Zugriﬀsrechte/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. Zugriﬀsrechte/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änderteKonﬁgurationsdateienüberschreibtrpmbeimUpdatenicht,sondernhebt
                             sie als Datei.rpmsave auf. diﬀ 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 authentiﬁzierte 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 - Graﬁk
                             /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 - Graﬁk
                                               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 Zugriﬀ, 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 identiﬁziert werden kann. Die oﬃzielle Liste der regi-
                             strierten Devices mit ihren Gerätenummern ist bei den Kernelsourcen in der Datei
                             /usr/src/linux/Documentation/devices.txt zu ﬁnden.
                             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/consolenicht öﬀnen 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 konﬁgurieren. /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
                 #Beispieleinerinittabfürsimpleinit#Format:Terminal:Termcapeintrag:Gettykommando
               tty1:linux:/sbin/getty9600tty1tty2:console:/sbin/getty9600tty2tty5: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.18maximalzweistelligen) Kürzelversehen werden,das bei Einträgen in Logﬁles
               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 Kommandosverwendetwerden. 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
               Kommandoan 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 Auﬂistung 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)
               UmindenEingabemodus 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)
               Uminden 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
                    A
             7.1. LT X
                      E
              A
             LT X
               E
                                                                           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.
                 DieAnfragenwerdenalsURLangegeben.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/
                 • Linuxab2.4.xx(z.B.DebianSarge3.1),libgdbm2-devel(ndbm.h->gdbm-ndbm.h)
                 • ANSI-C-CompilerundGenerierungswerkzeuge,GNUCCompiler(GCC)abVer-
                   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 Certiﬁcate 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 Serverzertiﬁkat
               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
                                • apachectlsetztverschiedeneUmgebungsvariablenundstartetdashttpd-Programm
                                • apachectl reicht alle Kommandozeilenargumente durch
                                • als erstes liest der httpd die Konﬁgurationsdatei httpd.conf ein, die beim Kom-
                                  pilieren festgelegt wurde
                                • zurLaufzeitkannderAblageortgeändertwerden,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, öﬀnet 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
                  • dieKind-ProzessewerdenvondemausgewähltenMulti-Processing-Modul(Apache-
                    MPMprefork 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äuﬁgsten 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
                                • umdenApachezustoppenoderneuzustarten,musseinSignalandenlaufenden
                                  httpd-Prozess gesendet werden
                                • es gibt zwei Möglichkeiten Signale zu senden, kill und apachectl
                                • auf dem System laufen mehrere httpd-Programme
                                • nurandenElternprozesssollteeinSignalgesendetwerden,/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 Konﬁgurati-
                    onsdateien erneut ein und öﬀnet seine Logdateien neu
                  • die Kindprozesse werden wieder gestartet
                  • die Serverstatistiken(mod_status) werden nicht auf Null zurückgesetzt
                  • ist die Konﬁgurationsdatei fehlerhaft, wird der Elternprozess nicht neu gestartet
                  • die Kindprozesse bearbeiten noch die letzten Anfragen und beenden sich dann
                  • wärednochdieletztenAnfragenbearbeitetwerdenkannderhttpdnichtgestartet
                    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 Konﬁgurationsdateien erneut ein und öﬀnet seine
                    Logdateien neu
                  • die Kindprozessewerdenwiedergestartetund setzen die BedienungvonZugriﬀen
                    fort
                  • die Serverstatistiken(mod_status) werden auf Null zurückgesetzt
                  • ist die Konﬁgurationsdatei 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-Zertiﬁkats
                             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 beﬁndet 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?
        DerkorrekteMIME-Typefürdasfavicon.icoistimage/x-icon.BeimApacheWebserver
        kann man das in einer .htaccess mit der Zeile:
        AddType image/x-icon .ico
         konﬁgurieren.
        Wie erstelle ich ein favicon.ico?
        ManbrauchtdafüreinenIconEditorwiemansiezuhaufbeiTucowsoderWinﬁles.com
        ﬁnden 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?
        Wieobenschongesagt,suchtderIE5,vorVersion5.5,zuerstimaktuellen’Verzeichnis’
        und geht dann Ebene um Ebene nach oben, bis er unter http://host/favicon.ico ein
        Icon ﬁndet 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 Zugriﬀ auf die Konﬁgu-
                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-Oberﬂäche, um MySQL zu
               konﬁgurieren.
               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-CompilerundGenerierungswerkzeuge,GNUCCompiler(GCC)abVer-
                   sion 2.95.4, wesentliche Generierungswerkzeuge wie make
                 • phpMyAdmin2.x.x(optional),erhältlichbeihttp://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-CompilerundGenerierungswerkzeuge,GNUCCompiler(GCC)abVer-
                    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ältlichbei 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 Zugriﬀ auf Internetin-
                   halte
                 • Abkoppelung vom direkten Zugriﬀ 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 deﬁniert werden
                 • Aufbau von Cache-Hierarchien
                 • Eigener DNS-Cache
                 • Authentiﬁzierung über zusätzliche Module möglich
                 • Für Win, OS/2, Linux, BSD, Solaris verfügbar
                 • Ausﬁlterung und Anonymisierung der Anfragen
                 • Sehr ﬂexible Zugriﬀskontrolle
                 • 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. Konﬁguration
               git config --global ...                  Speichern im Homeverzeichnis .gitconfig
               git config --system ...                  /etc/gitconfig konfigurieren unueblich
               git config ...                           Arbeitsverzeichnis .git/config
               git config user.name "Max Mustermann"    Name konfigurieren
               git config user.email "max.mustermann@examle.com"
                                                        E-Mail konfigurieren
               git config --unset user.name             Name löschen
               git config alias.st status               Alias status -> st herstellen
               [alias]                                  nützliche Abkürzungen
                       st = status
                       ci = commit
                       br = branch
                       co = checkout
                       df = diff
                       he = help
                       cl = clone
               git config -e                            startet Editor auf der Konfiguration
               git config color.ui auto                 Farben einstellen
               git config core.eol lf,crlf oder native Zeilenende lf-Linux crlf-Windows
                                                        native-System-Default
               git config core.safecrlf                 Verbietet Commit bei vermischung
               git config core.autocrlf input           sichere Einstellung bei älteren
                                                        Git-Versionen unter Windows
               git config il8n.commitEncoding ISO-8859-1
                                                        Zeichenkodierung ISO-8859-1
                                                                                   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. Konﬁgurationen ü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
               Wasist 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
                             Authentiﬁzierung 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
                               - öﬀentliche 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. Öﬀentlicher 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. Öﬀentlicher Webserver-Zugang
               AnonymenLese-ZugriﬀzuDeinemProjektermöglichen,pergitclonehttp://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-Konﬁguration 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>
                      Nachdemnächstenpushkannper"gitclonehttp://git.gitserver.loc/project.git"das
                    Projekt anonym herunter geladen werden.
                    16.18. Grundbegriﬀe
                    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 Preﬁx- 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 Suﬃx 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 Suﬃx F oder f als ﬂoat 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 Zugriﬀsrechte 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 Stringbuﬀer
                             21.12.1. Die Klasse Stringbuﬀer
                             Umdiese 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].defaultChecked
                                                       Voreinstellung eines Button lesen oder
                                                       schreiben
                                                       nicht markiert          markiert
                                                       0                       1
                                                       false                   true
               document.forms[0].Name.options[0].selectedIndex
                                                       Auswahlliste auslesen oder schreiben
               document.forms[0].Name.options[0].value Wert auslesen oder schreiben
               parent.frames[0].location.href=         Frameinhalt ändern 0 -> Frame 1
               "frame.htm"
               parent.                                 verzweigt in den nächsthöheren Frame
               top.                                    verzweigt in den höchsten Frame im
                                                       Browser
               frames[n]                               verzweigt auf die nächstniedrigere Stufe
                                                       in den Frame mit dem Index n
               window.status=("Hallo")                 Hallo in der Statusleiste ausgeben
               myWindow=window.open("Dateiname","Fenstername","Eigenschaften")
                                                       Öffnet ein neues Fenster
               Eigenschaften: width=(Pixel)            gibt die Breite an
                               height=(Pixel)          gibt die Höhe an
                               resizable=yes/no        größe des Fensters veränderbar ?
                               menubar=yes/no          Menüleiste vorhanden ?
                               toolbar=yes/no          Buttonleiste vorhanden ?
                               location=yes/no         Adresszeile vorhanden ?
                               status=yes/no           Statuszeile vorhanden ?
                               scrollbars=yes/no       Bildlaufleiste vorhanden ?
                               dependent=yes/no        Vom aktuellen Fenster abhängig ?
               myWindow.close()                        Schließt das neue Fenster
               myWindow.closed                         Zugriff auf den Fensterzustand
               22.3.2. String-Objekt
               String.length                   Anzahl der Zeichen des Strings
               String.substring(Anfang,Ende)   Gibt den Anfang bis Ende des Strings zurück
               String.toLowerCase              Wandelt alle Buchstaben in Kleinbuchstaben
               String.toUpperCase              Wandelt alle Buchstaben in Großbuchstaben
                                                                                   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 deﬁnierten
           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.
        Arbeitsﬂäche Wenn Sie das X-Windows-System verwenden, ist die Arbeitsﬂä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 Arbeitsﬂäche.
        ARP AddressResolutionProtocol.(”Protokollzur Adress-Auﬂösungs”).Das Protokoll
           umIP-Adressendynamischin physikalische (Hardware-)Adressenumzuwandeln.
           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 Ziﬀern,
           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 Identiﬁern (URIs). URLs identiﬁzieren und
                  lokalisieren eine Ressource über die zu verwendende Zugriﬀsmethode (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äuﬁgen Gleichsetzung von Internet und WWW folgend) meist speziell URLs
                  von Webseiten gemeint sind.
                USV Unterbrechungsfreie Stromversorgung. Sehr großer Akku (auﬂadbare Baterie)
                  der bei einem Stromausfall den Rechner mit Strom versorgt.
                WWWWorldWideWeb(WeltweitesNetz).IsteinüberdasInternetabrufbaresHypertext-
                  System, bestehend aus elektronischen Dokumenten, die durch Hyperlinks mit-
                  einander verknüpft sind.
                166
                Stichwortverzeichnis
                &, 30                        echo, 20                     host, 34
                                             egrep, 24                    hosts, 50
                aﬀs, 49                      Eigentümer, 28               hpfs, 49
                alias, 22                    emerge, 33                   htop, 30
                apt, 32                      env-update, 31
                apt-get, 32                  equery, 33                   ifconﬁg, 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                                                 jobs, 30
                                             fakeroot, 17
                cat, 23                      fdformat, 27                 Kernel, 17
                cd, 23                       fdisk, 27                    kill, 30
                cfdsik, 27                   fg, 30                       ksh, 55
                chgrp, 28                    fgrep, 24
                chmod, 28                    ﬁle, 22                      last, 20
                chown, 28                    ﬁnd, 24                      ldd, 34
                chroot, 31                   ﬁnger, 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
                diﬀ, 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
                                                                     strace, 34                       w, 20
                                     od, 23                          strings, 23                      wc, 22
                                     passwd, 28, 53                  su, 28                           wget, 17
                                     ping, 34                        sux, 28                          whatis, 20
                                     pr, 25                          systemctl, 19                    which, 20
                                     proc, 49                        sysv, 49                         who, 20
                                     ps, 30                                                           whoami, 20
                                     pstree, 30                      tail, 23                         xf86conﬁg, 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
