<!DOCTYPE html><html> <head> <title></title> <style type="text/css"> <!-- .xflip { -moz-transform: scaleX(-1); -webkit-transform: scaleX(-1); -o-transform: scaleX(-1); transform: scaleX(-1); filter: fliph; } .yflip { -moz-transform: scaleY(-1); -webkit-transform: scaleY(-1); -o-transform: scaleY(-1); transform: scaleY(-1); filter: flipv; } .xyflip { -moz-transform: scaleX(-1) scaleY(-1); -webkit-transform: scaleX(-1) scaleY(-1); -o-transform: scaleX(-1) scaleY(-1); transform: scaleX(-1) scaleY(-1); filter: fliph + flipv; } --> </style> </head> <body> <a name=1></a>linux v0.1.53<br/> tresix69@freenet.de<br/> 16. Februar 2025<br/> betreut durch Thomas resiX<br/> <hr/> <a name=2></a><hr/> <a name=3></a>1. Vorwort<br/> Habe versucht alles so kurz wie möglich aber dennoch ausführlich zu Beschreiben und<br/> wie immer aus verschiedenen Anleitugen abgeschrieben ;-)<br/> 3<br/> <hr/> <a name=4></a><hr/> <a name=5></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#3">1. Vorwort</a><br/> 3<br/> <a href="linuxs.html#5">Inhaltsverzeichnis</a><br/> 5<br/> <a href="linuxs.html#15">I.</a><br/> <a href="linuxs.html#15">Linux</a><br/> 15<br/> <a href="linuxs.html#17">2. Linux</a><br/> 17<br/> <a href="linuxs.html#17">2.1.</a><br/> <a href="linuxs.html#17">Was ist Linux? </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br/> <a href="linuxs.html#17">2.2.</a><br/> <a href="linuxs.html#17">Kernel und Module </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br/> <a href="linuxs.html#17">2.2.1.</a><br/> <a href="linuxs.html#17">Kernel 2.4 </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br/> <a href="linuxs.html#17">2.2.2.</a><br/> <a href="linuxs.html#17">Kernel 2.6 (Debian 4.0 etch) </a>. . . . . . . . . . . . . . . . . . . 17<br/> <a href="linuxs.html#19">3. Befehle</a><br/> 19<br/> <a href="linuxs.html#19">3.1.</a><br/> <a href="linuxs.html#19">Standartein-aus-gabe </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br/> <a href="linuxs.html#19">3.2.</a><br/> <a href="linuxs.html#19">Anmelden und Abmelden </a>. . . . . . . . . . . . . . . . . . . . . . . . . 19<br/> <a href="linuxs.html#19">3.3.</a><br/> <a href="linuxs.html#19">Anhalten des Systems und Booten </a>. . . . . . . . . . . . . . . . . . . . 19<br/> <a href="linuxs.html#20">3.4.</a><br/> <a href="linuxs.html#20">Die Runlevel </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br/> <a href="linuxs.html#20">3.4.1.</a><br/> <a href="linuxs.html#20">Upstart (Systemstart) </a>. . . . . . . . . . . . . . . . . . . . . . . 20<br/> <a href="linuxs.html#20">3.5.</a><br/> <a href="linuxs.html#20">SuSE-Linux </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br/> <a href="linuxs.html#20">3.6.</a><br/> <a href="linuxs.html#20">Zur Orientierung auf einem UNIX-Rechner </a>. . . . . . . . . . . . . . . . 20<br/> <a href="linuxs.html#21">3.7.</a><br/> <a href="linuxs.html#21">Datum und Uhrzeit </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br/> <a href="linuxs.html#22">3.8.</a><br/> <a href="linuxs.html#22">Auflisten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br/> <a href="linuxs.html#22">3.9.</a><br/> <a href="linuxs.html#22">Dateinamen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br/> <a href="linuxs.html#22">3.10. Dateiendungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br/> <a href="linuxs.html#22">3.11. Infos über Files </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br/> <a href="linuxs.html#23">3.12. Arbeiten(Verwüstungen) im und am Filesystem </a>. . . . . . . . . . . . . 23<br/> <a href="linuxs.html#23">3.13. Kopieren und Verschieben </a>. . . . . . . . . . . . . . . . . . . . . . . . . 23<br/> <a href="linuxs.html#23">3.14. Löschen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br/> <a href="linuxs.html#23">3.15. Ausgeben </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br/> <a href="linuxs.html#24">3.16. Der Texteditor vi/vim </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br/> <a href="linuxs.html#24">3.17. Suchen nach Dateien </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br/> <a href="linuxs.html#24">3.18. Suchen in Dateien </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br/> <a href="linuxs.html#25">3.19. Vergleichen von Dateien </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 25<br/> <a href="linuxs.html#25">3.20. Drucken </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br/> <a href="linuxs.html#25">3.21. File-Inhalt bearbeiten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br/> <a href="linuxs.html#25">3.22. TAR (tape archiver) verwaltet Dateiarchive </a>. . . . . . . . . . . . . . . 25<br/> <a href="linuxs.html#27">3.22.1. Packen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br/> 5<br/> <hr/> <a name=6></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#27">3.22.2. Entpacken </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br/> <a href="linuxs.html#27">3.23. Disketten/Festplatten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br/> <a href="linuxs.html#28">3.23.1. Dateisystem verschlüsseln </a>. . . . . . . . . . . . . . . . . . . . . 28<br/> <a href="linuxs.html#28">3.24. Zugriffsrechte/Eigentümer/Gruppe </a>. . . . . . . . . . . . . . . . . . . . 28<br/> <a href="linuxs.html#30">3.25. Prozessbefehle </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br/> <a href="linuxs.html#31">3.26. Re-install Grub with Live CD </a>. . . . . . . . . . . . . . . . . . . . . . . 31<br/> <a href="linuxs.html#31">3.26.1. Chroot </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br/> <a href="linuxs.html#31">3.26.2. Grub </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br/> <a href="linuxs.html#31">3.27. Software installieren </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br/> <a href="linuxs.html#31">3.27.1. rpm-Format </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br/> <a href="linuxs.html#32">3.27.2. deb-Format </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br/> <a href="linuxs.html#33">3.27.3. Portage Gentoo </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br/> <a href="linuxs.html#34">3.27.4. Quelltexte </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br/> <a href="linuxs.html#34">3.27.5. Hilfe </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br/> <a href="linuxs.html#34">3.28. Im Netz </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br/> <a href="linuxs.html#35">3.29. SSH </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br/> <a href="linuxs.html#35">3.29.1. Generierung eines DSA Schlüsselpaares </a>. . . . . . . . . . . . . 35<br/> <a href="linuxs.html#35">3.29.2. Public-Key auf dem Zielrechner hinzufügen </a>. . . . . . . . . . . 35<br/> <a href="linuxs.html#35">3.29.3. Private-Key auf dem Qellrechner </a>. . . . . . . . . . . . . . . . . 35<br/> <a href="linuxs.html#36">3.29.4. Login nur mit SSH-Keys erlauben </a>. . . . . . . . . . . . . . . . 36<br/> <a href="linuxs.html#36">3.30. GnuPG </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br/> <a href="linuxs.html#36">3.30.1. Erzeugen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br/> <a href="linuxs.html#36">3.30.2. Hochladen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br/> <a href="linuxs.html#37">3.30.3. Löschen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br/> <a href="linuxs.html#37">3.30.4. Holen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br/> <a href="linuxs.html#37">3.30.5. Signatur erzeugen und prüfen </a>. . . . . . . . . . . . . . . . . . . 37<br/> <a href="linuxs.html#37">3.30.6. Verschlüsseln </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br/> <a href="linuxs.html#37">3.30.7. Entschlüsseln </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br/> <a href="linuxs.html#38">3.30.8. Schlüsselverwaltung </a>. . . . . . . . . . . . . . . . . . . . . . . . 38<br/> <a href="linuxs.html#38">3.30.9. Anzeigen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br/> <a href="linuxs.html#38">3.30.10. Exportieren </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br/> <a href="linuxs.html#38">3.31. X11 - Grafik </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br/> <a href="linuxs.html#39">3.31.1. Bildschirmschoner/Maus </a>. . . . . . . . . . . . . . . . . . . . . . 39<br/> <a href="linuxs.html#39">3.31.2. X11 ohne Maus </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br/> <a href="linuxs.html#41">4. Verzeichnisse und Dateien</a><br/> 41<br/> <a href="linuxs.html#41">4.1.</a><br/> <a href="linuxs.html#41">Dateibaum </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br/> <a href="linuxs.html#48">4.2.</a><br/> <a href="linuxs.html#48">/etc/fstab </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br/> <a href="linuxs.html#48">4.3.</a><br/> <a href="linuxs.html#48">/dev/ </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br/> <a href="linuxs.html#49">4.4.</a><br/> <a href="linuxs.html#49">Dateisystemtypen unter Linux </a>. . . . . . . . . . . . . . . . . . . . . . . 49<br/> <a href="linuxs.html#49">4.5.</a><br/> <a href="linuxs.html#49">/etc/group </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br/> <a href="linuxs.html#50">4.6.</a><br/> <a href="linuxs.html#50">/etc/hosts </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br/> <a href="linuxs.html#50">4.7.</a><br/> <a href="linuxs.html#50">/etc/inittab </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br/> <a href="linuxs.html#50">4.7.1.</a><br/> <a href="linuxs.html#50">Terminal </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br/> <a href="linuxs.html#50">4.7.2.</a><br/> <a href="linuxs.html#50">Termcapeintrag </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br/> 6<br/> <hr/> <a name=7></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#51">4.7.3.</a><br/> <a href="linuxs.html#51">Gettykommando </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 51<br/> <a href="linuxs.html#51">4.7.4.</a><br/> <a href="linuxs.html#51">Kürzel </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br/> <a href="linuxs.html#51">4.7.5.</a><br/> <a href="linuxs.html#51">Arbeitsstufen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br/> <a href="linuxs.html#51">4.7.6.</a><br/> <a href="linuxs.html#51">Modus </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br/> <a href="linuxs.html#52">4.7.7.</a><br/> <a href="linuxs.html#52">Kommando </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br/> <a href="linuxs.html#53">4.8.</a><br/> <a href="linuxs.html#53">/etc/passwd </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br/> <a href="linuxs.html#55">5. Die Shells</a><br/> 55<br/> <a href="linuxs.html#55">5.1.</a><br/> <a href="linuxs.html#55">Die Shells </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br/> <a href="linuxs.html#55">5.2.</a><br/> <a href="linuxs.html#55">Die Start-Scripts </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br/> <a href="linuxs.html#55">5.3.</a><br/> <a href="linuxs.html#55">Tastenkombinationen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br/> <a href="linuxs.html#56">5.4.</a><br/> <a href="linuxs.html#56">Die C-Shell </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br/> <a href="linuxs.html#57">5.5.</a><br/> <a href="linuxs.html#57">Bash rechnen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br/> <a href="linuxs.html#59">II. Programme</a><br/> 59<br/> <a href="linuxs.html#61">6. Der Texteditor vi/vim</a><br/> 61<br/> <a href="linuxs.html#61">6.1.</a><br/> <a href="linuxs.html#61">Aufruf </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br/> <a href="linuxs.html#61">6.2.</a><br/> <a href="linuxs.html#61">Eingabemodus (input mode) </a>. . . . . . . . . . . . . . . . . . . . . . . . 61<br/> <a href="linuxs.html#61">6.3.</a><br/> <a href="linuxs.html#61">Befehlsmodus (visual mode) </a>. . . . . . . . . . . . . . . . . . . . . . . . 61<br/> <a href="linuxs.html#61">6.3.1.</a><br/> <a href="linuxs.html#61">Eingeben: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br/> <a href="linuxs.html#61">6.3.2.</a><br/> <a href="linuxs.html#61">Überschreiben: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br/> <a href="linuxs.html#62">6.3.3.</a><br/> <a href="linuxs.html#62">Bewegen: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br/> <a href="linuxs.html#63">6.3.4.</a><br/> <a href="linuxs.html#63">Löschen und Eingeben: </a>. . . . . . . . . . . . . . . . . . . . . . 63<br/> <a href="linuxs.html#63">6.3.5.</a><br/> <a href="linuxs.html#63">Löschen: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br/> <a href="linuxs.html#63">6.3.6.</a><br/> <a href="linuxs.html#63">Aufheben: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br/> <a href="linuxs.html#63">6.3.7.</a><br/> <a href="linuxs.html#63">Verschieben: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br/> <a href="linuxs.html#64">6.3.8.</a><br/> <a href="linuxs.html#64">Zusammenfügen: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 64<br/> <a href="linuxs.html#64">6.3.9.</a><br/> <a href="linuxs.html#64">Markieren: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br/> <a href="linuxs.html#64">6.3.10. Kopieren: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br/> <a href="linuxs.html#64">6.3.11. Einfügen: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br/> <a href="linuxs.html#64">6.3.12. Suchen: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br/> <a href="linuxs.html#64">6.3.13. Wiederholen: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br/> <a href="linuxs.html#65">6.3.14. Sonstige Kommandos: </a>. . . . . . . . . . . . . . . . . . . . . . . 65<br/> <a href="linuxs.html#65">6.4.</a><br/> <a href="linuxs.html#65">Kommandomodus (colon mode) </a>. . . . . . . . . . . . . . . . . . . . . . 65<br/> <a href="linuxs.html#65">6.4.1.</a><br/> <a href="linuxs.html#65">Texteingabe Kommandos </a>. . . . . . . . . . . . . . . . . . . . . 65<br/> <a href="linuxs.html#67">7. LaTeX</a><br/> 67<br/> <a href="linuxs.html#67">7.1.</a><br/> <a href="linuxs.html#67">LATEX </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br/> <a href="linuxs.html#69">8. Docker</a><br/> 69<br/> <a href="linuxs.html#69">8.1.</a><br/> <a href="linuxs.html#69">Docker installieren </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br/> <a href="linuxs.html#69">8.2.</a><br/> <a href="linuxs.html#69">Mit Docker arbeiten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br/> 7<br/> <hr/> <a name=8></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#71">III. Linux im Netzwerk</a><br/> 71<br/> <a href="linuxs.html#73">9. Netzwerk</a><br/> 73<br/> <a href="linuxs.html#74">9.1.</a><br/> <a href="linuxs.html#74">/etc/network/interfaces </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 74<br/> <a href="linuxs.html#75">10. E-Mail</a><br/> 75<br/> <a href="linuxs.html#75">10.1. Verwendung von E-Mail </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 75<br/> <a href="linuxs.html#77">11. Apache</a><br/> 77<br/> <a href="linuxs.html#77">11.1. Einleitung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br/> <a href="linuxs.html#77">11.2. Kompilieren und Installieren </a>. . . . . . . . . . . . . . . . . . . . . . . . 77<br/> <a href="linuxs.html#77">11.2.1. Anforderungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br/> <a href="linuxs.html#77">11.2.2. Vorbereitungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br/> <a href="linuxs.html#78">11.2.3. OpenSSL </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br/> <a href="linuxs.html#78">11.2.4. Apache 1.3 und SSL </a>. . . . . . . . . . . . . . . . . . . . . . . . 78<br/> <a href="linuxs.html#80">11.2.5. Apache2 </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br/> <a href="linuxs.html#80">11.2.6. Testen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br/> <a href="linuxs.html#81">11.2.7. Upgrade </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br/> <a href="linuxs.html#81">11.2.8. PureFTPd </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br/> <a href="linuxs.html#82">11.3. Apache starten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br/> <a href="linuxs.html#82">11.3.1. Apache starten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br/> <a href="linuxs.html#82">11.3.2. Wie der Apache startet </a>. . . . . . . . . . . . . . . . . . . . . . 82<br/> <a href="linuxs.html#83">11.3.3. Fehler während des Hochfahrens </a>. . . . . . . . . . . . . . . . . 83<br/> <a href="linuxs.html#83">11.3.4. Automatisch starten und beenden </a>. . . . . . . . . . . . . . . . 83<br/> <a href="linuxs.html#83">11.3.5. Weitere Informationen </a>. . . . . . . . . . . . . . . . . . . . . . . 83<br/> <a href="linuxs.html#84">11.4. Beenden und Neustarten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 84<br/> <a href="linuxs.html#84">11.4.1. Einleitung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br/> <a href="linuxs.html#84">11.4.2. Beenden </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br/> <a href="linuxs.html#84">11.4.3. Unterbrechungsfreier Neustart </a>. . . . . . . . . . . . . . . . . . 84<br/> <a href="linuxs.html#85">11.4.4. Neustarten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br/> <a href="linuxs.html#85">11.4.5. Anhang: Syntax überprüfen </a>. . . . . . . . . . . . . . . . . . . . 85<br/> <a href="linuxs.html#86">11.5. Anhang </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br/> <a href="linuxs.html#86">11.5.1. Zu den Dateien </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br/> <a href="linuxs.html#86">11.6. Benutzerhandbuch </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br/> <a href="linuxs.html#86">11.6.1. httpd.conf </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br/> <a href="linuxs.html#89">11.6.2. Access Control List File (.htaccess) </a>. . . . . . . . . . . . . . . . 89<br/> <a href="linuxs.html#90">11.6.3. Gruppendatei (.htgroup) </a>. . . . . . . . . . . . . . . . . . . . . . 90<br/> <a href="linuxs.html#90">11.6.4. Passwort-Datei (.htpasswd) </a>. . . . . . . . . . . . . . . . . . . . 90<br/> <a href="linuxs.html#90">11.6.5. Erstellen eines SSL-Zertifikats </a>. . . . . . . . . . . . . . . . . . . 90<br/> <a href="linuxs.html#90">11.6.6. LinkIcon (favicon.ico) </a>. . . . . . . . . . . . . . . . . . . . . . . 90<br/> <a href="linuxs.html#93">12. MySQL</a><br/> 93<br/> <a href="linuxs.html#93">12.1. Einleitung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br/> <a href="linuxs.html#93">12.2. Kompilieren und Installieren </a>. . . . . . . . . . . . . . . . . . . . . . . . 93<br/> <a href="linuxs.html#93">12.2.1. Anforderungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br/> 8<br/> <hr/> <a name=9></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#93">12.2.2. Vorbereitungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br/> <a href="linuxs.html#93">12.2.3. MySQL </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br/> <a href="linuxs.html#94">12.2.4. MySQL Testen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br/> <a href="linuxs.html#95">12.2.5. phpMyAdmin </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 95<br/> <a href="linuxs.html#97">13. PHP</a><br/> 97<br/> <a href="linuxs.html#97">13.1. Einleitung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br/> <a href="linuxs.html#97">13.2. Kompilieren und Installieren </a>. . . . . . . . . . . . . . . . . . . . . . . . 97<br/> <a href="linuxs.html#97">13.2.1. Anforderungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br/> <a href="linuxs.html#97">13.2.2. Vorbereitungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 97<br/> <a href="linuxs.html#98">13.2.3. Libraries für Zusatzfunktionen </a>. . . . . . . . . . . . . . . . . . 98<br/> <a href="linuxs.html#99">13.2.4. PHP </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br/> <a href="linuxs.html#100">13.3. Referenz </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br/> <a href="linuxs.html#100">13.3.1. Grundlagen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br/> <a href="linuxs.html#100">13.3.2. Funktionen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br/> <a href="linuxs.html#101">14. Squid</a><br/> 101<br/> <a href="linuxs.html#101">14.1. Proxy </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br/> <a href="linuxs.html#101">14.2. Einfacher Cache </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br/> <a href="linuxs.html#101">14.3. Proxy Cache </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br/> <a href="linuxs.html#101">14.4. Aufgaben </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br/> <a href="linuxs.html#102">14.5. Eigenschaften </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br/> <a href="linuxs.html#102">14.6. Protokolle </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br/> <a href="linuxs.html#102">14.6.1. Client-Kommunikation </a>. . . . . . . . . . . . . . . . . . . . . . . 102<br/> <a href="linuxs.html#102">14.6.2. Kommunikation zwischen Proxy-Cache-Servern </a>. . . . . . . . . 102<br/> <a href="linuxs.html#103">14.7. Systemvoraussetzungen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br/> <a href="linuxs.html#103">14.8. SuSE Linux </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br/> <a href="linuxs.html#103">14.9. Automatische Starten von Squit </a>. . . . . . . . . . . . . . . . . . . . . . 103<br/> <a href="linuxs.html#103">14.10. Squiddateien </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br/> <a href="linuxs.html#103">14.11. squid.conf </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br/> <a href="linuxs.html#107">IV. Programmieren</a><br/> 107<br/> <a href="linuxs.html#109">15. Bash</a><br/> 109<br/> <a href="linuxs.html#109">15.1. Einleitung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br/> <a href="linuxs.html#109">15.2. Referenz </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br/> <a href="linuxs.html#110">15.3. Steuer und Sonderzeichen der Bash </a>. . . . . . . . . . . . . . . . . . . . 110<br/> <a href="linuxs.html#111">16. git</a><br/> 111<br/> <a href="linuxs.html#111">16.1. Dokumentation </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br/> <a href="linuxs.html#111">16.2. Konfiguration </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br/> <a href="linuxs.html#112">16.3. Konfigurationen über Umgebungsvariablen </a>. . . . . . . . . . . . . . . . 112<br/> <a href="linuxs.html#112">16.4. Der Index </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112<br/> <a href="linuxs.html#113">16.5. Repository </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br/> 9<br/> <hr/> <a name=10></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#113">16.6. Commit </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br/> <a href="linuxs.html#113">16.7. Dateien entfernen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br/> <a href="linuxs.html#113">16.8. Dateien verschieben </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br/> <a href="linuxs.html#114">16.9. Änderung an einer Datei rückgängig machen </a>. . . . . . . . . . . . . . . 114<br/> <a href="linuxs.html#114">16.10. Dateien ignorieren </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br/> <a href="linuxs.html#114">16.11. Mit externen Repositorys arbeiten </a>. . . . . . . . . . . . . . . . . . . . 114<br/> <a href="linuxs.html#115">16.12. Tags </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br/> <a href="linuxs.html#115">16.13. Branch </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br/> <a href="linuxs.html#116">16.14. Git Aliase </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br/> <a href="linuxs.html#116">16.15. Git auf einen Server bekommen </a>. . . . . . . . . . . . . . . . . . . . . . 116<br/> <a href="linuxs.html#116">16.16. Git auf dem SSH-Server einrichten </a>. . . . . . . . . . . . . . . . . . . . 116<br/> <a href="linuxs.html#117">16.17. Öffentlicher Webserver-Zugang </a>. . . . . . . . . . . . . . . . . . . . . . 117<br/> <a href="linuxs.html#118">16.18. Grundbegriffe </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118<br/> <a href="linuxs.html#119">16.19. Verwendung von Git </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br/> <a href="linuxs.html#121">17. C/C++</a><br/> 121<br/> <a href="linuxs.html#121">17.1. Befehle und Grundelemente </a>. . . . . . . . . . . . . . . . . . . . . . . . 121<br/> <a href="linuxs.html#121">17.2. Steuersequenzen für ANSI-Bildschirme - Innerhalb von Texten </a>. . . . . 121<br/> <a href="linuxs.html#122">17.3. stdio.h -> Standard Ein- und Ausgabe </a>. . . . . . . . . . . . . . . . . . 122<br/> <a href="linuxs.html#123">17.4. ctype.h </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br/> <a href="linuxs.html#123">17.5. string.h </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br/> <a href="linuxs.html#124">17.6. Kontrollstrukturen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br/> <a href="linuxs.html#125">17.7. ASCII(American Standart Code for Information Interchange)-Tabelle </a>. 125<br/> <a href="linuxs.html#126">17.7.1. Unterteilung der Steuerzeichen: </a>. . . . . . . . . . . . . . . . . . 126<br/> <a href="linuxs.html#126">17.7.2. Bedeutung der Steuerzeichen: </a>. . . . . . . . . . . . . . . . . . . 126<br/> <a href="linuxs.html#127">17.8. Operatoren und Ausdrücke </a>. . . . . . . . . . . . . . . . . . . . . . . . 127<br/> <a href="linuxs.html#127">17.8.1. Arithmetische Operatoren: </a>. . . . . . . . . . . . . . . . . . . . 127<br/> <a href="linuxs.html#127">17.8.2. Vergleichsoperatoren: </a>. . . . . . . . . . . . . . . . . . . . . . . 127<br/> <a href="linuxs.html#127">17.8.3. Logische Operatoren: </a>. . . . . . . . . . . . . . . . . . . . . . . . 127<br/> <a href="linuxs.html#128">17.8.4. Zuweisungsoperatoren: </a>. . . . . . . . . . . . . . . . . . . . . . . 128<br/> <a href="linuxs.html#128">17.8.5. Post- und Prefix- Operatoren: </a>. . . . . . . . . . . . . . . . . . . 128<br/> <a href="linuxs.html#128">17.8.6. Zeigeroperatoren: </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 128<br/> <a href="linuxs.html#128">17.8.7. Diverse Kategorien: </a>. . . . . . . . . . . . . . . . . . . . . . . . 128<br/> <a href="linuxs.html#129">17.9. Inkrementieren und Dekrementieren </a>. . . . . . . . . . . . . . . . . . . 129<br/> <a href="linuxs.html#129">17.10. Wertebereich und Genauigkeit elementarer Datentypen </a>. . . . . . . . . 129<br/> <a href="linuxs.html#129">17.11. Variableninitialisierung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br/> <a href="linuxs.html#130">17.12. Konstanten </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br/> <a href="linuxs.html#130">17.12.1. Ganzzahlkonstanten </a>. . . . . . . . . . . . . . . . . . . . . . . . 130<br/> <a href="linuxs.html#130">17.12.2. Gleitkommakonstanten </a>. . . . . . . . . . . . . . . . . . . . . . 130<br/> <a href="linuxs.html#130">17.12.3. Zeichen- und Zeichenkettenkonstanten </a>. . . . . . . . . . . . . . 130<br/> <a href="linuxs.html#131">18. Tcl/Tk</a><br/> 131<br/> <a href="linuxs.html#133">19. Perl</a><br/> 133<br/> 10<br/> <hr/> <a name=11></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#135">20. CGI+Perl</a><br/> 135<br/> <a href="linuxs.html#135">20.1. Einleitung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br/> <a href="linuxs.html#135">20.2. Perl </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br/> <a href="linuxs.html#135">20.2.1. Texte und Strings </a>. . . . . . . . . . . . . . . . . . . . . . . . . 135<br/> <a href="linuxs.html#135">20.2.2. Rechenoperationen </a>. . . . . . . . . . . . . . . . . . . . . . . . . 135<br/> <a href="linuxs.html#136">20.2.3. Arrays (Listen) </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br/> <a href="linuxs.html#136">20.2.4. String- und Zahlenvergleichsoperratoren </a>. . . . . . . . . . . . . 136<br/> <a href="linuxs.html#136">20.2.5. if-Bedingung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 136<br/> <a href="linuxs.html#136">20.2.6. if-else-Bedingung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 136<br/> <a href="linuxs.html#137">20.2.7. if-elseif-Bedingung </a>. . . . . . . . . . . . . . . . . . . . . . . . . 137<br/> <a href="linuxs.html#137">20.3. Funktionen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137<br/> <a href="linuxs.html#137">20.3.1. String Funktionen </a>. . . . . . . . . . . . . . . . . . . . . . . . . 137<br/> <a href="linuxs.html#137">20.3.2. Rechen Funktionen </a>. . . . . . . . . . . . . . . . . . . . . . . . . 137<br/> <a href="linuxs.html#137">20.3.3. Array Funktionen </a>. . . . . . . . . . . . . . . . . . . . . . . . . 137<br/> <a href="linuxs.html#139">21. Java</a><br/> 139<br/> <a href="linuxs.html#139">21.1. Funktion von Java </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br/> <a href="linuxs.html#139">21.2. Sprache und Syntax von Java </a>. . . . . . . . . . . . . . . . . . . . . . . 139<br/> <a href="linuxs.html#139">21.2.1. Kommentrare </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br/> <a href="linuxs.html#139">21.2.2. Datentypen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br/> <a href="linuxs.html#140">21.2.3. Variablen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br/> <a href="linuxs.html#140">21.3. Pakete und Verzeichnisstrukturen </a>. . . . . . . . . . . . . . . . . . . . . 140<br/> <a href="linuxs.html#140">21.3.1. Sichtbarkeit und Zugriffsrechte von Klassen und Methoden </a>. . 140<br/> <a href="linuxs.html#140">21.3.2. Klassen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140<br/> <a href="linuxs.html#141">21.3.3. Konstruktoren und Destruktoren </a>. . . . . . . . . . . . . . . . . 141<br/> <a href="linuxs.html#141">21.3.4. Methoden überladen </a>. . . . . . . . . . . . . . . . . . . . . . . . 141<br/> <a href="linuxs.html#141">21.3.5. Objekte </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141<br/> <a href="linuxs.html#142">21.3.6. Vererbung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br/> <a href="linuxs.html#142">21.3.7. Schnittstellen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br/> <a href="linuxs.html#142">21.4. Elementare Syntax von Java </a>. . . . . . . . . . . . . . . . . . . . . . . . 142<br/> <a href="linuxs.html#142">21.4.1. Operratoren </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142<br/> <a href="linuxs.html#142">21.4.2. Verknüpfungsoperatoren </a>. . . . . . . . . . . . . . . . . . . . . . 142<br/> <a href="linuxs.html#142">21.4.3. Inkrement-Operator </a>. . . . . . . . . . . . . . . . . . . . . . . . 142<br/> <a href="linuxs.html#143">21.4.4. Dekrement-Operator </a>. . . . . . . . . . . . . . . . . . . . . . . . 143<br/> <a href="linuxs.html#143">21.4.5. Arithmetische Zuweisungsoperatoren </a>. . . . . . . . . . . . . . . 143<br/> <a href="linuxs.html#143">21.4.6. Bedingungen und Entscheidungen </a>. . . . . . . . . . . . . . . . 143<br/> <a href="linuxs.html#143">21.4.7. if - else - Bedingungen </a>. . . . . . . . . . . . . . . . . . . . . . . 143<br/> <a href="linuxs.html#143">21.4.8. Verschachtelte Bedingungen </a>. . . . . . . . . . . . . . . . . . . . 143<br/> <a href="linuxs.html#144">21.4.9. Fallunterscheidung mit switch - case </a>. . . . . . . . . . . . . . . 144<br/> <a href="linuxs.html#144">21.5. Schleifen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br/> <a href="linuxs.html#144">21.5.1. Die while - Schleife </a>. . . . . . . . . . . . . . . . . . . . . . . . . 144<br/> <a href="linuxs.html#144">21.5.2. Die do - while - Schleife </a>. . . . . . . . . . . . . . . . . . . . . . 144<br/> <a href="linuxs.html#144">21.5.3. Die for - Schleife </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 144<br/> <a href="linuxs.html#144">21.5.4. Schleifen mit break verlassen </a>. . . . . . . . . . . . . . . . . . . 144<br/> <a href="linuxs.html#144">21.5.5. Schleife mit continue wiederholen </a>. . . . . . . . . . . . . . . . . 144<br/> 11<br/> <hr/> <a name=12></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#145">21.6. Komplexe Datentypen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#145">21.6.1. Arrays </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#145">21.7. Die Anweisung import </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#145">21.8. Java eigene Klassen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#145">21.8.1. Die Klasse Math </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#145">21.9. Die Klasse Object </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#145">21.9.1. Die Klasse Object </a>. . . . . . . . . . . . . . . . . . . . . . . . . 145<br/> <a href="linuxs.html#146">21.10. Die Klasse Runtime </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br/> <a href="linuxs.html#146">21.11. Die Klasse String </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br/> <a href="linuxs.html#146">21.12. Die Klasse Stringbuffer </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br/> <a href="linuxs.html#146">21.12.1. Die Klasse Stringbuffer </a>. . . . . . . . . . . . . . . . . . . . . . 146<br/> <a href="linuxs.html#146">21.13. Die Klasse System </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br/> <a href="linuxs.html#146">21.14. Das Paket java.util </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<br/> <a href="linuxs.html#147">21.14.1. Die Klasse Date </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 147<br/> <a href="linuxs.html#147">21.14.2. Die Klasse Random </a>. . . . . . . . . . . . . . . . . . . . . . . . 147<br/> <a href="linuxs.html#147">21.14.3. Die Klasse Stack </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 147<br/> <a href="linuxs.html#147">21.15. Ausnahmen (Exceptions) </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 147<br/> <a href="linuxs.html#148">21.15.1. Eigene Ausnahme erzeugen (throw) </a>. . . . . . . . . . . . . . . 148<br/> <a href="linuxs.html#148">21.16. Multitasking mit Threads </a>. . . . . . . . . . . . . . . . . . . . . . . . . 148<br/> <a href="linuxs.html#148">21.16.1. Arbeiten mit Threads </a>. . . . . . . . . . . . . . . . . . . . . . . 148<br/> <a href="linuxs.html#149">21.17. Applets </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br/> <a href="linuxs.html#149">21.17.1. Applets in eine Webseite einbinden </a>. . . . . . . . . . . . . . . . 149<br/> <a href="linuxs.html#149">21.17.2. Das erste Java Applet </a>. . . . . . . . . . . . . . . . . . . . . . . 149<br/> <a href="linuxs.html#149">21.17.3. Die Methoden eines Applets </a>. . . . . . . . . . . . . . . . . . . . 149<br/> <a href="linuxs.html#149">21.17.4. Ein Applet im Überblick </a>. . . . . . . . . . . . . . . . . . . . . . 149<br/> <a href="linuxs.html#150">21.17.5. Pakete </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150<br/> <a href="linuxs.html#150">21.17.6. Die Klasse Graphics </a>. . . . . . . . . . . . . . . . . . . . . . . . 150<br/> <a href="linuxs.html#150">21.17.7. Die Klasse Color </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 150<br/> <a href="linuxs.html#151">21.17.8. Die Klasse Font </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br/> <a href="linuxs.html#151">21.17.9. Die Klasse Image </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 151<br/> <a href="linuxs.html#151">21.17.10. Die Klasse Button </a>. . . . . . . . . . . . . . . . . . . . . . . . . 151<br/> <a href="linuxs.html#152">21.18. Eventhandling </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br/> <a href="linuxs.html#152">21.18.1. Mouse Events </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br/> <a href="linuxs.html#152">21.18.2. Action Events </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br/> <a href="linuxs.html#152">21.18.3. Parameter an ein Applet </a>. . . . . . . . . . . . . . . . . . . . . . 152<br/> <a href="linuxs.html#153">21.18.4. Weitere wichtige Pakete </a>. . . . . . . . . . . . . . . . . . . . . . 153<br/> <a href="linuxs.html#155">22. JavaScript</a><br/> 155<br/> <a href="linuxs.html#155">22.1. Einbindung von JavaScript </a>. . . . . . . . . . . . . . . . . . . . . . . . 155<br/> <a href="linuxs.html#155">22.1.1. Einbindung in den Head </a>. . . . . . . . . . . . . . . . . . . . . . 155<br/> <a href="linuxs.html#155">22.1.2. Einbindung in den Body </a>. . . . . . . . . . . . . . . . . . . . . . 155<br/> <a href="linuxs.html#155">22.1.3. Ausführen bei bestimmten Aktionen </a>. . . . . . . . . . . . . . . 155<br/> <a href="linuxs.html#156">22.2. Variablen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br/> <a href="linuxs.html#156">22.3. Objekte </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br/> <a href="linuxs.html#156">22.3.1. Standardobjekte </a>. . . . . . . . . . . . . . . . . . . . . . . . . . 156<br/> 12<br/> <hr/> <a name=13></a>Inhaltsverzeichnis<br/> <a href="linuxs.html#157">22.3.2. String-Objekt </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br/> <a href="linuxs.html#158">22.3.3. Eigene Objekte </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br/> <a href="linuxs.html#158">22.3.4. Arrays </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br/> <a href="linuxs.html#158">22.4. Mathematische Operationen </a>. . . . . . . . . . . . . . . . . . . . . . . . 158<br/> <a href="linuxs.html#158">22.5. Bedingte Ausführung </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br/> <a href="linuxs.html#158">22.6. Schleifen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br/> <a href="linuxs.html#159">22.7. Event-Handler </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br/> <a href="linuxs.html#159">22.8. Funktionen </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br/> <a href="linuxs.html#160">22.9. Reservierte Wörter </a>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160<br/> <a href="linuxs.html#163">V. Anhang</a><br/> 163<br/> <a href="linuxs.html#165">23. Glossar</a><br/> 165<br/> <a href="linuxs.html#167">Stichwortverzeichnis</a><br/> 168<br/> 13<br/> <hr/> <a name=14></a><hr/> <a name=15></a>Teil I.<br/> Linux<br/> 15<br/> <hr/> <a name=16></a><hr/> <a name=17></a>2. Linux<br/> 2.1. Was ist Linux?<br/> Der Kernel, eine Schnittstelle für die Software zur Hardware.<br/> 2.2. Kernel und Module<br/> http://www.kernel.org/<br/> http-Adresse für den Kernel und Kernel-Patches<br/> http://www.de.kernel.org/pub/linux/kernel/<br/> Spiegel für den Kernel<br/> 2.2.1. Kernel 2.4<br/> tar xvfj kernel.tar.bz2<br/> entpackt den Kernel<br/> tar xvfz kernel.tar.gz<br/> entpackt den Kernel<br/> cd kernel<br/> Verzeichnis wechseln<br/> bzip2 -dc ../patch-2.x.xx.bz2 | patch -p1<br/> Kernel patchen<br/> gzip -dc ../patch-2.x.xx.gz | patch -p1<br/> Kernel patchen<br/> zcat /proc/config.gz > /usr/src/linux/.config<br/> die aktuelle Konfiguration des<br/> laufenden Kernels auslesen<br/> make menuconfig<br/> Kernelkonfiguration im Textmodus<br/> make dep<br/> aktualisiert die Abhängigkeiten<br/> make clean<br/> löscht die temporären Dateien und Ausgabedateien<br/> make zImage<br/> übersetzt und komprimiert den Kernel<br/> make bzImage<br/> übersetzt und komprimiert den gossen Kernel<br/> make dep clean zImage<br/> aktualisiert,löscht und übersetzt<br/> make modules<br/> übersetzt Module<br/> make modules_install<br/> installiert Module<br/> make zlilo<br/> installiert den Kernel und den Boot-Loader LILO<br/> make bzlilo<br/> installiert den gossen Kernel und<br/> den Boot-Loader LILO<br/> make zdisk<br/> erzeugt eine Bootdiskette mit dem neuen Kernel<br/> make mrproper<br/> löscht alle erzeugten Dateien,<br/> auch die Konfiguration<br/> 2.2.2. Kernel 2.6 (Debian 4.0 etch)<br/> sudo apt-get update<br/> Paket-Datenbank aktualisieren<br/> sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 \<br/> 17<br/> <hr/> <a name=18></a>2. Linux<br/> build-essential<br/> benötigte Pakete installieren<br/> cd /usr/src<br/> in das Verzeichnis zu den Quell-Paketen wechseln<br/> wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2<br/> den aktuellen Kernel downloaden<br/> wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2.sign<br/> die dazugehörige Signatur downloaden<br/> gpg --keyserver wwwkeys.de.pgp.net --recv-keys 0x517D0F0E<br/> Public-Key vom Key-Server holen<br/> gpg --verify linux-2.6.22.1.tar.bz2.sign<br/> Kernel-Signatur überprüfen<br/> tar xvfj linux-2.6.22.1.tar.bz2 Kernel entpacken<br/> ln -s linux-2.6.22.1 linux<br/> Soft-Link zu den Kernel-Quellen anlegen<br/> cd /usr/src/linux<br/> zu den aktuellen Kernel-Quellen wechseln<br/> bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run<br/> Aktualisieren prüfen<br/> bzip2 -dc /usr/src/patch.bz2 | patch -p1<br/> Kernel-Quellen aktualisieren wenn nötig<br/> make clean && make mrproper<br/> Kernel säubern und korigieren<br/> cp /boot/config-‘uname -r‘ ./.config<br/> laufende Konfiguration holen<br/> make menuconfig<br/> Konfigurations-Programm starten<br/> Load an Alternate Configuration File<br/> laufende Konfiguration laden und Kernel<br/> konfigurieren<br/> make-kpkg clean<br/> fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image \<br/> kernel_headers<br/> Kernel-Pakete und Kernel-Headers herstellen<br/> sudo dpkg -i linux-image-2.6.22.1-custom_2.6.22.1-custom-10.00.Custom_i386.deb<br/> den neuen Kernel installieren<br/> sudo dpkg -i linux-headers-2.6.22.1-custom_2.6.22.1-custom-10.00.Custom_i386.deb<br/> die neuen Header installieren<br/> sudo shutdown -r now<br/> Neustart um den Kernel zu testen<br/> uname -a<br/> feststellen welcher Kernel gestartet ist<br/> dmesg<br/> Kernelmeldungen vom letzten Start anzeigen<br/> insmod Modul<br/> Modul laden<br/> modprobe Modul<br/> Modul eigenständig laden<br/> lsmod<br/> geladene Module anzeigen lassen<br/> rmmod Modul<br/> Modul entfernen<br/> 18<br/> <hr/> <a name=19></a>3. Befehle<br/> 3.1. Standartein-aus-gabe<br/> Jedes UNIX kennt 3 spezielle Files:<br/>stdin<br/> Standardeingabe, normalerweise die Tastatur<br/> stdout<br/> Standardausgabe, normalerweise der Bildschirm<br/> stderr<br/> Standardausgabe für Fehlermeldungen,<br/> normalerweise der Bildschirm<br/> All diese Files können umgelenkt werden<br/> setterm -blank 0<br/> Bildschirmschoner ausschalten<br/> 3.2. Anmelden und Abmelden<br/> login: Benutzername<br/> 1. zum Anmelden den Benutzernamen eingeben<br/> Passwort: Benutzerpasswort<br/> 2. zum Anmelden das Benutzerpasswort eingeben<br/> logout<br/> zum Abmelden eingeben<br/> exit<br/> zum Abmelden eingeben<br/> [Strg]+[d]<br/> beendet die Shell (alle Shells)<br/> 3.3. Anhalten des Systems und Booten<br/> Unter keinen Umständen darf während des Betriebs einfach der Strom abgeschaltet<br/> oder der Resetknopf betätigt werden. Da es sonst zu einer Beschädigung des Dateisy-<br/> stems mit Datenverlust kommen kann.<br/> root: shutdown -h now<br/> hält das System an<br/> root: halt<br/> hält das System an<br/> root: init 0<br/> hält das System an<br/> root: systemctl poweroff<br/> hält das System an<br/> root: shutdown -r now<br/> startet den Computer nach dem Herunterfahren neu<br/> root: reboot<br/> startet den Computer nach dem Herunterfahren neu<br/> root: init 6<br/> startet den Computer nach dem Herunterfahren neu<br/> root: systemctl reboot<br/> startet den Computer nach dem Herunterfahren neu<br/> root: systemctl suspend<br/> Bereitschaft<br/> root: systemctl hibernate<br/> Ruhezustand<br/> 19<br/> <hr/> <a name=20></a>3. Befehle<br/> 3.4. Die Runlevel<br/> root: init 0<br/> Systemhalt<br/> root: init S<br/> Einzelbenutzerbetrieb (Single User Mode)<br/> root: init 1<br/> Einzelbenutzerbetrieb (Single User Mode)<br/> root: init 2<br/> Lokaler Mehrbenutzerbetrieb ohne entferntes Netzwerk<br/> (Local multiuser without remote network)<br/> root: init 3<br/> Voller Mehrbenutzerbetrieb mit Netzwerk<br/> (Full multiuser with network)<br/> root: init 4<br/> Frei (Not used)<br/> root: init 5<br/> Voller Mehrbenutzerbetrieb mit Netzwerk und KDM, GDM oder XDM<br/> (Full multiuser with network and xdm)<br/> root: init 6<br/> Systemneustart (System reboot)<br/> root: init q<br/> Quit zum Neueinlesen der inittab<br/> 3.4.1. Upstart (Systemstart)<br/> Upstart sorgt dafür das Dienste ereignisbasiert parallel gestartet werden können /etc/inittab<br/> entfällt neu /etc/init/ (bzw. /etc/event.d/)<br/> initctl list<br/> zeigt eine Liste aller Init-Scripte an<br/> initctl [start|stop] Init-Script<br/> startet oder beendet ein Script<br/> initctl reload-configuration<br/> Konfiguration der Scripte neu einlesen<br/> service Init-Script [start|stop]<br/> startet oder beendet ein Script<br/> Im Header der Datei kann dann zum Starten und Beenden flogendes stehen:<br/> start on runlevel [2345]<br/> stop on runlevel [!2345]<br/> 3.5. SuSE-Linux<br/> hilfe<br/> Hilfesystem starten<br/> yast<br/> Yet another Setup Tool -<br/> SuSE Administrationstool<br/> yast2<br/> Yet another Setup Tool 2 -<br/> SuSE Administrationstool<br/> SuSEconfig<br/> das Skript muss aufgerufen werden<br/> nachdem die /etc/rc.config und /etc/sysconfig/<br/> von Hand verändert wurden<br/> 3.6. Zur Orientierung auf einem UNIX-Rechner<br/> date<br/> zeigt Datum und Uhrzeit an<br/> 20<br/> <hr/> <a name=21></a>3.7. Datum und Uhrzeit<br/> df -k<br/> zeigt den feien Platten-Platz in kB an<br/> df -m<br/> zeigt den feien Platten-Platz in MB an<br/> df -h<br/> Ausgabe von Größen in Menschen-lesbarem Format<br/> du -h<br/> zeigt wie viel Platten-Platz in kB bestimmte Dateien einnehmen<br/> echo Text<br/> schreibt den Text auf stdout (Bildschirm)<br/> finger<br/> zeigt Infos über eingeloggte Benutzer an<br/> finger -l<br/> zeigt ausführliche Infos über eingeloggte Benutzer an<br/> free -t<br/> zeigt den feien Arbeitsspeicher in kB an<br/> last<br/> zeigt wer sich zuletzt von wo aus auf dem Rechner eingeloggt hat<br/> info Begriff<br/> Hilfe zu dem Begriff im Infoformat<br/> man Begriff<br/> Hilfe zu dem Begriff<br/> man -a Begriff alle Kapitel zu dem Begriff<br/> man -f Begriff listet die gefundenen Seiten zu dem Begriff auf<br/> man -k Begriff listet die Seiten in dem der Begriff vorkommt auf<br/> man n Begriff<br/> Hilfe zum Begriff mit der Sektion n<br/> Die Manual-Pages sind auf verschiedene Sektionen aufgeteilt:<br/> 1 Shell-Kommandos<br/> 2 System-Aufrufe<br/> 3 Funktionen - C-Bibliotheksfunktionen.<br/> 4 Die Beschreibung von Konfigurationsdateien.<br/> 5 Die Syntax wichtiger Dateien.<br/> 6 Beschreibung von Spielen.<br/> 7 Alles was mit Text, Textformatierung und anderen Formaten zu<br/> tun hat.<br/> 8 Die Befehle des Systemverwalters.<br/> 9 Die Beschreibung der Linux-Kernelroutinen.<br/> n n kommt angeblich von neu, hier sind sonstige Manual-Pages<br/> aufgeführt, die in eine der oberen Sektionen gehören, aber<br/> traditionell hier stehen oder zu keiner Sektion genau passen.<br/> pwd<br/> Ausgabe des aktuellen Verzeichnisses<br/> w<br/> wer ist da und was ist los<br/> whatis Befehl<br/> zeigt Kurzerklärung eines Befehls<br/> which Befehl<br/> zeigt, wo Executable liegt, und eventual alias<br/> who<br/> zeigt Liste aller eingeloggten Benutzer<br/> whoami<br/> zeigt, wem die Shell gehört<br/> 3.7. Datum und Uhrzeit<br/> date<br/> Datum und Uhrzeit abfragen<br/> date -s ’2000-01-29 20:00:00’ +’%Y-%m-%d %T’<br/> Datum und Uhrzeit einstellen<br/> netdate Rechnername<br/> Datum und Uhrzeit vom Rechner-<br/> name holen<br/> clock -u -w<br/> Datum und Uhrzeit in<br/> das BIOS schreiben<br/> 21<br/> <hr/> <a name=22></a>3. Befehle<br/> timedatectl set-local-rtc 1<br/> locale Zeit einstellen<br/> timedatectl set-local-rtc 0<br/> UTC Zeit einstellen<br/> 3.8. Auflisten<br/> ls<br/> Auflisten der Dateien im aktuellen Verzeichnis<br/> ls Verzeichnis<br/> Inhalt des Verzeichnisses ausgeben<br/> ls -la<br/> alles Auflisten im aktuellen Verzeichnis<br/> ls -laFi<br/> alles ausführlicher Auflisten<br/> ls | paste - - - -<br/> Dateien vierspaltig ausgeben<br/> ls -1<br/> untereinander ausgeben<br/> ls -F<br/> Verzeichnisse mit angehängtem / markieren<br/> ls -i<br/> inode-Nummer mit ausgeben<br/> ls -R<br/> alle Unterverzeichnisse mit ausgeben<br/> ls -r<br/> Auflisten der Dateien umkehren<br/> 3.9. Dateinamen<br/> UNIX unterscheidet Groß- und Kleinschreibung! liesmich, Liesmich, LIESMICH sind<br/> verschiedene Dateinamen! max. 256 Zeichen, alle Zeichen sind erlaubt . am Namens-<br/> anfang versteckt Datei vor ls, cp, rm, mv<br/> alias<br/> gibt alle definierten Kurznamen aus<br/> alias la=’ls -la’<br/> definiert Kurznamen für ein Kommando<br/> aus ls -la wird ein la<br/> 3.10. Dateiendungen<br/> .a<br/> Objektbibliotheken<br/> .c<br/> C-Quelltextdatei<br/> .cpp<br/> C++-Quellen<br/> .o<br/> Objektdatei<br/> .p<br/> Pascal-Quellen<br/> .s<br/> Assembler<br/> 3.11. Infos über Files<br/> file Datei<br/> Anzeige des Dateitypes<br/> wc -lwc Datei<br/> Ausgabe der Zeilen, Worte und Buchstaben der Datei<br/> ls -a | wc -l<br/> alle Dateien im aktuellen Verzeichnis zählen<br/> 22<br/> <hr/> <a name=23></a>3.12. Arbeiten(Verwüstungen) im und am Filesystem<br/> 3.12. Arbeiten(Verwüstungen) im und am Filesystem<br/> cd Pfad<br/> Verzeichnis wechseln<br/> mkdir Name<br/> Verzeichnis erzeugen<br/> mkdir -p Name<br/> Verzeichnis erzeugen, fehlende Verzeichnisse mit anlegen<br/> 3.13. Kopieren und Verschieben<br/> cp Dateien Ziel<br/> Dateien kopieren<br/> cp -i Dateien Ziel<br/> Dateien kopieren, vor dem Überschreiben<br/> einer Datei nachfragen<br/> cp -R Quelle* Ziel<br/> gesamten Inhalt eines Verzeichnises kopieren<br/> mv Quelle Ziel<br/> Datei verschieben oder umbenennen<br/> mv -f Quelle Ziel<br/> Schreibgeschützte Datei verschieben oder umbenennen<br/> mv -i Quelle Ziel<br/> Datei verschieben oder umbenennen,<br/> vor dem Überschreiben nachfragen<br/> ln Quelle Ziel<br/> Verknüpfung erzeugen (Hardlink),<br/> beide Dateien haben die gleiche inode<br/> ln -s Quelle Ziel<br/> Verknüpfung erzeugen (Softlink)<br/> ln -sf Quelle Ziel<br/> Verknüpfung erzeugen (Softlink)<br/> ohne Rückfrage überschreiben<br/> 3.14. Löschen<br/> rm Datei<br/> löschen von Daten<br/> rm -r Dateien<br/> löschen von Dateien mit Verzeichnissen<br/> rmdir Verzeichnis<br/> löscht Verzeichnis wenn es leer ist,<br/> überflüssig rm -r geht auch<br/> 3.15. Ausgeben<br/> cat Datei<br/> Inhalt der Datei auf dem Bildschirm ausgeben<br/> cat Datei1 Datei2 > Datei3<br/> Dateien1+2 zusammenfügen in die Datei3 schreiben<br/> strings Datei<br/> Druckbare Zeichen der Datei ausgeben<br/> more Datei<br/> Datei seitenweise ausgeben<br/> less Datei<br/> Datei ausgeben und mit den Curser scrollen<br/> j eine Zeile weiter<br/> k eine Zeile zurück<br/> u halbe Seite zurück<br/> /Text sucht den Text<br/> q less verlassen<br/> nl Datei<br/> Datei mit Zeilennummern ausgeben<br/> tail Datei<br/> zeigt die letzten 10 Zeilen einer Datei an<br/> 23<br/> <hr/> <a name=24></a>3. Befehle<br/> tail -n Datei<br/> zeigt die letzten n Zeilen einer Datei an<br/> tail -f Datei<br/> zeigt ständig die letzten 10 Zeilen der Datei an<br/> tail -f /var/log/messages<br/> Systemmeldungen mitverfolgen<br/> head Datei<br/> zeigt die ersten 10 Zeilen einer Datei an<br/> head -n Datei<br/> zeigt die ersten n Zeilen einer Datei an<br/> od -b Datei<br/> Datei oktal ausgeben<br/> od -c Datei<br/> Datei als ASCII ausgeben<br/> od -x Datei<br/> Datei hexadezimal ausgeben<br/> ls | paste - - - -<br/> Dateien vierspaltig ausgeben<br/> recode ibmpc:lat1 Datei<br/> Konvertierung der Datei<br/> 7 Bit DOS in das UNICODE/8 Bit Format<br/> 3.16. Der Texteditor vi/vim<br/> vi<br/> Editor vi aufrufen<br/> vi Datei<br/> Editor vi aufrufen und Datei öffnen<br/> vi -r<br/> swap-Dateien anzeigen<br/> vi -r Datei<br/> Datei nach einem Stromausfall (oder Absturz) wieder herstellen<br/> vi -R Datei<br/> Datei schreibgeschützt öffnen<br/> 3.17. Suchen nach Dateien<br/> find Pfad Bedingung<br/> nach Dateien suchen<br/> find Pfad | grep name<br/> nach Dateien suchen, hat sich bewährt<br/> find Pfad -name .profile<br/> nach dem Dateinamen .profile suchen<br/> find Pfad -user higi<br/> nach Dateien die dem Benutzer<br/> higi gehören suchen<br/> find Pfad -size +1024c<br/> nach Dateien die größer als 1024 Bytes<br/> sind suchen<br/> find Pfad -atime +7<br/> nach Dateien suchen die älter als 7 Tage sind<br/> find Pfad -print<br/> alle Dateien im Pfad ausgeben<br/> find -name *.txt<br/> alle Dateien im aktuellen Pfad<br/> mit der Endung .txt ausgeben<br/> find / -size +16000000c<br/> alle Dateien die mehr als 16MB haben ausgeben<br/> find / -fstype msdos -name *.zip<br/> sucht auf MS-DOS-Partition nach *.zip<br/> find / -fstype vfat -name *.txt<br/> sucht auf Windows-Partition nach *.txt<br/> 3.18. Suchen in Dateien<br/> grep Ausdruck Datei<br/> sucht nach dem Ausdruck in der Datei<br/> grep -c Ausdruck Datei<br/> Anzahl der Zeilen, die den Begriff<br/> enthalten ausgeben<br/> grep -i Ausdruck Datei<br/> große und kleine Buchstaben nicht unterscheiden<br/> 24<br/> <hr/> <a name=25></a>3.19. Vergleichen von Dateien<br/> grep -l Ausdruck Datei<br/> meldet die Dateien die den Ausdruck enthalten<br/> grep -n Ausdruck Datei<br/> sucht nach dem Ausdruck und<br/> gibt die Zeilennummer mit aus<br/> grep -v Ausdruck Datei<br/> Ausgabe der Zeilen die den Ausdruck<br/> nicht enthalten<br/> egrep Ausdruck Datei<br/> sucht nach dem Ausdruck in der Datei<br/> fgrep String Datei<br/> sucht nach dem String in der Datei<br/> fgrep -x String Datei<br/> sucht nach dem String in der Zeile einer Datei<br/> 3.19. Vergleichen von Dateien<br/> diff Datei1 Datei2<br/> zeigt die Unterschiede zwischen zwei Dateien<br/> comm [-123] Datei1 Datei2<br/> zwei sortierte Textdateien vergleichen<br/> cmp -l Datei1 Datei2<br/> Binär-/Dateien vergleichen<br/> 3.20. Drucken<br/> lpr Datei<br/> Datei auf dem Drucker ausgeben<br/> lpr -#n Datei<br/> Datei n mal auf dem Drucker ausgeben<br/> lpr -m Datei<br/> Datei auf dem Drucker ausgeben, nach dem Drucken<br/> bekommt man eine mail<br/> lpq<br/> Warteschlange anschauen<br/> lprm Jobnummer<br/> Druckauftrag/Job aus der Warteschlange löschen<br/> pr<br/> Dateien für das Drucken aufbereiten<br/> 3.21. File-Inhalt bearbeiten<br/> compress Datei<br/> Datei komprimieren nach Datei.Z<br/> uncompress Datei.Z<br/> Datei.Z dekomprimieren<br/> expand Datei1 > Datei2<br/> Tabs aus der Datei1 entfernen und<br/> zur Datei2 schreiben<br/> unpack Datei.z<br/> Datei.z dekomprimieren<br/> sort Datei1 > Datei2<br/> die Zeilen der Datei1 in<br/> die Datei2 sortieren<br/> tr [A-Z] [a-z] < Datei1 > Datei2<br/> Klein durch Großbuchstaben ersetzen<br/> uniq Datei<br/> Datei ausgeben bis auf doppelte Zeilen<br/> 3.22. TAR (tape archiver) verwaltet Dateiarchive<br/> Syntax:<br/> tar [-Acdrtux] [–delete] [-b n] [-BgGhijklmMoOpPPsSvwWz] [-C Verzeichnis] [-f Datei]<br/> [-F Datei] [-K Datei] [-L Länge] [-N Datum] [-T Datei] [-V Name] [-X Datei] [0-7] [lmh]<br/> 25<br/> <hr/> <a name=26></a>3. Befehle<br/> Optionen:<br/> -A<br/> Archiv an ein Archiv anhängen<br/> -c<br/> erzeugt ein neues Archiv<br/> -d<br/> vergleicht das Archiv mit dem Dateisystem<br/> --delete Datei löscht die Datei aus dem Archiv (nicht für Magnetbänder)<br/> -r<br/> hängt Dateien an das Archiv an (nicht für Magnetbänder)<br/> -t<br/> zeigt den Inhalt des Archivs<br/> -u<br/> ersetzt neue Dateien oder fügt sie ein (nicht für Magnetbänder)<br/> -x<br/> kopiert/entpackt Datei-en aus dem Archiv<br/> --atime-preserve<br/> Zugriffszeit nach der Archivierung zurück setzen<br/> -b n<br/> setzt die Blockgröße n*512Bytes (Voreinstellung n=20)<br/> -B<br/> unterdrückt den Abbruch beim Lesen unvollständiger Blöcke<br/> zum Lesen von 4.2BSD Pipes<br/> -C Verzeichnis wechselt in das Verzeichnis, um dort weitere Dateien zu<br/> archivieren<br/> -f Datei<br/> benutzt Datei oder das Gerät als Archiv<br/> -F Datei<br/> bei -M führt das Shellscript Datei aus, wenn das Medium voll ist<br/> -G<br/> erzeugt am Anfang des Bandarchives einen speziellen Eintrag für<br/> jedes archivierte Verzeichnis; spezielles GNU Format<br/> -g Datei<br/> erzeugt eine Datei mit einer Liste der archivierten<br/> Verzeichnisse als Zeitmarke der Archivierung; wenn die Datei<br/> bereits existiert, werden nur die Dateien archiviert, die nach<br/> dieser Zeitmarke erzeugt oder verändert wurden (spezielles GNU<br/> Format: 1.Zeile=Zeitmarke, 1.Feld=Nr. der Partition,<br/> 2.Feld=Inode des Verzeichnisses, 3.Feld=Name des Verzeichisses)<br/> -h<br/> archiviert die referenzierten Dateien anstelle der Links<br/> -i<br/> ignoriert Blöcke mit Nullbytes im Archiv<br/> -j<br/> erzeugt ein mit bzip2 komprimiertes Archiv<br/> -k<br/> existierende Dateien werden beim Auspacken von Archiven nicht<br/> überschrieben<br/> -K Datei<br/> beginnt eine Aktion bei Datei im Archiv<br/> -l<br/> verhindert Archivierung von Dateien aus anderen Dateisystemen<br/> -L Länge<br/> wartet auf Medienwechsel nach Länge Bytes<br/> -m<br/> das Datum der letzten Änderung wird nicht mit archiviert<br/> -M<br/> das Archiv ist auf mehrere Medien verteilt (Multi-Volume)<br/> -N Datum<br/> archiviert nur Dateien, die neuer sind als Datum<br/> -o<br/> benutzt das alte V7 tar-Format anstelle des ANSI Formates<br/> -O<br/> schreibt die Dateien in die Standardausgabe<br/> -p<br/> erhält die Zugriffsrechte der Dateien<br/> -P<br/> archiviert mit absoluten Dateinamen<br/> -R<br/> gibt zu jeder Meldung die Blocknummer des Archivblocks aus, von<br/> dem die Meldung verursacht wurde<br/> -s<br/> zeigt an, dass die Liste von Dateien im Argument die gleiche<br/> Reihenfolge hat wie die Dateien im Archiv<br/> -T Datei<br/> holt die Namen der zu archivierenden Dateien aus Datei<br/> 26<br/> <hr/> <a name=27></a>3.23. Disketten/Festplatten<br/> -v<br/> meldet jede Aktion<br/> -V Name<br/> erzeugt ein Archiv mit dem (internen) Label Name<br/> -w<br/> erwartet interaktiv Bestätigung jeder Aktion<br/> -W<br/> verifiziert die geschriebenen Daten im Archiv<br/> -X Datei<br/> liest aus der Datei Namen oder reguläre Ausdrücke von bzw. für<br/> Dateien, die nicht archiviert werden soll<br/> -z<br/> erzeugt ein mit gzip komprimiertes Archiv<br/> -Z<br/> erzeugt ein mit compress komprimiertes Archiv<br/> -{0...7}{lmh}<br/> spezifiziert das Gerät und die Dichte des Speichermediums (für<br/> Diskettenarchive ohne Bedeutung); 0 ist der erste Streamer, 1<br/> 1 der zweite und so weiter; die Dichte bestimmt den Bandtyp<br/> 3.22.1. Packen<br/> tar rPvf name.tar /etc/<br/> Verzeichnis zum tar zufügen<br/> tar rPvf name.tar /etc/inittab* Datei-en zum tar zufügen<br/> tar cPvzf name.tgz name.tar<br/> tar -> tgz<br/> tar cPvMf /dev/fd0 name.tgz<br/> tgz auf Diskette sichern<br/> tar cvzf Datei.tgz Verzeichnis Packt Verzeichnis in Datei.tgz<br/> 3.22.2. Entpacken<br/> tar xvfpM /dev/fd0<br/> tgz von Diskette holen<br/> tar xvfpz name.tgz<br/> tgz -> tar<br/> tar tvfp name.tar<br/> Inhalt des Tars anzeigen<br/> tar xvfp name.tar<br/> Tar entpacken<br/> 3.23. Disketten/Festplatten<br/> dd if=/dev/zero of=/dev/sda bs=512 count=1<br/> überschreibt den MBR der ersten<br/> SCSI-Platte mit Nullen<br/> fdisk Gerätedatei<br/> Partitionstabelleneditor<br/> fdisk -l /dev/hda<br/> zeigt die Partitionstabelle der ersten<br/> Festplatte an<br/> fdisk -C 12416 -H 15 -S 63 /dev/hdb<br/> Partitionstabelle mit vorgegebenen<br/> C-Zylinder H-Köpfe S-Sektoren pro Spur<br/> bearbeiten<br/> cfdisk Gerätedatei<br/> Curses-Partitionstabelleneditor<br/> fdformat /dev/fd0u1440<br/> Diskette Low-Level-Formatieren<br/> mformat a:<br/> Dateisystem DOS-FAT anlegen<br/> mkdosfs -I /dev/sda<br/> Superfloppy-Format mit FAT16-Dateisystem<br/> 27<br/> <hr/> <a name=28></a>3. Befehle<br/> für z.B. USB-Sticks anlegen<br/> mkdosfs -n Name /dev/sda1<br/> FAT16-Dateisystem mit Name anlegen<br/> mkfs -t minix /dev/fd0u1440 1440<br/> Dateisystem minix anlegen<br/> mke2fs /dev/fd0u1440<br/> Dateisystem ext2 anlegen<br/> mkfs -V -t ext2 /dev/sda7<br/> Dateisystem ext2 anlegen<br/> fsck -V -t ext2 /dev/sda7<br/> Dateisystem Prüfung und Reparatur<br/> tune2fs Optionen Gerät<br/> Einstellungen zum ext2 Dateisystem<br/> mount Gerät Verzeichnis<br/> Gerät im Verzeichnis anmelden<br/> mount -t minix /dev/fd0 /mnt<br/> Diskette im minix-Format anmelden<br/> mount -t ext2 /dev/fd0 /mnt<br/> Diskette im ext2-Format anmelden<br/> mount -t msdos /dev/fd0 /mnt<br/> Diskette im msdos-Format anmelden<br/> mount -o loop disk.img /mnt<br/> Datei als Diskette anmelden<br/> umount Verzeichnis<br/> Verzeichnis abmelden<br/> umount /mnt<br/> Diskette abmelden<br/> 3.23.1. Dateisystem verschlüsseln<br/> modprobe loop_fish2<br/> Modul für die Verschlüssellung laden<br/> dd if=/dev/urandom of=datei bs=1024 count=10000<br/> 10MB Datei anlegen<br/> losetup -e twofish /dev/loop0 datei<br/> Datei anmelden (Passwort anlegen)<br/> mkfs -t ext2 /dev/loop0<br/> Dateisystem anlegen<br/> mount -t ext2 /dev/loop0 /mnt<br/> Dateisystem anmelden<br/> umount /mnt/<br/> Dateisystem abmelden<br/> losetup -d /dev/loop0<br/> Datei abmelden<br/> /dev/loop0 /datei /mnt ext2 twofish defaults<br/> /etc/cryptotab<br/> /datei /mnt ext2 loop,encryption=twofish,noauto,user<br/> /etc/fstab<br/> 3.24. Zugriffsrechte/Eigentümer/Gruppe<br/> ls -l /dev/fd0<br/> brw-rw-rw-<br/> 1 root<br/> disk<br/> 2,<br/> 0 Feb 16 16:30 /dev/fd0<br/> |<br/> |<br/> |<br/> +----- Gerät<br/> |<br/> |<br/> +------ Minor-Device-Nummer(Nebennummer)<br/> |<br/> +----------- Major-Device-Nummer(Hauptnummer)<br/> +-------------------- b-blockorientierte Geräte c-zeichenorientierte Geräte<br/> ls -laFi linux.txt<br/> 1561 -rw-r----- 1 higi users 26419 Mar 13 19:19 linux.txt<br/> |<br/> |||||||||| | |<br/> |<br/> |<br/> |<br/> | |<br/> +----- Datei/Verzeichnisname<br/> 28<br/> <hr/> <a name=29></a>3.24. Zugriffsrechte/Eigentümer/Gruppe<br/> |<br/> |||||||||| | |<br/> |<br/> |<br/> |<br/> | +----------- Uhrzeit<br/> |<br/> |||||||||| | |<br/> |<br/> |<br/> |<br/> +-------------- Tag<br/> |<br/> |||||||||| | |<br/> |<br/> |<br/> +------------------ Monat<br/> |<br/> |||||||||| | |<br/> |<br/> +------------------------ Größe<br/> |<br/> |||||||||| | |<br/> +----------- Gruppe<br/> |<br/> |||||||||| | +----------------- Eigentümer<br/> |<br/> |||||||||| +------------------- Links<br/> |<br/> |||||||||+---- alle Anderen<br/> x-ausführen oder t-text mit x-bit<br/> |<br/> |||||||||<br/> T-text ohne x-bit<br/> |<br/> ||||||||+----- alle Anderen<br/> w-schreiben<br/> |<br/> |||||||+------ alle Anderen<br/> r-lesen<br/> |<br/> ||||||+------- Gruppe<br/> x-ausführen oder s-Gruppenkennung mit x-bit<br/> |<br/> ||||||<br/> S-Gruppenkennung ohne x-bit<br/> |<br/> |||||+-------- Gruppe<br/> w-schreiben<br/> |<br/> ||||+--------- Gruppe<br/> r-lesen<br/> |<br/> |||+---------- Eigentümer<br/> x-ausführen oder s-Benutzerkennung mit x-bit<br/> |<br/> |||<br/> S-Benutzerkennung ohne x-bit<br/> |<br/> ||+----------- Eigentümer<br/> w-schreiben<br/> |<br/> |+------------ Eigentümer<br/> r-lesen<br/> |<br/> +------------- d-Verzeichnis l-Verknüpfung<br/> +------- inode<br/> chmod werwiewas Datei<br/> Zugriffsrechte einer Datei/Verzeichnis ändern<br/> wer: u-Eigentümer<br/> g-Gruppe<br/> o-alle Anderen a-alle 3 Benutzergruppen<br/> wie: +-hinzufügen --wegnehmen<br/> =-nachfolgendes Muster setzen<br/> was: r-lesen w-schreiben x-ausführen<br/> ( s-Benutzerkennung oder Gruppenkennung<br/> t-text )<br/> chmod zahl Datei<br/> Zugriffsrechte einer Datei/Verzeichnis ändern<br/> zahl-> rwx rwx rwx -> 4+2 4 0 -> 640<br/> 421 421 421<br/> 640 -> Eigentümer lesen schreiben<br/> Gruppe<br/> lesen<br/> chmod nzahl Datei<br/> Zugriffsrechte und Kennung einer Datei/<br/> Verzeichnis ändern<br/> bit 4 von n, mit Benutzerkennung/<br/> Benutzerrechten ausführen<br/> bit 2 von n, mit Gruppenkennung/<br/> Gruppenrechten ausführen<br/> bit 1 von n, mit text werden die Dateien vor<br/> dem Löschen durch fremde Benutzer geschützt,<br/> macht nur bei Verzeichnissen sinn<br/> chown NeuerEigentümer Datei<br/> Eigentümer der Datei ändern<br/> 29<br/> <hr/> <a name=30></a>3. Befehle<br/> chgrp NeueGruppe Datei<br/> Gruppenzugehörigkeit der Datei ändern<br/> passwd Benutzer<br/> Benutzerpasswort ändern<br/> useradd Optionen Benutzer<br/> Benutzer anlegen<br/> -u Benutzer-ID (-u 500)<br/> -g Primäre Gruppenzugehörigkeit (-g users)<br/> -G weitere Gruppenzugehörigkeit<br/> -d Homeverzeichnis (-d /home/user500)<br/> -s Shell (-s /bin/bash)<br/> -m legt das Homeverzeichnis an und kopiert die<br/> Dateien aus /etc/skel in das Homeverzeichnis<br/> -c Kommentar<br/> -p Passwort im Klartext!<br/> -e Auslaufdatum (-e 2002.12.24)<br/> -f Pufferzeit<br/> usermod Optionen Benutzer<br/> Benutzerdaten verändern<br/> userdel Benutzername<br/> Benutzer löschen<br/> userdel -r Benutzername<br/> Benutzer und Benutzerverzeichnis löschen<br/> vipw<br/> Benutzerdatenbank ändern<br/> su<br/> Shell mit root-Zugriffsrechten starten<br/> su -<br/> Shell im root-Homeverzeichnis<br/> mit root-Zugriffsrechten starten<br/> sux -<br/> Shell im root-Homeverzeichnis<br/> mit root-Zugriffsrechten starten und X-Variabeln<br/> su -l Benutzername<br/> Shell im Benutzer-Homeverzeichnis<br/> mit Benutzer-Rechten starten<br/> 3.25. Prozessbefehle<br/> S=schlafend R=running(laufend) T=terminiert Z=Zombie<br/>[Strg]+[z]<br/> im Vordergrund laufendes Programm anhalten<br/> [1]+ Stopped<br/> |<br/> +----- schlafend<br/> +------------- Jobnummer<br/> bg %JOB<br/> Job im Hintergrund fortsetzen<br/> fg %JOB<br/> Job im Vordergrund fortsetzen<br/> Programm &<br/> Programm im eigenem Prozess starten<br/> [1] 819<br/> |<br/> +--------- Prozessnummer<br/> +------------- Jobnummer<br/> ps<br/> Überblick über die aktuell laufenden Prozesse<br/> ps aux<br/> gibt in den meisten Fällen eine ausreichende Auskunft<br/> pstree<br/> zeigt den kompletten Prozessbaum an<br/> 30<br/> <hr/> <a name=31></a>3.26. Re-install Grub with Live CD<br/> jobs<br/> das Schellkommando gibt eine Liste der aktuellen Jobs aus<br/> top<br/> Programm, das die aktuellen Prozesse anzeigt<br/> htop<br/> Programm, das die aktuellen Prozesse anzeigt<br/> kill PID<br/> Prozess killen<br/> kill %JOB<br/> Job killen<br/> kill -1 PID<br/> Prozess initialisieren<br/> kill -1 %JOB<br/> Job initialisieren<br/> kill -9 PID<br/> Prozess killen<br/> kill -9 %JOB<br/> Job killen<br/> kill -15 PID<br/> Prozess beenden<br/> kill -15 %JOB<br/> Job beenden<br/> kill -HUP PID<br/> veranlasst die meisten Dämonen ihre Konfigurationsdateien<br/> erneut zu lesen<br/> 3.26. Re-install Grub with Live CD<br/> 3.26.1. Chroot<br/> sudo fdisk -l<br/> Patition für das chroot festellen<br/> sudo mount /dev/sdb3 /mnt/gentoo<br/> chroot z.B. /dev/sdb3 auf z.B. /mnt/gentoo mounten<br/> sudo mount -t proc none /mnt/gentoo/proc<br/> Mounten der /proc und /dev Dateisysteme<br/> sudo mount --rbind /dev /mnt/gentoo/dev<br/> sudo chroot /mnt/gentoo /bin/bash<br/> Betreten der neuen Umgebung<br/> env-update<br/> Umgebungsvariablen aktualisieren<br/> source /etc/profile<br/> Profil laden<br/> export PS1="(chroot) $PS1"<br/> Promt anpassen<br/> 3.26.2. Grub<br/> sudo grub<br/> grub> find /boot/grub/stage1<br/> grub> root (hd0,1)<br/> grub> setup (hd0)<br/> grub> quit<br/> reboot<br/> 3.27. Software installieren<br/> 3.27.1. rpm-Format<br/> http://www.rpm.org/<br/> weiterführende Informationen<br/> http://www.rpmfind.net/<br/> Hilfe zu fehlenden rpms oder Merkmalen<br/> /var/lib/rpm/Packages<br/> rpm-Datenbank<br/> 31<br/> <hr/> <a name=32></a>3. Befehle<br/> /var/lib/rpm/packages.rpm<br/> -> /var/lib/rpm/Packages<br/> Geänderte Konfigurationsdateien überschreibt rpm beim Update nicht, sondern hebt<br/> sie als Datei.rpmsave auf. diff hilft die Unterschiede anzuzeigen.<br/> rpm -i Paketname.rpm<br/> Installiert mit Prüfung auf Abhängigkeiten<br/> rpm -i --nodeps Paketname.rpm<br/> Installiert ohne Prüfung auf Abhängigkeiten<br/> rpm -i --test Paketname.rpm<br/> Testet die Installation ohne Daten zu verändern<br/> rpm -iv Paketname.rpm<br/> Installiert mit Prüfung auf Abhängigkeiten<br/> und Rückmeldung<br/> rpm -ivh Paketname.rpm<br/> Installiert, prüft, meldet und<br/> zeigt den Vorgang an<br/> rpm -Uvh Paketname.rpm<br/> Update eines rpm-Binärpaketes<br/> rpm -Fvh Paketname.rpm<br/> Aktualisiert rpm-Binärpaket<br/> rpm -Fvh *.rpm<br/> Aktualisiert alle rpm-Binärpakete im .<br/> rpm -e Paket<br/> Deinstalliert mit Prüfung auf Abhängigkeiten<br/> rpm -qa<br/> zeigt die installierten rpm-Pakete an<br/> rpm -qa | grep -i Paket<br/> zeigt ob das Paket installiert ist<br/> rpm -qi Paket<br/> zeigt Informationen über das installierte Paket<br/> rpm -qip Paketname.rpm<br/> zeigt Informationen über das rpm-Binärpaket<br/> rpm -ql Paket<br/> zeigt die enthaltenen Dateien des installierten<br/> Paketes an<br/> rpm -qlp Paketname.rpm<br/> zeigt die enthaltenen Dateien des<br/> rpm-Binärpaketes<br/> rpm -qf /Pfad/Datei<br/> zeigt das Paket aus dem die Datei stammt<br/> rpm -q --requires Paket<br/> zeigt die geforderten Merkmale des installierten<br/> Paketes an<br/> rpm -qp --requires Paketname.rpm<br/> zeigt die geforderten Merkmale des<br/> rpm-Binärpaketes<br/> 3.27.2. deb-Format<br/> dpkg -i Paketname.deb<br/> Installation eines deb-Binärpaketes<br/> dpkg -P Paket<br/> Deinstalliert mit Prüfung auf Abhängigkeiten<br/> dpkg -l<br/> zeigt die installierten deb-Pakete an<br/> dpkg -l "*Paket*"<br/> zeigt ob das Paket installiert ist<br/> dpkg -p Paket<br/> zeigt Informationen über das installierte Paket<br/> dpkg -I Paketname.deb<br/> zeigt Informationen über das deb-Binärpaket<br/> dpkg -L Paket<br/> zeigt die enthaltenen Dateien des installierten<br/> Paketes an<br/> dpkg -c Paketname.deb<br/> zeigt die enthaltenen Dateien des<br/> 32<br/> <hr/> <a name=33></a>3.27. Software installieren<br/> deb-Binärpaketes<br/> dpkg -S /Pfad/Datei<br/> zeigt das Paket aus dem die Datei stammt<br/> apt<br/> neue Alternative für apt-get<br/> apt-get autoclean<br/> Veraltete Pakete aus dem Cache löschen<br/> apt-get clean<br/> alle Pakete aus dem Cache löschen<br/> apt-get install Paket<br/> Installiert mit Prüfung auf Abhängigkeiten<br/> apt-get remove Paket<br/> Deinstalliert mit Prüfung auf Abhängigkeiten<br/> apt-get --purge remove Paket<br/> Deinstalliert vollständig<br/> apt-get autoremove<br/> Deinstalliert nicht benötigte Pakete<br/> apt-get dist-upgrade<br/> aktualisiert die gesamte Distribution<br/> apt-cache search Name<br/> durchsucht die gesamte Distribution<br/> apt-get update<br/> APT-Datenbank auf den aktuellen Stand bringen<br/> dpkg --get-selections > Paketliste<br/> Paketliste exportieren<br/> ###sudo dpkg --set-selections < Paketliste<br/> Paketliste importieren geht nicht<br/> 3.27.3. Portage Gentoo<br/> emerge --sync<br/> Aktualisieren des Portage-Tree mit rsync<br/> emerge --webrsync<br/> Aktualisieren mit dem Portage-Snapshots<br/> emerge --search Pragrammname<br/> Nach Software suchen<br/> emerge --searchdesc Name<br/> Suche nach Paketen im Zusammenhang mit dem Namen<br/> emerge Programmname<br/> Software installieren<br/> emerge -pv Programmname<br/> Installation von Programmen simulieren, USE-Flags anzeigen<br/> emerge --fetchonly Programmname Quellen herunterzuladen, noch nicht kompilieren<br/> emerge --unmerge Programmname<br/> Entfernung von Programm aus dem System<br/> emerge --update --ask world<br/> Aktualisierung des Systems<br/> emerge -f -u -a world<br/> Aktualisierung herunterzuladen, aber nicht<br/> kompilieren und installieren<br/> emerge --update --deep world<br/> Aktualisierung des gesamten Systems<br/> emerge --update --newuse world Neuerstellung des gesamten System<br/> emerge --depclean verweiste Abhängigkeiten entfernen<br/> revdep-rebuild<br/> reverse Abhängigkeiten neu erstellen<br/> etc-update<br/> Konfigurationsdateien zusammenzuführen<br/> equery belongs /Pfad/Datei<br/> zeigt das Paket aus dem die Datei stammt<br/> equery depends Programmname<br/> Abhängigkeiten anzeigen<br/> equery depgraph Programmname<br/> Abhängigkeiten als Baum anzeigen<br/> equery files Programmname<br/> Dateien auflisten, die zu einem Ebuild gehören<br/> 33<br/> <hr/> <a name=34></a>3. Befehle<br/> equery hasuse USE-Flag<br/> Pakete suchen, die ein spezifisches USE-Flag<br/> benutzen<br/> equery size Programmname<br/> Paketgröße anzeigen<br/> equery uses Programmname<br/> Gesetzte und nicht gesetzte USE-Flags<br/> equery which Programmname<br/> Anzeigen des Ebuildpfads<br/> euse -a<br/> Alle aktiven USE-Flags anschauen<br/> euse -a -l<br/> Aktive lokale USE-Flags anschauen<br/> euse -E USE-Flag<br/> Setzen von USE-Flags<br/> euse -D USE-Flag<br/> Deaktivieren von USE-Flags<br/> 3.27.4. Quelltexte<br/> tar xvfz Source.tgz<br/> Quelltext entpacken<br/> ./configure<br/> Makefile konfigurieren<br/> make<br/> Programm übersetzen,<br/> wenn Makefile vorhanden<br/> make install<br/> Programm installieren<br/> make uninstall<br/> Programm deinstallieren<br/> 3.27.5. Hilfe<br/> ldd Programm<br/> zeigt die zu ladenen Bibliotheken des Programms<br/> strace -eopen Programm<br/> zeigt die geladenen Bibliotheken des Programms<br/> 3.28. Im Netz<br/> #ifconfig -a<br/> -> ip link<br/> ip link<br/> alle aktiven Netzwerkschnittstellen ausgeben<br/> ifconfig | grep eth0 | cut -c 39-55<br/> Ethernet-Adresse von eth0 ausgeben<br/> ftp Rechner<br/> Programm zur Übertragung von Files<br/> via Internet starten<br/> host www.suse.de<br/> befragt den DNS-Server nach<br/> der IP-Nummer des Rechners<br/> host 192.168.9.10<br/> fragt nach dem Namen des Rechners<br/> nslookup www.debian.de<br/> befragt den DNS-Server nach<br/> der IP-Nummer des Rechners<br/> nslookup 192.168.11.12<br/> fragt nach dem Namen des Rechners<br/> ping Rechner<br/> sendet Pakete an Rechner mit Echo<br/> rlogin Rechner<br/> auf anderen Rechner anmelden<br/> 34<br/> <hr/> <a name=35></a>3.29. SSH<br/> scp Rechner:Pfad Rechner:Pfad<br/> Programm zur Übertragung von Files<br/> ssh Rechner<br/> auf anderen Rechner anmelden<br/> ssh Rechner -l root<br/> oder<br/> auf anderen Rechner als root anmelden<br/> ssh root@Rechner<br/> telnet Rechner<br/> Kommunikation ueber das TELNET-Protokoll<br/> nmap -sT -PT Rechner<br/> Scannt die Ports von Rechner<br/> nmap -sT -p 1-65535 -PT Rechner Scannt alle Ports von Rechner<br/> netcat ip port<br/> zeigt den angegebenen Port an<br/> 3.29. SSH<br/> SSH(Secure shell) ist ein verschlüsseltes Netzwerkprotokoll auf TCP-Port 22, ermög-<br/> licht eine sichere authentifizierte und verschlüsselte Verbindung zwischen zwei Rech-<br/> nern über ein unsicheres Netzwerk.<br/> scp Rechner:Pfad Rechner:Pfad<br/> Programm zur Übertragung von Files<br/> ssh Rechner<br/> auf anderen Rechner anmelden<br/> ssh Rechner -l root<br/> oder<br/> auf anderen Rechner als root anmelden<br/> ssh root@Rechner<br/> 3.29.1. Generierung eines DSA Schlüsselpaares<br/> ssh-keygen -t dsa -b 2048<br/> generiert DSA-Schlüsselpaar mit<br/> einer Bit-Tiefe von 2048<br/> ~/.ssh/id_dsa<br/> - private-key mit <ENTER> bestätigen<br/> passphrase<br/> - Passwort für den private-key und der Anmeldung,<br/> für passwortlose SSH-Verbindungen weg lassen oder<br/> zu Beginn einer Sitzung mit ssh-add ~/.ssh/id_dsa<br/> abfragen lassen<br/> 3.29.2. Public-Key auf dem Zielrechner hinzufügen<br/> cat ~/.ssh/id_dsa.pub | ssh zieluser@zielrechner \<br/> "mkdir -p .ssh; cat >> .ssh/authorized_keys"<br/> - public-key auf dem Zielrechner hinzufügen<br/> ssh zieluser@zielrechner "chmod 600 ~/.ssh/authorized_keys"<br/> - public-key auf dem Zielrechner schützen<br/> 3.29.3. Private-Key auf dem Qellrechner<br/> ~/.ssh/id_dsa<br/> - der Private-Key gehört auf dem Qellrechner in das<br/> ~/.ssh/ Verzeichnis<br/> 35<br/> <hr/> <a name=36></a>3. Befehle<br/> 3.29.4. Login nur mit SSH-Keys erlauben<br/> /etc/ssh/sshd_config<br/> - folgendes in die Datei sshd_config<br/> PubkeyAuthentication yes<br/> eingetragen<br/> UsePAM no<br/> PasswordAuthentication no<br/> rcsshd restart<br/> - SSH-Dämon neu starten<br/> 3.30. GnuPG<br/> Mit GnuPG kann man Daten signieren und verschlüsseln. GnuPG unterstüzt symme-<br/> trische und asymmetrische Verschlüsselung.<br/> http://www.gnupg.org/<br/> http-Adresse für GnuPG<br/> http://www.gnupg.org/related_software/gpa/<br/> Grafische Benutzereingabe<br/> http://www.heise.de/security/dienste/pgp/<br/> Krypto-Kampagne, bei der<br/> ein Abgleich zwischen<br/> Person, Personalausweis<br/> und Schlüssel erfolgt<br/> http://kmail.kde.org/<br/> Mailprogramme mit GnuPG<br/> http://www.mutt.org/<br/> Unterstützung<br/> http://www.ximian.com/products/evolution/<br/> 3.30.1. Erzeugen<br/> gpg --gen-key<br/> Schlüssel-Paar erzeugen<br/> gpg --gen-revoke 0xKeyID<br/> Widerruf Zertifikat erzeugen<br/> > gpg-rev-Will_no_longer_use_it<br/> > gpg-rev-Lost_private_key<br/> > gpg-rev-Forgot_password<br/> > gpg-rev-Key_compromised<br/> 3.30.2. Hochladen<br/> gpg --keyserver wwwkeys.de.pgp.net --send-keys 0xKeyID<br/> Public Key auf den Keyserver hochladen<br/> gpg -a --export 0xKeyID | mail -s "add" pgp-public-keys@keys.de.pgp.net<br/> Public Key an den Keyserver verschicken<br/> Keyserver:<br/> Land<br/> eMail-Adresse<br/> HTTP-Adresse<br/> ----<br/> -------------<br/> ------------<br/> Deutschland<br/> pgp-public-keys@keys.de.pgp.net http://wwwkeys.de.pgp.net/<br/> 36<br/> <hr/> <a name=37></a>3.30. GnuPG<br/> Östereich<br/> pgp-public-keys@keys.at.pgp.net http://wwwkeys.at.pgp.net/<br/> Schweiz<br/> gp-public-keys@keys.ch.pgp.net http://wwwkeys.ch.pgp.net/<br/> 3.30.3. Löschen<br/> gpg --recv-keys 0xKeyID<br/> Key vernichten<br/> gpg --import<br/> WiderrufZertifikat<br/> gpg --send-keys 0xKeyID<br/> gpg --delete-key 0xKeyID<br/> löscht einen öffentlichen Schlüssel<br/> cat gpg-rev-xxx | mail -s "add" pgp-public-keys@keys.de.pgp.net<br/> Widerruf Zertifikat an den Keyserver<br/> verschicken<br/> 3.30.4. Holen<br/> gpg --keyserver wwwkeys.de.pgp.net --recv-keys 0xKeyID<br/> Public-Key vom Keyserver holen<br/> mail -s "get thomasb@trash.net" pgp-public-keys@keys.de.pgp.net<br/> Public-Key per E-Mail<br/> vom Keyserver holen<br/> gpg --import Key.txt<br/> Public-Key inportieren<br/> 3.30.5. Signatur erzeugen und prüfen<br/> gpg -a --sign Datei<br/> einen Text signieren, erzeugt Datei.asc<br/> gpg --verify Datei.asc Datei<br/> eine Signatur prüfen<br/> gpg --clearsign Datei<br/> einen Text signieren,<br/> erzeugt neue Datei.asc<br/> gpg --verify Datei.asc<br/> eine Signatur prüfen<br/> 3.30.6. Verschlüsseln<br/> gpg -a -r Empfänger0xKeyID -e Datei<br/> einen Text verschlüsseln,<br/> erzeugt Datei.asc<br/> 3.30.7. Entschlüsseln<br/> gpg Datei.asc<br/> einen verschüsselten und signierten Text<br/> entschlüsseln und die Signatur prüfen,<br/> erzeugt Datei<br/> 37<br/> <hr/> <a name=38></a>3. Befehle<br/> 3.30.8. Schlüsselverwaltung<br/> gpg --edit 0xKeyID<br/> Schlüsselverwaltung<br/> help - Anzeige aller Befehle<br/> quit - Das Menu beenden<br/> 3.30.9. Anzeigen<br/> gpg --list-keys<br/> zeigt alle öffentlichen Schlüssel<br/> gpg --list-sigs<br/> zeigt alle Unterschriften<br/> gpg --fingerprint<br/> zeigt alle Fingerabdrücke<br/> 3.30.10. Exportieren<br/> gpg -a --export 0xKeyID > Datei exportiert den Schlüssel 0xKeyID<br/> in Datei<br/> gpg -a --export > Datei<br/> exportiert alle Schlüssel in Datei<br/> 3.31. X11 - Grafik<br/> /etc/XF86Config<br/> bis XFree86.3.3.x Konfigurationsdatei<br/> /etc/X11/XF86Config<br/> ab XFree86.4.x Konfigurationsdatei<br/> [Alt]+[F1] bis [F6]<br/> Umschalten zwischen Textkonsolen alle Shells<br/> [AltGr]+[Fn]<br/> Umschalten zwischen den Textkonsolen n+12<br/> [Alt]+[Pfeil links oder rechts] um durch die benutzten Konsolen zu stöbern<br/> [Strg]+[Alt]+[F1] bis<br/> Umschalten zu Textkonsolen<br/> alle Shells<br/> [Strg]+[Alt]+[F6]<br/> aus X11 heraus<br/> [Strg]+[Alt]+[F7]<br/> Umschalten zu X11 aus Textkonsole alle Shells<br/> bei Caldera 2.2 [Alt]+[F8]<br/> [Strg]+[Alt]+[<--]<br/> X-Server sofort beenden<br/> [Strg]+[Alt]+[+]<br/> verschiedene Auflösungen im laufenden<br/> [Strg]+[Alt]+[-]<br/> Betrieb wechseln<br/> xf86config<br/> Shell-Konfigurationsprogramm für X 3+4<br/> XF86Setup<br/> X-Konfigurationsprogramm bis XFree86.3.3.x<br/> sax<br/> X-SuSE-Konfigurationsprogramm bis XFree86.3.3.x<br/> sax2<br/> X-SuSE-Konfigurationsprogramm ab XFree86.4.x<br/> startx<br/> X-Server starten<br/> startx -- -bpp 16<br/> X-Server mit 16 Bit starten<br/> startx - -- :0 vt07<br/> X-Server auf F7 starten<br/> startx - -- :1 vt08<br/> 2. X-Server auf F8 starten<br/> export WINDOWMANAGER=WM<br/> X-Umgebungsvariable auf WM(kde, gnome,<br/> 38<br/> <hr/> <a name=39></a>3.31. X11 - Grafik<br/> fvwm, olwm ...) ändern<br/> 3.31.1. Bildschirmschoner/Maus<br/> xset s<br/> auf Standardeinstellungen zurücksetzen<br/> xset s 60<br/> nach 1 Minute aktivieren<br/> xset s blank<br/> schwarzen Bildschirm verwenden<br/> xset s noblank<br/> X-Logo statt schwarzen Bildschirm anzeigen<br/> xset s 60 3<br/> X-Logo alle 3 Sekunden neu platzieren<br/> xset s off<br/> Bildschirmschoner deaktivieren<br/> xset s on<br/> Bildschirmschoner einschalten<br/> xset s activate<br/> Bildschirmschoner sofort aktivieren<br/> xset q<br/> aktuelle Einstellungen anzeigen<br/> xset -dpms<br/> Energy Star features ausschalten<br/> xset +dpms<br/> Energy Star features einschalten<br/> xsetroot -solid blue<br/> Hintergrund<br/> xset m default<br/> standart Mausbeschleunigung<br/> xset m 3 10<br/> normal schnelle Maus<br/> xset m 7 10<br/> schnelle Maus<br/> 3.31.2. X11 ohne Maus<br/> [Umschalt]+[Strg]+[Num]<br/> Maussteuerung am Ziffernblock ein/ausschalten<br/> [4],[6],[8],[8]<br/> links, rechts, oben, unten<br/> [*],[-]<br/> auf linke, rechte Maustaste umschalten<br/> [5],[+],[0],[5]<br/> Maustaste, Doppelklick, gerückt halen, lösen<br/> 39<br/> <hr/> <a name=40></a><hr/> <a name=41></a>4. Verzeichnisse und Dateien<br/> 4.1. Dateibaum<br/> /<br/> oberste Verzeichnis<br/> im Dateisystem (Root/Wurzel)<br/> .<br/> Verweis auf sich selbst<br/> ..<br/> Verweis auf das übergeordnete Verzeichnis<br/> /bin/<br/> ausführbare Dateien der wichtigsten Befehle<br/> #/bin/init<br/> -> /sbin/init<br/> /boot/<br/> enthält die Dateien des LILO Bootloaders und<br/> kann Kernel-Images enthalten<br/> /boot/boot.b<br/> der LILO-Maschinencode<br/> /boot/map<br/> Informationen für LILO<br/> um den Betriebssystemkern zu starten<br/> /boot/message<br/> wird vor der LILO-Bootauswahl ausgegeben<br/> /boot/vmlinuz<br/> der Betriebssystemkern kann auch im / liegen<br/> /cdrom/<br/> dient zur CDROM-Einbindung<br/> /dev/<br/> Sammlung der Gerätedateien<br/> /dev/audio<br/> ähnlich wie /dev/dsp, Daten werden y-Law codiert<br/> /dev/cdrom<br/> Link auf den CD-Rom Treiber oft /dev/hdc<br/> /dev/console<br/> reale Console<br/> /dev/dsp<br/> Link auf den A/D-W. der Soundk. (-> /dev/dsp0)<br/> /dev/dsp0<br/> Analog/Digital-Wandler der Soundkarte<br/> /dev/fd0<br/> erstes Diskettenlaufwerk<br/> /dev/fd1<br/> zweites Diskettenlaufwerk<br/> /dev/full<br/> beim Schreiben wird der Fehler ENOSPC erzeugt<br/> /dev/hda<br/> erstes (E)IDE Gerät<br/> /dev/hda1 -> /dev/hda4<br/> primäre Partitionen<br/> /dev/hda5 -> /dev/hda?<br/> logische Partitionen<br/> /dev/hdb<br/> zweites (E)IDE Gerät<br/> /dev/hdc<br/> drittes (E)IDE Gerät<br/> /dev/hdd<br/> viertes (E)IDE Gerät<br/> /dev/initrd<br/> zusätzliche RAM-Disk mit Kernelmodulen und<br/> Bootsystem zur Initialisierung des Kernels<br/> /dev/kmem<br/> virtueller Arbeitsspeicher<br/> /dev/loop*<br/> ermöglicht eine Datei wie eine Diskette oder<br/> Festplattenpartition zu mounten<br/> /dev/lp0<br/> erste parallele Schnittstelle<br/> 41<br/> <hr/> <a name=42></a>4. Verzeichnisse und Dateien<br/> /dev/lp1<br/> zweite parallele Schnittstelle<br/> /dev/lp2<br/> dritte parallele Schnittstelle<br/> /dev/md*<br/> zusammengelegte Festplatten linear,Raid0 oder 1<br/> /dev/mem<br/> physikalischer Arbeitsspeicher<br/> /dev/midi00<br/> direkte Kommunikation mit einem MIDI-Gerät<br/> /dev/mixer<br/> Link auf den Mixer (-> /dev/mixer0)<br/> /dev/mixer0<br/> Mischpult der 1. Soundkarte<br/> /dev/modem<br/> Link auf den Modemtreiber (-> /dev/ttyS0)<br/> /dev/mouse<br/> Link auf den Maustreiber (-> /dev/psaux)<br/> /dev/music<br/> eine andere Art von Sequencer, speziell für die<br/> MIDI-Schnittstelle<br/> /dev/nst*<br/> SCSI-Streamer (No Rewind On Close)<br/> /dev/null<br/> Mülleimer des Systems<br/> /dev/port<br/> zum ansprechen einzelner IO Ports<br/> /dev/psaux<br/> PS/2-Maus<br/> /dev/pts/<br/> Unix98 PTY slaves<br/> /dev/ram<br/> Link auf die RAM-Disk (-> /dev/ram0)<br/> /dev/random<br/> zur Erzeugung kryptografisch hochwertiger<br/> Zufallszahlen<br/> /dev/rmt*<br/> QIC-02-Streamer<br/> /dev/rtc<br/> batteriegepufferte CMOS-Uhr<br/> /dev/sd*<br/> SCSI-Festplatten<br/> /dev/sequencer<br/> Synthesizer der Soundkarte oder ein am MIDI-Port<br/> angeschlossenes Gerät<br/> /dev/sndstat<br/> Informationen über den Status des Soundtreibers<br/> /dev/st*<br/> SCSI-Streamer<br/> /dev/tty<br/> aktive virtuelle Console<br/> /dev/tty1<br/> 1. virtuelle Console<br/> /dev/tty2<br/> 2. virtuelle Console<br/> /dev/ttyS0<br/> erste serielle Schnittstelle COM1<br/> /dev/ttyS1<br/> zeite serielle Schnittstelle COM2<br/> /dev/ttyS2<br/> dritte serielle Schnittstelle<br/> /dev/ttyS3<br/> vierte serielle Schnittstelle<br/> /dev/urandom<br/> zur Erzeugung von Zufallszahlen<br/> /dev/xd*<br/> 8-Bit XT-Festplattencontroller<br/> /dev/zero<br/> zum Lesen beliebig vieler Nullbytes<br/> /etc/<br/> Konfigurationsdateien<br/> /etc/adjtime<br/> zur Korrektur der batteriegepufferten CMOS-Uhr<br/> (clock)<br/> /etc/bash.bashrc<br/> globale bash konfiguration<br/> #/etc/conf.modules<br/> -> /etc/modules.conf<br/> /etc/cryptotab<br/> /etc/fstab für Krypto-Filesystem<br/> /etc/csh.login<br/> Startdatei für die C-Shell<br/> /etc/diphosts<br/> eine Art /etc/passwd für SLIP Login<br/> /etc/DIR_COLORS<br/> festlegen der Farben für ls<br/> 42<br/> <hr/> <a name=43></a>4.1. Dateibaum<br/> /etc/exports<br/> Verzeichnisse und Rchnernamen, die diese<br/> Verzeichnisse per NFS mounten dürfen<br/> wird hier eingetragen<br/> /etc/fdprm<br/> Parameter von Diskettenformaten<br/> /etc/fstab<br/> um Benutzern das An- und Abmelden<br/> von Dateisystemen zu erlauben<br/> /etc/ftpaccess<br/> Woher ? Wann ? Was ? ...<br/> /etc/ftpusers<br/> ... und Wer NICHT ?<br/> /etc/gateways<br/> Rechner des lokalen Netzes die Kontakt mit<br/> anderen Netzen haben<br/> /etc/gettydefs<br/> Beschreibung der seriellen Terminals<br/> /etc/group<br/> Benutzergruppen und ihre Mitglieder<br/> /etc/host<br/> auflösen von Netzwerknamen<br/> über die resolver-Bibliothek<br/> /etc/host.allow<br/> Rechner und Netze mit denen Verbindung aufgebaut<br/> werden darf<br/> /etc/host.conf<br/> eine der Konfig. den Domain Name Service<br/> /etc/host.deny<br/> Rechner und Netze die sich nicht mit diesem<br/> Rechner verbinden dürfen<br/> /etc/host.equiv<br/> Rechner die "gleichartig" behandelt werden<br/> /etc/HOSTNAME<br/> hier steht der Name des Rechners<br/> ohne den Domainnamen<br/> /etc/hosts<br/> ordnet IP-Adressen Hostnamen zu<br/> /etc/inetd.conf<br/> welche Services gestartet werden (inetd)<br/> /etc/init<br/> -> /sbin/init<br/> /etc/init/ Dateien für Upstart<br/> /etc/init.d/<br/> Dateien für die Init-Levels<br/> /etc/init.d/inetd<br/> startet den inetd, z.B. zum Anmelden<br/> vom Netzwerk<br/> /etc/init.d/network<br/> startet die Konfiguration<br/> der Netzwerk Hard- und Software<br/> /etc/init.d/portmap<br/> starte den Portmapper,<br/> um den RPC-Server verwenden zu können<br/> /etc/init.d/route<br/> setzt die statischen Routen im Netzwerk<br/> /etc/init.d/sendmail<br/> kontrolliert den sendmail-Prozess<br/> in Abhängigkeit<br/> /etc/init.d/rc0.d/ bis rc6.d/<br/> init 0 bis 6<br/> /etc/init.d/rcS.d/<br/> init S<br/> /etc/initscript<br/> init führt die Kommandos durch dieses Script<br/> ondemand und respawn aus<br/> #/etc/inittab<br/> Grunteinstellung der Init-Levels und Terminals<br/> (/sbin/init)<br/> /etc/isdn/<br/> ISDN-Konfigurationen<br/> /etc/issue<br/> Begrüßungstext beim Login (getty)<br/> /etc/ld.so.cache<br/> zur Shared Libraries identifizierung (ldconfig)<br/> 43<br/> <hr/> <a name=44></a>4. Verzeichnisse und Dateien<br/> /etc/ld.so.conf<br/> Verzeichnisse zu neuen Shared Libraries<br/> (ldconfig)<br/> /etc/lilo.conf<br/> Konfigurationsdatei des LILO<br/> /etc/login.defs<br/> Login Einstllungen (login)<br/> /etc/magic<br/> Magic Numbers zum Erkennen von Dateien (file)<br/> #/etc/man.config<br/> -> /etc/manpath.config<br/> /etc/manpath.config<br/> Verzeichnisse in den Manualpages gesucht werden<br/> /etc/minicom.users<br/> Benutzer die minicom benutzen dürfen<br/> /etc/modules.conf<br/> Modulinformationen ((für den Kerneld(Dämon)))<br/> /etc/motd<br/> Begrüßung nach dem Anmelden<br/> /etc/mtab<br/> Liste der aktuell zu Verfügung<br/> stehenden Dateisystemen<br/> /etc/mtools.conf<br/> (un)logische Laufwerksbuchstaben<br/> von MS-DOS für die M-Befehle<br/> /etc/named.boot<br/> für den named Dämon des DNS<br/> /etc/networks<br/> die Namen und IP der lokalen Netze<br/> /etc/nntpserver<br/> der Name und die IP des Newsrechners<br/> /etc/nologin<br/> macht jedes "normale" Einloggen unmöglich, nur<br/> die root kann sich anmelden, sonst wird der<br/> Inhalt von nologin ausgegeben (login)<br/> /etc/nscd.conf<br/> Konfiguration des Name Service Cache Dämon<br/> /etc/nsswitch.conf<br/> in welcher Reihenfolge bestimmte<br/> Informationen abgefragt werden<br/> /etc/opt/<br/> Rechner-spezifische Konfigurationsdateien<br/> der Pakete<br/> /etc/passwd<br/> Liste aller Benutzer mit Informationen<br/> /etc/powerstatus<br/> Zustand der Stromversorgung<br/> /etc/printcap<br/> Beschreibung des oder der Drucker des Systems<br/> (lpd)<br/> /etc/profile<br/> Globale Benutzerprofile<br/> /etc/prtocols<br/> Liste aller Internetprotokolle die vom Kernel<br/> unterstützt werden<br/> /etc/psdatabase<br/> enthält kernelabhängige Daten für procps<br/> /etc/rc*<br/> Systeminitialisierungsdateien (init)<br/> /etc/rc.config<br/> zentrale Konfigurationsdatei -> /etc/sysconfig/<br/> /etc/rc.config.d/<br/> weitere Dateien mit rc.config Variablen<br/> /etc/resolv.conf<br/> bestimmt ob und wo ein Nameserver erreicht<br/> werden kann<br/> /etc/rpc<br/> enthält die Zuordnung der durch den rpc-Service<br/> bereitgestellten Netzdienste zu Socketnummern<br/> /etc/securetty<br/> Terminals von den sich der Benutzer<br/> root anmelden darf (login)<br/> /etc/services<br/> ordnet Portnummern Servicenamen zu<br/> /etc/shadow<br/> hier sind die Shadow-Passwörter gespeichert<br/> /etc/shells<br/> Liste aller Shells<br/> 44<br/> <hr/> <a name=45></a>4.1. Dateibaum<br/> /etc/shutdown.allow<br/> Liste der Benutzer die zum Herunterfahren des<br/> Systems berechtigt sind<br/> /etc/skel/<br/> Dateien die beim Anlegen<br/> eines Benutzers in das ~ kopiert werden<br/> /etc/SuSE-release<br/> Angaben zur installierten SuSE Linux version<br/> /etc/sysconfig/<br/> zentrale Konfigurationsdateien -> /etc/rc.config<br/> /etc/syslogd.conf<br/> legt fest wohin Meldungen geschrieben werden<br/> (syslogd)<br/> /etc/termcap<br/> Beschreibungen für Terminaleigenschaften (getty)<br/> /etc/ttytype<br/> legt den voreingestellten Terminaltyp<br/> für die Terminals fest<br/> /etc/XF86Config<br/> bis XFree86.3.3.x Konfigurationsdatei<br/> /etc/X11/XF86Config<br/> ab XFree86.4.x Konfigurationsdatei<br/> /floppy/<br/> dient zur Floppy-Einbindung<br/> /home/<br/> Heimatverzeichnisse der Benutzer<br/> /home/~/.bash_history<br/> gespeicherte Eingaben der bash<br/> /home/~/.bashrc<br/> Konfiguration der bash<br/> /home/~/.ctwmrc<br/> Konfiguration des ctwm-Fenstermanagers<br/> /home/~/.exrc<br/> Konfiguration des vi, ex<br/> /home/~/.fvwmrc<br/> Konfiguration des fvwm-Fenstermanagers<br/> /home/~/.openwin-menu<br/> Konfiguration des olvwm und olwm-Fenstermanagers<br/> /home/~/.profile<br/> wird nach dem User-Anmelden in der bash<br/> ausgeführt<br/> /home/~/.rhosts<br/> erlaubt die r-Kommandos<br/> /home/~/.X.err<br/> Meldungen des X-Servers<br/> /home/~/.xinitrc<br/> diese Datei wird von .xsession ausgeführt<br/> /home/~/.xsession<br/> diese Datei wird nach dem Befehl<br/> startx ausgeführt<br/> /lib/<br/> gemeinsam genutzte Bibliotheken Shared Libraries<br/> /lib/modules/<br/> nachladbare Module<br/> /lost+found/<br/> verlorene Daten, ist in jeder Wurzel<br/> des EXT2-Dateisystems<br/> /media/cdrom/<br/> dient zur CDROM-Einbindung, ist oft im /<br/> /media/floppy/<br/> dient zur Floppy-Einbindung, ist oft im /<br/> /mnt/<br/> für temporär einzuhängende Dateisysteme<br/> /mnt/cdrom/<br/> dient zur CDROM-Einbindung, ist oft im /<br/> /mnt/floppy/<br/> dient zur Floppy-Einbindung, ist oft im /<br/> /opt/<br/> kommerzielle Systemerweiterungen<br/> /opt/kde/<br/> grafische Benutzeroberfläche KDE<br/> /proc/<br/> virtuelles Filesystem über laufende Prozesse<br/> /proc/cpuinfo<br/> Informationen zur CPU<br/> /proc/devices<br/> Liste der wichtigsten Gerätetreiber<br/> /proc/dma<br/> Liste der verwendeten DMA-Kanäle<br/> /proc/filesystems<br/> Liste der bekannten Dateisystemtypen<br/> /proc/interrupts<br/> Liste der Interrupts<br/> 45<br/> <hr/> <a name=46></a>4. Verzeichnisse und Dateien<br/> /proc/ioports<br/> bekannte und definierte EA-Schnittstellen<br/> /proc/kcore<br/> Gerätedatei für den Zugang<br/> zum physikalischen Hauptspeicher<br/> /proc/kmsg<br/> hier können Systemfehlermeldungen<br/> ausgelesen werden<br/> /proc/ksyms<br/> Liste der Kernel-Symbole und<br/> ihrer Speicheradressen<br/> /proc/loadavg<br/> durchschnittliche Systembelastung<br/> in den letzten 1, 5 und 10 Min.<br/> /proc/meminfo<br/> Beschreibung der aktuellen Speicherauslastung<br/> /proc/modules<br/> Liste der geladenen Module und<br/> Anzahl der aktuellen Nutzungen<br/> /proc/mounts<br/> Liste der eingehängten Dateisysteme<br/> /proc/net/<br/> Informationen zur Netzwerkauslastung<br/> /proc/pci<br/> Liste der gefundenen Geräte am PCI-Bus<br/> /proc/scsi/<br/> Informationen über SCSI-Geräte<br/> /proc/stat<br/> Liste allgemeiner Statistiken zum System<br/> /proc/uptime<br/> Sekunden seit dem Systemstart und<br/> der Leerlaufzeit<br/> /proc/version<br/> aktuelle Version des Linux-Kernels<br/> /root/<br/> Heimatverzeichnis des Systemverwalters root<br/> /sbin/<br/> Administrationskommandos<br/> /sbin/init<br/> Nach dem Kernelstart wird versucht das<br/> Programm init zu starten<br/> #/sbin/init.d/<br/> -> /etc/init.d/<br/> /tmp/<br/> temporäre Dateien<br/> /usr/<br/> ausführbare Dateien, Libraries, X Window u.s.w<br/> /usr/bin/<br/> allgemein verfügbare Programmdateien<br/> #/usr/doc/<br/> -> /usr/share/doc/<br/> /usr/games/<br/> Spiele :-)<br/> /usr/include/<br/> Headerdateien für den C-Compiler<br/> /usr/include/g++/<br/> Headerdateien für den C++-Compiler<br/> /usr/info/<br/> Infosystem fur GNU-Kommandos<br/> /usr/lib/<br/> Programmbibliotheken<br/> /usr/lib/terminfo/<br/> Verzeichnis mit Beschreibungen<br/> für Terminaleigenschaften<br/> /usr/local/<br/> Ablage von Dateien und Kommandos die nicht<br/> zur Distribution gehören<br/> /usr/man/<br/> Linux Handbuch<br/> /usr/sbin/<br/> Superuser Programmdateien<br/> /usr/share/doc/<br/> Dokumentationen<br/> /usr/share/doc/packages/<br/> Dokumentation der Programme<br/> /usr/src/<br/> Quellcode für den Kernel und weitere Programme<br/> /usr/src/linux/<br/> Kernel-Source<br/> /usr/src/linux/arch/<br/> Hardwarearchitektur-abhängige<br/> 46<br/> <hr/> <a name=47></a>4.1. Dateibaum<br/> Bestandteile des Kerns<br/> /usr/src/linux/arch/alpha/<br/> DEC-Alpha-Prozessoren<br/> /usr/src/linux/arch/i386/<br/> 386-Prozessoren<br/> /usr/src/linux/arch/m68k/<br/> Motorola 68k-Prozessoren<br/> /usr/src/linux/arch/mips/<br/> MIPS-Prozessoren R3000, R4000 bis R10000<br/> /usr/src/linux/arch/ppc/<br/> Power-PC-Prozessor (ursprünglich IBM)<br/> /usr/src/linux/arch/sparc/<br/> SPARC-Prozessoren der Firma SUN<br/> /usr/src/linux/Documentation/devices.txt<br/> offizielle Liste der<br/> registrierten Devices mit ihren Gerätenummern<br/> /usr/src/linux/drivers/<br/> Zeichen-, Block-orientierte,<br/> Netz-,Soundkarten-Gerätetreiber<br/> /usr/src/linux/drivers/block/<br/> Treiber für blockorientierte Ein-/Ausgabegeräte<br/> wie Festplatten<br/> /usr/src/linux/drivers/cdrom/<br/> Treiber für CD-ROM Laufwerke<br/> außer Atapi/IDE und SCSI<br/> /usr/src/linux/drivers/char/<br/> Zeichen. Treiber serielle Schnittstellen,<br/> Bildschirm, Tastatur usw.<br/> /usr/src/linux/drivers/net/<br/> Treiber für die Netzwerkkarten<br/> /usr/src/linux/drivers/pci/<br/> Spezielle Treiber für PCI-Bus-Bausteine<br/> /usr/src/linux/drivers/sound/<br/> Soundkartentreiber<br/> /usr/src/linux/drivers/scsi/<br/> SCSI-Treiber<br/> /usr/src/linux/fs/<br/> Dateisysteme<br/> /usr/src/linux/ipc/<br/> InterProzessKommunikation,<br/> z.B. Shared Memory, Semaphoren<br/> /usr/src/linux/include/<br/> Header-Dateien mit Struktur- und<br/> Konstantendefinitionen<br/> /usr/src/linux/init/<br/> Initialisierungscode beim Starten des Systems<br/> /usr/src/linux/kernel/<br/> zentrale Aufgaben, z.B. Prozessverwaltung und<br/> Schedulimg usw.<br/> /usr/src/linux/mm/<br/> Speicherverwaltung<br/> /usr/src/linux/modules/<br/> nachladbarer Teil des Kerns<br/> /usr/src/linux/net/<br/> Implementierung der Protokolltreiber<br/> für TCP/IP,SPX/IPX usw.<br/> /usr/src/linux/README<br/> Installationsbeschreibung für den Kernel<br/> /usr/X11R6/<br/> für Daten zum X-Window-System<br/> /usr/X11R6/bin/<br/> Programmdateien die mit X-Window-System arbeiten<br/> /usr/X11R6/lib/X11/<br/> Fenstermanager<br/> /usr/X11R6/lib/X11/app-defaults/<br/> voreingestellte Konfigurationen der<br/> Anwendungen<br/> /var/<br/> sich schnell oder häufig ändernde Daten<br/> /var/adm/inst-log/<br/> Protokolldateien zur installation<br/> /var/lib/rpm/Packages<br/> rpm-Datenbank<br/> /var/lib/rpm/packages.rpm<br/> -> /var/lib/rpm/Packages<br/> /var/log/<br/> Protokolldateien<br/> /var/log/boot.msg<br/> Kernelmeldungen vom letzten Start<br/> 47<br/> <hr/> <a name=48></a>4. Verzeichnisse und Dateien<br/> /var/log/messages<br/> Datei in der die Kernel Meldungen<br/> gespeichert werden<br/> /var/log/syslog<br/> zeit an welches Modul fehlt<br/> /var/tmp/<br/> für große temporäre Dateien<br/> /vmlinuz<br/> der Defaultkernel kann auch in /boot/ liegen<br/> 4.2. /etc/fstab<br/> #Device<br/> Mountpunkt Typ<br/> Optionen<br/> Dump Check<br/> /dev/hdd1 /<br/> reiserfs defaults<br/> 1<br/> 1<br/> /dev/hda1 /boot<br/> ext2<br/> defaults<br/> 1<br/> 2<br/> /dev/sda1 swap<br/> swap<br/> defaults<br/> 0<br/> 0<br/> none<br/> /proc<br/> proc<br/> defaults<br/> 0<br/> 0<br/> /dev/hda3 /temp<br/> vfat<br/> defaults,umask=7000,uid=500,gid=100 0<br/> 0<br/> /dev/hda2 /windows<br/> vfat<br/> defaults<br/> 0<br/> 0<br/> /dev/hdc /cdrom<br/> auto<br/> ro,noauto,user,exec<br/> 0<br/> 0<br/> /dev/fd0 /floppy<br/> auto<br/> noauto,user<br/> 0<br/> 0<br/> /dev/hda3 /save<br/> reiserfs loop,encryption=twofish,noauto,users 0<br/> 0<br/> server:/ /server<br/> nfs<br/> rw,noauto,user,exec<br/> 0<br/> 0<br/> 4.3. /dev/<br/> ls -l /dev/fd0<br/> brw-rw-rw- 1 root disk<br/> 2,<br/> 0 Feb 16 16:30 /dev/fd0<br/> |<br/> |<br/> |<br/> +----- Gerät<br/> |<br/> |<br/> +------ Minor-Device-Nummer(Nebennummer)<br/> |<br/> +----------- Major-Device-Nummer(Hauptnummer)<br/> +----------------- b-blockorientierte Geräte c-zeichenorientierte Geräte<br/> Die Verbindung zum Kernel wird über Slots oder Kanäle hergestellt, die nummeriert<br/> sind und hinter denen sich die Treiber verbergen. Die Nummer des Gerätetreibers wird<br/> als Haupgerätenummer(Major Device Number) bezeichnet. Ein Treiber kann mehrere<br/> Geräte des gleichen Typs verwalten. Um die einzelnen Geräte zu unterscheiden, wird<br/> dem Treiber eine zweite Zahl, die Untergerätenummer (Minor Device Number), über-<br/> geben. Diese beiden Zahlen charakterisieren jede Datei im /dev Verzeichnis. Zusätzlich<br/> werden noch zwei Arten von Geräten unterschieden :<br/> Die blockorientierten Geräte mit direktem Zugriff, wie z.B. Disketten oder Festplatten,<br/> und die zeichenorientierten squentiellen Geräte, wie Drucker, Terminal oder Maus.<br/> Damit hat jede Gerätedatei drei “Koordinaten“, mit der sie vom Kernel, unabhängig<br/> von ihrem Namen, eindeutig identifiziert werden kann. Die offizielle Liste der regi-<br/> strierten Devices mit ihren Gerätenummern ist bei den Kernelsourcen in der Datei<br/> /usr/src/linux/Documentation/devices.txt zu finden.<br/> 48<br/> <hr/> <a name=49></a>4.4. Dateisystemtypen unter Linux<br/> 4.4. Dateisystemtypen unter Linux<br/> affs<br/> Ein auf dem Amiga verwendetes Dateisystem (engl. Amiga Fast Filesystem).<br/> ext2<br/> Das Standard-Dateisystem unter Linux (engl. Second extended Filesystem).<br/> ext3<br/> Journaling Filesystem<br/> hpfs<br/> Standard-Dateisystem von IBM OS/2 (engl. High Performance Filesystem).<br/> Dieses wird von Linux nur mit Lesezugriff unterstüzt.<br/> iso9660 Standard-Dateisystem auf CD-ROMs.<br/> minix<br/> Dieses Dateisystem hat seinen Ursprung in akademischen Lehrprojekten<br/> über Betriebssysteme und war das erste Dateisystem, welches für Linux<br/> verwendet wurde. Heute wird es unter Linux vornehmlich als Dateisystem<br/> für Disketten verwendet.<br/> msdos<br/> Ursprünglich von DOS verwendetes Dateisystem, welches aber bis heute von<br/> diversen Betriebssystemen genutzt wird.<br/> ncpfs<br/> Dateisystem für das Novell-Volumes.<br/> nfs<br/> Hier sind die Daten auf der Festplatte eines anderen Rechners und<br/> werden über das Netzwerk zugänglich gemacht (engl. Network Filesystem).<br/> proc<br/> Prozess-Dateisystem (virtuell).<br/> reiserfs<br/> Das ReiserFS ist ein hochperformantes "’Journaling Filesystem"’;<br/> seit SuSE Linux 6.4 auf x86-Architekturen verfügbar.<br/> smbfs<br/> SMB (engl. Server Message Block) ist ein Protokoll, das von WfW,<br/> Windoofs NT und LAN Manager verwendet wird, um Dateien über ein Netzwerk<br/> verfügbar zu machen.<br/> sysv<br/> Von SCO-Unix, Xenix und Coherent (kommerzielle UNIX-Systeme für PCs)<br/> verwendetes Dateisystem.<br/> ufs<br/> Von BSD, SunOS und NeXTstep verwendetes Dateisystem; dies Dateisystem<br/> wird von Linux nur mit Lesezugriff unterstützt.<br/> umsdos Setzt auf einem gewöhnlichen fat-Dateisystem auf (engl. UNIX on MSDOS)<br/> und erreicht durch Anlegen spezieller Dateien die notwendige UNIX-<br/> Funktionalität (Rechte, Links, lange Dateinamen); es ist jedoch sehr<br/> langsamm.<br/> vfat<br/> Erweiterung des fat-Dateisystems hinsichtlich der Länge der Dateinamen<br/> (engl. Virtual FAT).<br/> ntfs<br/> Windows NT-Dateisystem.<br/> 4.5. /etc/group<br/> #Gruppenname:Paßwort:Gruppennummer:Mitgliederliste<br/> root:x:0:root<br/> bin:x:1:root,bin,daemon<br/> daemon:x:2:<br/> sys:x:3:<br/> tty:x:5:<br/> disk:x:6:higi<br/> 49<br/> <hr/> <a name=50></a>4. Verzeichnisse und Dateien<br/> lp:x:7:<br/> shadow:x:15:root,gdm<br/> audio:x:17:root,higi<br/> public:x:32:<br/> video:x:33:higi<br/> game:x:40:higi<br/> modem:x:43:<br/> users:x:100:<br/> nogroup:x:65534:root<br/> 4.6. /etc/hosts<br/> # IP-Adresse #Aliasnamen<br/> 127.0.0.1 localhost<br/> 127.0.1.1 latex<br/> ::1<br/> localhost ip6-localhost ip6-loopback<br/> ff02::1<br/> ip6-allnodes<br/> ff02::2<br/> ip6-allrouters<br/> 192.168.0.10 rechner rechner.loc www.rechner.loc<br/> 4.7. /etc/inittab<br/> Nach dem Kernelstart wird versucht das Programm init zu starten. Dabei werden<br/> nacheinander die Verzeichnisse /etc/, /bin/ und /sbin/ nach init abgesucht. Kann init<br/> /dev/console nicht öffnen wird im Einzelbenutzerbetrieb (Single User Mode) gestartet.<br/> Beim LILO-Bootpromt kann init=/bin/sh angegeben werden um die Shell anstelle<br/> von init zu laden. Das Programm init liest die Datei /etc/inittab und wird durch<br/> die Datei das System konfigurieren. /etc/inittab wird vom Kommando init Zeile für<br/> Zeile abgearbeitet. In jeder Zeile seht jeweils eine Anweisung. Jede Zeile wird durch<br/> Doppelpunkte unterteilt. Der Aufbau sieht wie folgt aus:<br/> Terminal:Termcapeintrag:Gettykommando<br/> Simpleinit von Peter Orbaek mit<br/> Erweiterung von Werner Almesberger<br/> 4.7.1. Terminal<br/> Bezeichnet das Terminal (tty1, tty2, ttyS0 ...)<br/> 4.7.2. Termcapeintrag<br/> Wird in die TERM Variable der Shell geschrieben und sollte mit einem Eintrag in der<br/> Datei /etc/termcap übereinstimmen.<br/> 50<br/> <hr/> <a name=51></a>4.7. /etc/inittab<br/> 4.7.3. Gettykommando<br/> Pfad und Optionen zum Getty-Kommando<br/> # Beispiel einer inittab für simpleinit # Format: Terminal:Termcapeintrag:Gettykommando<br/> tty1:linux:/sbin/getty 9600 tty1 tty2:console:/sbin/getty 9600 tty2 tty5:con100x40:/sbin/getty<br/> 9600 tty5 ttyS1:vt102:/sbin/getty 9600 ttyS1<br/> Kürzel:Arbeitsstufen:Modus:Kommando<br/> Sysvinit von Mike Jagdis und<br/> Miquel van Smoorenburg<br/> 4.7.4. Kürzel<br/> Jede Aktion muß mit einem eindeutigen (maximal vierstelligen, a.out oder Librari-<br/> es<5.2.18 maximal zweistelligen) Kürzel versehen werden, das bei Einträgen in Logfiles<br/> und bei Fehlermeldungen ausgegeben wird.<br/> 4.7.5. Arbeitsstufen<br/> Es werden hier die Arbeitsstufen (Runlevel) eingetragen. Zulässige Arbeitsstufen sind<br/> 0 - 9 und s. Es können auch die Pseudoarbeitsstufen(ondemand) a, b, c und q für<br/> einmalig auszuführende Kommandos verwendet werden. Es wird ohne Groß und Klein-<br/> schreibung bezeichnet. In einer Zeile können bis zu 11 Runlevel zugeordnet werden.<br/> Wenn das Feld für den Runlevel leer ist, wird die Aktion bei jedem Moduswechsel<br/> ausgeführt.<br/>0<br/> Systemhalt<br/> S<br/> Einzelbenutzerbetrieb (Single User Mode)<br/> 1<br/> Einzelbenutzerbetrieb (Single User Mode)<br/> 2<br/> Lokaler Mehrbenutzerbetrieb ohne entferntes Netzwerk<br/> (Local multiuser without remote network)<br/> 3<br/> Voller Mehrbenutzerbetrieb mit Netzwerk<br/> (Full multiuser with network)<br/> 4<br/> Frei (Not used)<br/> 5<br/> Voller Mehrbenutzerbetrieb mit Netzwerk und KDM, GDM oder XDM<br/> (Full multiuser with network and xdm)<br/> 6<br/> Systemneustart (System reboot)<br/> Q<br/> Quit zum Neueinlesen der inittab<br/> 4.7.6. Modus<br/> Gibt an wie das Kommando im letzten Feld ausgeführt werden soll.<br/>initdefault<br/> Bestimmt den Runlevel beim Systemstart.<br/> sysinit<br/> Wird einmal nach dem Kernelstart ausgeführt.<br/> bootwait<br/> Wird einmal ausgefürt, wenn in einem Mehrbenutzerbetrieb<br/> gestartet wird und wartet bis das Kommando beendet ist.<br/> boot<br/> Wie bootwait nur das nicht gewartet wird.<br/> 51<br/> <hr/> <a name=52></a>4. Verzeichnisse und Dateien<br/> respawn<br/> Überwacht das laufende Kommando und startet es neu, wenn es<br/> beendet wurde. Wird es in zwei Minuten 10 mal neu gestartet,<br/> setzt init das Kommando für fünf Minuten aus.<br/> ondemand<br/> Wie respawn, um mit Buchstaben gekennzeichnete Level einzelne<br/> Kommandos mit telinit zu starten.<br/> wait<br/> Wartet bis das Kommando beendet ist.<br/> once<br/> Wird einmal ausgefürt, es wird nicht gewartet.<br/> off<br/> Wenn das Kommando läuft, wird es angehalten.<br/> ctrlaltdel<br/> Kommando (Signal SIGINT, [Strg]+[Alt]+[Entf]) z.B. Rebooten des<br/> Systems.<br/> kbrequest<br/> Kommando wird ausgeführt, wenn das Signal SIGWINCH<br/> [Alt]+[Pfeil hoch] von der Tastatur kommt.<br/> powerwait<br/> Wenn init sich in einem passenden Runlevel befindet, das<br/> Signal SIGPWR erhält oder über Pipeline /dev/initctrl den<br/> entsprechenden Befehl erhält und wartet auf Beendigung des<br/> Kommandows. Das Signal kann mit Hilfe eines Dämons von einer USV<br/> erzeugt werden.<br/> powerfail<br/> Wie powerwait wartet jedoch nicht.<br/> powerfailnow<br/> Wie powerwait es muß die Datei /etc/powerstatus zusätzlich das<br/> Wort Low enthalten. So kann das APM eines Notebooks mit Hilfe<br/> eines Dämons das System herrunterfahren.<br/> powerokwait<br/> Wie powerwait es muß die Datei /etc/powerstatus zusätzlich das<br/> Wort OK enthalten. Auf diese weise kann das System in den<br/> normalen Zustand gebracht werden, nachdem die Stromversorgung<br/> wieder hergestellt ist.<br/> 4.7.7. Kommando<br/> Pfad und Optionen zum Kommando, wird durch die Bourne-Again-Shell abgearbeitet.<br/> Bei jedem Kommandostart wird versucht die Datei /etc/initscript abzuarbeiten, die<br/> dann das Kommando startet.<br/> # Beispiel einer inittab für sysvinit<br/> # Format: Kürzel:Arbeitsstufen:Modus:Kommando<br/> # Bestimmt den Runlevel beim Systemstart<br/> id:5:initdefault:<br/> # Erstes Script, wenn nicht im Notfallsystem (-b) gestartet wird.<br/> si::bootwait:/etc/init.d/boot<br/> # /etc/init.d/rc übernimmt die Runlevel Behandlung<br/> l0:0:wait:/etc/init.d/rc 0<br/> l1:1:wait:/etc/init.d/rc 1<br/> l2:2:wait:/etc/init.d/rc 2<br/> 52<br/> <hr/> <a name=53></a>4.8. /etc/passwd<br/> l3:3:wait:/etc/init.d/rc 3<br/> #l4:4:wait:/etc/init.d/rc 4<br/> l5:5:wait:/etc/init.d/rc 5<br/> l6:6:wait:/etc/init.d/rc 6<br/> # Bestimmt den Einzelbenutzerbetrieb (Single User Mode)<br/> ls:S:wait:/etc/init.d/rc S<br/> ~~:S:respawn:/sbin/sulogin<br/> # Aktion bei Signal SIGINT, [Strg]+[Alt]+[Entf]<br/> ca::ctrlaltdel:/sbin/shutdown -r -t 4 now<br/> # Aktion bei Signal SIGWINCH [Alt]+[Pfeil hoch]<br/> kb::kbrequest:/bin/echo "’Keyboard Request -- edit /etc/inittab to let this work."’<br/> # Aktion bei Stormausfall und Wiederherstellung<br/> pf::powerwait:/etc/init.d/powerfail start<br/> pn::powerfailnow:/etc/init.d/powerfail now<br/> #pn::powerfail:/etc/init.d/powerfail now<br/> po::powerokwait:/etc/init.d/powerfail stop<br/> # getty-Programme für die normalen Runlevels<br/> 1:2345:respawn:/sbin/mingetty --noclear tty1<br/> 2:2345:respawn:/sbin/mingetty tty2<br/> 3:2345:respawn:/sbin/mingetty tty3<br/> 4:2345:respawn:/sbin/mingetty tty4<br/> 5:2345:respawn:/sbin/mingetty tty5<br/> 6:2345:respawn:/sbin/mingetty tty6<br/> #S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102<br/> 4.8. /etc/passwd<br/> #Benutzername:Paßwort:Benutzernummer:Gruppennummer:GCOS:Heimat:Shell<br/> root:x:0:0:root:/root:/bin/bash<br/> bin:x:1:1:bin:/bin:/bin/bash<br/> daemon:x:2:2:daemon:/sbin:/bin/bash<br/> lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash<br/> games:x:12:100::/var/games:/bin/bash<br/> man:x:13:2::/var/cache/man:/bin/bash<br/> ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash<br/> nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash<br/> higi:x:500:100:Higi:/home/higi:/bin/bash<br/> gast:x:501:100:Gast:/home/gast:/bin/bash<br/> 53<br/> <hr/> <a name=54></a><hr/> <a name=55></a>5. Die Shells<br/> 5.1. Die Shells<br/> Eine Shell ist ein Kommando-Interpreter, ein Programm das durch ein anderes ersetzt<br/> werden kann. Es zerlegt die Kommandozeile, führt Sonderzeichen durch und reicht das<br/> Kommando an UNIX weiter. Ohne Shell gibt es keinen Zugang zum Betriebssystem.<br/> /bin/sh<br/> Bourne-Shell<br/> zum programmieren<br/> /bin/ksh<br/> Korn-Shell<br/> Mischung aus C-und Bourne-Shell<br/> /bin/csh<br/> C-Shell<br/> zum interaktiven Arbeiten<br/> /bin/bash<br/> Bourne-Again-Shell<br/> /bin/tcsh<br/> TC-Shell<br/> export<br/> Setzt Umgebungsvariablen, Variablen exportieren<br/> locate<br/> Findet Dateien anhand einer Datenbank<br/> setenv<br/> Setzt Umgebungsvariablen unter Nicht-Bash Shells, z.B. csh<br/> unset<br/> Variable löschen in ksh, bsh und bash<br/> unsetenv<br/> Variable löschen in csh<br/> 5.2. Die Start-Scripts<br/> ~/.bashrc<br/> bash<br/> 5.3. Tastenkombinationen<br/> [Strg]+[l]<br/> Bildschirm löschen<br/> bash und csh<br/> [Strg]+[a] oder [Pos 1]<br/> Zeilenanfang<br/> bash und csh<br/> [Strg]+[e] oder [Ende]<br/> Zeilenende<br/> bash und csh<br/> [Alt]+[f]<br/> Wort vorwäts<br/> bash und csh<br/> [Alt]+[b]<br/> Wort rückwärts<br/> bash und csh<br/> [Strg]+[c]<br/> Befehlseingabe verwerfen<br/> alle Shells<br/> [Strg]+[c]<br/> Programm abbrechen<br/> [Pfeil rechts] und [Pfeil links]<br/> Cursor bewegen<br/> bash und csh<br/> [Pfeil hoch] und [Pfeil runter]<br/> History-Scrolling<br/> bash und csh<br/> [Strg]+[r]<br/> in der History suchen<br/> bash<br/> [Tab]<br/> Komplettierung<br/> bash und csh<br/> [Strg]+[d]<br/> beendet die Shell<br/> alle Shells<br/> 55<br/> <hr/> <a name=56></a>5. Die Shells<br/> [Strg]+[d] oder [Entf]<br/> ein Zeichen löschen<br/> [Strg]+[h] oder [Backspace]<br/> Zeichen rückwärts löschen<br/> [Strg]+[k]<br/> Zeile ab Cursor löschen<br/> [Alt Gr]+[Umschalt]<br/> zwei folgende Zeichen vereinen<br/> ae -> AE, co -> \texteuro<br/> [Strg]+[z]<br/> im Vordergrund laufendes Programm anhalten<br/> Fortsetzung mit fg<br/> [Umschalt]+[Bild hoch] und<br/> vorherige Textausgabe<br/> alle Shells<br/> [Umschalt]+[Bild runter]<br/> zurückholen<br/> [Alt]+[F1] bis [F6]<br/> Umschalten zwischen Textkonsolen alle Shells<br/> [AltGr]+[Fn]<br/> Umschalten zwischen den Textkonsolen n+12<br/> [Alt]+[Pfeil links oder rechts]<br/> um durch die benutzten Konsolen zu stöbern<br/> [Strg]+[Alt]+[F1] bis<br/> Umschalten zu Textkonsolen<br/> alle Shells<br/> [Strg]+[Alt]+[F6]<br/> aus X11 heraus<br/> [Strg]+[Alt]+[F7]<br/> Umschalten zu X11 aus Textkonsole alle Shells<br/> bei Caldera 2.2 [Alt]+[F8]<br/> [Strg]+[Alt]+[<--]<br/> X-Server sofort beenden<br/> [Strg]+[Alt]+[+]<br/> verschiedene Auflösungen im laufenden Betrieb<br/> [Strg]+[Alt]+[-]<br/> wechseln<br/> [Strg]+[Alt]+[Entf]<br/> Signal SIGINT z.B. reboot<br/> Shell<br/> 5.4. Die C-Shell<br/> ~<br/> Home-Verzeichnis<br/> ~user<br/> Home-Verzeichnis des Benutzers user<br/> *<br/> beliebige Zeichen-kette<br/> ?<br/> genau Zeichen<br/> {a,b,c}<br/> a oder b oder c<br/> [aceg]<br/> genau eines der Zeichen<br/> [a-z]<br/> a bis z<br/> [!adfh]<br/> kein a, d, f, h<br/> ´´<br/> maskiert alles<br/> \<br/> maskiert das nachfolgende Zeichen<br/> ""<br/> maskiert $ ‘ \ nicht<br/> > Datei<br/> Ausgabe in die Datei, stdout<br/> >& Datei<br/> Ausgabe in die Datei, stdout und stderr<br/> >>Datei<br/> Unlenkung in die Datei, stdout umgelenkt<br/> < Datei<br/> von der Datei lesen, anstatt von stdin zu lesen<br/> set noclobber<br/> Überschreiben einer vorhandenen Datei verhindern<br/> |<br/> Ausgabekanal eines Kommandos direkt in den Eingabekanal eines<br/> anderen Kommandos leiten<br/> #!Programm<br/> so beginnt eine Datei die vom Progamm ausgeführt wird<br/> $HISTSIZE<br/> History-Größe<br/> $LS_OPTIONS<br/> ls Funktionen<br/> 56<br/> <hr/> <a name=57></a>5.5. Bash rechnen<br/> $PATH<br/> Pfad zu den Programmdateien<br/> Programm &<br/> Programm im eigenem Prozess starten<br/> 5.5. Bash rechnen<br/> echo $((1+1))<br/> gibt 1 aus<br/> a=4<br/> b=5<br/> echo $((a*b))<br/> gibt 20 aus<br/> echo $((a-b))<br/> gibt -1 aus<br/> 57<br/> <hr/> <a name=58></a><hr/> <a name=59></a>Teil II.<br/> Programme<br/> 59<br/> <hr/> <a name=60></a><hr/> <a name=61></a>6. Der Texteditor vi/vim<br/> Der vi-Editor ist auf UNIX/Linux(neben Emacs) der meistverwendete Texteditor. Die<br/> Bedienung erfolgt über den Befehls- und Kommando-modus. Da es nicht gerade ein-<br/> fach ist sich diese Optionen zu merken, folgt eine Auflistung der meist gebrauchten<br/> Optionen.<br/> 6.1. Aufruf<br/> vi<br/> Editor vi aufrufen<br/> vi Datei<br/> Editor vi aufrufen und Datei öffnen<br/> vi -r<br/> swap-Dateien anzeigen<br/> vi -r Datei<br/> Datei nach einem Stromausfall oder Absturz wieder herstellen<br/> vi -R Datei<br/> Datei schreibgeschützt öffnen<br/> 6.2. Eingabemodus (input mode)<br/> Um in den Eingabemodus zu gelangen muss A, C, I, O, R, S, a, i, o oder s eingegeben<br/> werden. i ist eine gute Wahl. Mit <Esc> wird der Eingabemodus verlassen.<br/> 6.3. Befehlsmodus (visual mode)<br/> 6.3.1. Eingeben:<br/> (n)i eingeben<br/> fügt den eingeben Text (n mal) vor dem Cursor ein<br/> (n)a eingeben<br/> fügt den eingeben Text (n mal) hinter dem Cursor ein<br/> (n)I eingeben<br/> fügt den eingeben Text (n mal) am Zeilenanfang ein<br/> (n)A eingeben<br/> fügt den eingeben Text (n mal) am Zeilenende ein<br/> (n)o eingeben<br/> fügt unter der aktuellen Zeile (n neue Zeilen)<br/> mit den eingeben Text ein<br/> (n)O eingeben<br/> fügt über der aktuellen Zeile (n neue Zeilen)<br/> mit den eingeben Text ein<br/> 6.3.2. Überschreiben:<br/> (n)R eingeben<br/> überschreibt den Text mit eingeben<br/> <Einf><br/> wechselt zwischen INSERT und REPLACE<br/> (n)r Taste<br/> überschreibt den Text mit (n mal) Taste<br/> 61<br/> <hr/> <a name=62></a>6. Der Texteditor vi/vim<br/> von dem Cursor nach rechts<br/> 6.3.3. Bewegen:<br/> (n)h<br/> Cursor um (n) Zeichen nach links bewegen<br/> (n)<Strg>+h<br/> Cursor um (n) Zeichen nach links bewegen<br/> (n)l<br/> Cursor um (n) Zeichen nach rechts bewegen<br/> (n)<SPACE><br/> Cursor um (n) Zeichen nach rechts bewegen<br/> (n)|<br/> Cursor zur Spalte (n) bewegen<br/> (n)t Taste<br/> Cursor vor das (n) Zeichen Taste nach rechts bewegen<br/> (n)f Taste<br/> Cursor auf das (n) Zeichen Taste nach rechts bewegen<br/> (n)T Taste<br/> Cursor vor das (n) Zeichen Taste nach links bewegen<br/> (n)F Taste<br/> Cursor auf das (n) Zeichen Taste nach links bewegen<br/> (n)j<br/> Cursor um (n) Zeilen abwärts bewegen<br/> (n)k<br/> Cursor um (n) Zeilen aufwärts bewegen<br/> (n)w<br/> Cursor um (n) Wörter nach rechts bewegen<br/> (n)W<br/> Cursor um (n) Wörter(Space) nach rechts bewegen<br/> (n)b<br/> Cursor um (n) Wörter nach links bewegen<br/> (n)B<br/> Cursor um (n) Wörter(Space) nach links bewegen<br/> (n)e<br/> Cursor an das (n) Wortende nach rechts bewegen<br/> (n)E<br/> Cursor an das (n) Wortende(Space) nach rechts bewegen<br/> ^<br/> Cursor auf das erste Zeilenzeichen stellen<br/> 0<br/> Cursor vor das erste Zeilenzeichen stellen<br/> (n)_<br/> Cursor auf das erste Zeilenzeichen stellen und<br/> (n-1) Zeilen nach unten bewegen<br/> $<br/> Cursor zum Zeilenende bewegen<br/> (n)+<br/> Cursor auf das erste Zeilenzeichen stellen und<br/> (n) Zeilen abwärts bewegen<br/> (n)-<br/> Cursor auf das erste Zeilenzeichen stellen und<br/> (n) Zeilen aufwärts bewegen<br/> (n))<br/> Cursor um (n) Sätze abwärts bewegen<br/> (n)(<br/> Cursor um (n) Sätze aufwärts bewegen<br/> (n)}<br/> Cursor um (n) Absätze abwärts bewegen<br/> (n){<br/> Cursor um (n) Absätze aufwärts bewegen<br/> (n)<Strg>+u<br/> Cursor um 1/2 Bildschirm oder (n Zeilen)<br/> aufwärts bewegen<br/> (n)<Strg>+d<br/> Cursor um 1/2 Bildschirm oder (n Zeilen)<br/> abwärts bewegen<br/> <Strg>+f<br/> Cursor um 1 Bildschirm abwärts bewegen<br/> <Bild runter><br/> Cursor um 1 Bildschirm abwärts bewegen<br/> <Strg>+b<br/> Cursor um 1 Bildschirm aufwärts bewegen<br/> <Bild hoch><br/> Cursor um 1 Bildschirm aufwärts bewegen<br/> (n)<Strg>+e<br/> scrollt den Cursor (n) Zeilen abwärts<br/> (n)<Strg>+y<br/> scrollt den Cursor (n) Zeilen aufwärts<br/> ’<br/> Taste<br/> Cursor zu der mit Taste markierten Zeile bewegen<br/> 62<br/> <hr/> <a name=63></a>6.3. Befehlsmodus (visual mode)<br/> ‘<br/> Taste<br/> Cursor zu dem mit Taste markierten Zeichen bewegen<br/> gg<br/> Cursor zum Textanfang bewegen<br/> (n)G<br/> Cursor zur Zeile (n) bewegen<br/> G<br/> Cursor zum Textende bewegen<br/> H<br/> Cursor an den Anfang der Bildschirmseite setzen<br/> (n)H<br/> Cursor zur Zeile (n) auf den Bildschirm bewegen<br/> M<br/> Cursor auf den Anfang der mittleren<br/> Bildschirmzeile bewegen<br/> L<br/> Cursor an das Ende der Bildschirmseite setzen<br/> (n)L<br/> Cursor vom Ende zur Zeile (n) auf den Bildschirm bewegen<br/> z<br/> Taste<br/> bewegt die aktuelle Zeile zum Anfang(+), Ende(-) oder<br/> zur Mitte(.) des Bildschirms<br/> 6.3.4. Löschen und Eingeben:<br/> (n)s eingeben<br/> löscht (n) Zeichen von dem Cursor nach rechts und<br/> fügt den eingeben Text ein<br/> c Bereich eingeben<br/> löscht den markierten Bereich und<br/> fügt den eingeben Text ein<br/> cc<br/> eingeben<br/> löscht den Zeilentext und fügt den eingeben Text ein<br/> cw<br/> eingeben<br/> löscht bis zum ende des Wortes und<br/> fügt den eingeben Text ein<br/> C<br/> eingeben<br/> löscht den Text bis Zeilenende und<br/> fügt den eingeben Text ein<br/> (n)S eingeben<br/> löscht (n) Zeilen nach unten und<br/> fügt den eingeben Text ein ( wie (n)cc )<br/> 6.3.5. Löschen:<br/> d<br/> Bereich<br/> löscht den markierten Bereich<br/> dd<br/> löscht die ganze Zeile<br/> D<br/> löscht den Text bis Zeilenende<br/> dw<br/> löscht bis zum Ende des Wortes<br/> (n)x<br/> löscht (n) Zeichen auf den sich der Cursor befindet<br/> <Entf><br/> löscht das Zeichen auf den sich der Cursor befindet<br/> (n)X<br/> löscht (n) Zeichen links vom Cursor<br/> 6.3.6. Aufheben:<br/> u<br/> macht die letzte Änderung rückgängig<br/> U<br/> macht die letzte Änderung der ganzen Zeile rückgängig<br/> 6.3.7. Verschieben:<br/> ><br/> Bereich<br/> schiebt die markierten Zeilen nach rechts<br/> 63<br/> <hr/> <a name=64></a>6. Der Texteditor vi/vim<br/> >><br/> schiebt die Zeile auf den sich der Cursor befindet<br/> nach rechts<br/> <<br/> Bereich<br/> schiebt die markierten Zeilen nach links<br/> <<<br/> schiebt die Zeile auf den sich der Cursor befindet<br/> nach links<br/> 6.3.8. Zusammenfügen:<br/> (n)J<br/> hängt (n) Zeilen nach unten aneinander<br/> 6.3.9. Markieren:<br/> m<br/> Taste<br/> markiert eine Zeile oder Zeichen<br/> v<br/> setzt den Anfang einer Markierung<br/> V<br/> setzt den Anfang einer Zeilenmarkierung<br/> 6.3.10. Kopieren:<br/> y<br/> Bereich<br/> kopiert den mit Bereich angegebenen Text in einen Puffer<br/> (n)Y<br/> kopiert die aktuelle und (n) Zeilen in einen Puffer<br/> "<br/> Taste<br/> legt den nächsten Zwischenpuffer fest<br/> @<br/> Taste<br/> interpretiert den Inhalt des Zwischenspeichers als<br/> vi Befehle und führt sie aus<br/> 6.3.11. Einfügen:<br/> p<br/> fügt den aktuellen Puffer hinter dem Cursor ein<br/> P<br/> fügt den aktuellen Puffer vor dem Cursor ein<br/> 6.3.12. Suchen:<br/> (n)%<br/> platziert den Cursor auf die zugehörige () {} [], oder<br/> platziert den Cursor auf (n) Prozent der Datei<br/> /<br/> Text<br/> sucht den Text vorwärts<br/> ?<br/> Text<br/> sucht den Text rückwärts<br/> 6.3.13. Wiederholen:<br/> .<br/> wiederholt das letzte EDIT Kommando<br/> n<br/> wiederholt das letzte Suchen<br/> N<br/> wiederholt das letzte Suchen in umgekehrter Richtung<br/> (n);<br/> wiederholt das vorgehende f, F, t, T Kommando<br/> (n),<br/> wiederholt das vorgehende f, F, t, T Kommando in<br/> umgekehrter Richtung<br/> (n)&<br/> wiederholt den letzten :s// Befehl an der momentanen<br/> Position<br/> 64<br/> <hr/> <a name=65></a>6.4. Kommandomodus (colon mode)<br/> 6.3.14. Sonstige Kommandos:<br/> <Strg>G<br/> zeigt den Dateistatus und die momentane Zeilennummer<br/> ZZ<br/> speichert die Datei und beendet vi<br/> <Strg>L<br/> erneuert den Bildschirm<br/> 6.4. Kommandomodus (colon mode)<br/> Um in den Kommandomodus zu gelangen muss : eingegeben werden.<br/> 6.4.1. Texteingabe Kommandos<br/> q(!)<br/> Editor verlassen<br/> wq<br/> Editor mit speichern verlassen<br/> xit<br/> arbeitet wie wq, speichert nur bei einer Änderung<br/> x(!)<br/> Editor mit speichern verlassen<br/> w(!) Name<br/> Datei mit Namen speichern<br/> h<br/> Hilfe anfordern<br/> args Dateien<br/> Liste der Dateien anlegen<br/> args<br/> Dateien auflisten<br/> next(!)<br/> schaltet zur nächsten Datei<br/> previous(!)<br/> schaltet zur vorhergehenden Datei<br/> rewind(!)<br/> schaltet zur ersten Datei<br/> edit(!) Datei<br/> dient zum wechseln der Datei<br/> !Befehl<br/> externen Befehl ausführen<br/> 65<br/> <hr/> <a name=66></a><hr/> <a name=67></a>7. LaTeX<br/> 7.1. LATEX<br/>LATEX<br/> 67<br/> <hr/> <a name=68></a><hr/> <a name=69></a>8. Docker<br/> Docker ist eine freie Software zur Isolierung von Anwendungen mit Hilfe von Contai-<br/> nervirtualisierung. Die Podman API ist identisch mit der Docker API.<br/> 8.1. Docker installieren<br/> apt install curl<br/> falls kein curl<br/> installiert ist<br/> curl -fsSL https://get.docker.com -o get-docker.sh<br/> Installer holen<br/> sudo sh ./get-docker.sh<br/> Installer starten<br/> sudo apt docker docker-compose<br/> installiert Docker auch<br/> Wenn man nicht mit dem Nutzer root arbeiten möchte, sollte man den aktuellen<br/> Benutzer berechtigen:<br/> sudo usermod -aG docker $USER<br/> aktuellen Benutzer für docker freigeben,<br/> danach neu anmelden<br/> 8.2. Mit Docker arbeiten<br/> docker ps<br/> laufende Container auflisten<br/> docker ps -a<br/> alle Container auflisten, auch gestoppte<br/> docker images<br/> alle Images auflisten<br/> docker stop Containername<br/> laufenden Container beenden<br/> docker run -p 80:80 nginx<br/> simplen Webserver nginx starten<br/> Hostport:Containerport<br/> Arbeiten mit Docker-Compose<br/> nano docker-compose.yml<br/> Datei docker-compose.yml mit dem Editor<br/> nano bearbeiten. Die Datei docker-compose.yml<br/> enthält die Definition der Container.<br/> docker-compose up -d<br/> die Compose-Zusammenstellung hochfahren<br/> docker-compose pull<br/> Container updaten, neue Images laden<br/> Meine docker-compose.yml:<br/> 69<br/> <hr/> <a name=70></a>8. Docker<br/> services:<br/> portainer:<br/> container_name: portainer<br/> image: portainer/portainer-ce<br/> ports:<br/> - ’9000:9000’<br/> volumes:<br/> - /var/run/docker.sock:/var/run/docker.sock<br/> - ./portainer_data:/data<br/> restart: always<br/> forgejo:<br/> container_name: forgejo<br/> image: codeberg.org/forgejo/forgejo:10<br/> ports:<br/> - ’3000:3000’<br/> - ’222:22’<br/> environment:<br/> - USER_UID=1000<br/> - USER_GID=1000<br/> volumes:<br/> - ./forgejo_data:/data<br/> - /etc/timezone:/etc/timezone:ro<br/> - /etc/localtime:/etc/localtime:ro<br/> restart: always<br/> 70<br/> <hr/> <a name=71></a>Teil III.<br/> Linux im Netzwerk<br/> 71<br/> <hr/> <a name=72></a><hr/> <a name=73></a>9. Netzwerk<br/> Rechnername<br/> Name den der Rechner im Netzwerk hat,<br/> sollte nicht mehr als acht Zeichen haben,<br/> darf im lokalen Netzwerk noch nicht vergeben sein<br/> Domainname<br/> Name zur Gliederung von Netzwerken<br/> Top-Level-Domain<br/> umfasst höchstens vier Buchstaben<br/> Beispiel: Rechnername.Domainname.Top-Level-Domain -><br/> voyager.startrek.foe<br/> IP-Adresse<br/> Adresse des Rechners im Netzwerk,<br/> jede Netzwerkschnittstelle(z.B. Netzwerk- oder<br/> ISDN-Karte) hat im Netzwerk mindestens eine Adresse<br/> die eindeutig ist, die Adresse besteht derzeit aus<br/> einer Sequenz von vier Bytes die durch Punkte getrennt<br/> sind z.B. 192.168.20.40 , für private Netze sind durch<br/> das Arbeitspapier RFC 1597 drei Adressbereiche<br/> vorgesehen die nicht geroutet werden:<br/> 10.0.0.0<br/> -> 10.255.255.255 (Class A-Netz)<br/> 172.16.0.0 -> 172.31.255.255 (Class B-Netz)<br/> 192.168.0.0 -> 192.168.255.255 (Class C-Netz)<br/> Gatewayadresse<br/> IP-Adresse des Gerätes die das Weiterleiten<br/> von Netzwerkpaketen in das fremde Netz übernimmt<br/> Netzwerkmaske<br/> sagt aus welcher Teil der IP-Adresse<br/> zum lokale Netzwerk gehört z.B. 255.255.255.0<br/> OSI<br/> Open Systems Interconnection model ist ein Referenzmodell<br/> für Netzwerkprotokolle als Schichtenarchitektur<br/> IEEE<br/> Institute of Electrical and Electronics Engineers ist<br/> ein weltweiter Berufsverband von Ingenieuren,<br/> Technikern, (Natur-)Wissenschaftlern und angrenzender<br/> Berufe hauptsächlich aus den Bereichen Elektrotechnik<br/> und Informationstechnik<br/> ISO<br/> Internationale Organisation für Normung ist die<br/> internationale Vereinigung von Normungsorganisationen<br/> und erarbeitet internationale Normen in allen Bereichen<br/> mit Ausnahme der Elektrik und der Elektronik<br/> MAC-Adresse<br/> 00:60:97:37:0c:ae Media-Access-Code-Adresse ist die<br/> -------- -------- Nummer eines Gerätes auf einer<br/> |<br/> |<br/> Datenverbindung<br/> |<br/> |<br/> |<br/> laufende Nummer<br/> 73<br/> <hr/> <a name=74></a>9. Netzwerk<br/> Herstellerabhängig<br/> NIC<br/> Network Information Center oder eine Domain Name Registry<br/> verwaltet eine oder mehrere Top-Level-Domains im<br/> Domain Name System<br/> TCP<br/> Transmission Control Protocol ist ein Netzwerkprotokoll,<br/> das definiert, auf welche Art und Weise Daten zwischen<br/> Netzwerkkomponenten ausgetauscht werden sollen<br/> UDP<br/> User Datagram Protocol ist ein minimales,<br/> verbindungsloses Netzwerkprotokoll, das zur<br/> Transportschicht der Internetprotokollfamilie gehört<br/> NFS<br/> Network File System ist ein von Sun Microsystems<br/> entwickeltes Protokoll, das den Zugriff auf Dateien<br/> über ein Netzwerk ermöglicht<br/> FTP<br/> File Transfer Protocol ist ein Netzwerkprotokoll zur<br/> Übertragung von Dateien über IP-Netzwerke<br/> Portnummer<br/> ist in Rechnernetzen eine Netzwerkadresse, mit der das<br/> Betriebssystem die Datenpakete eines Transportprotokolls<br/> zu einem Prozess zuordnet<br/> /etc/services<br/> ordnet Namen den Ports zu z.B. SSH, FTP, DNS u.s.w.<br/> 0-1023<br/> System Ports, Server-Ports (IANA), diese Ports werden<br/> auch „well-known Ports“ genannt und sind für<br/> Netzwerkdienste vorgesehen<br/> 1024-49151<br/> User Ports, diese Ports sind für registrierte<br/> Netzwerkdienste vorgesehen<br/> 49152-65535<br/> Dynamic Ports, diese Ports sind für eine dynamische<br/> Zuweisung durch das Betriebssystem vorgesehen<br/> 9.1. /etc/network/interfaces<br/> allow-hotplug eth0<br/> Netzwerkkabel im Berieb umstecken<br/> iface eth0 inet static<br/> static feste IP sonst dhcp<br/> address 192.168.10.97/24<br/> IP-Adresse<br/> gateway 192.168.10.1<br/> Gateway-Adresse<br/> dns-nameservers 192.168.10.1 192.168.20.1<br/> 1. und 2. DNS-Server<br/> dns-search example.net<br/> Domainname des DNS-Servers<br/> 74<br/> <hr/> <a name=75></a>10. E-Mail<br/> E-Mail im Deutschen kurz Mail; englisch electronic mail für „elektronische Post“ oder<br/> „elektronischer Brief“ ist zum einen ein System zur computerbasierten Verwaltung von<br/> briefähnlichen Nachrichten und deren Übertragung über Computernetzwerke, insbe-<br/> sondere über das Internet. Zum anderen werden auch die auf diesem elektronischen<br/> Weg übertragenen Nachrichten selbst als E-Mails bezeichnet.<br/> 10.1. Verwendung von E-Mail<br/> sudo apt install mailutils postfix<br/> installiert mailx und MTA-Postfix<br/> sudo dpkg-reconfigure postfix<br/> postfix nochmal konfigurieren<br/> sudo apt install postfix-pcre dovecot-imapd<br/> für den Mail-Server installieren<br/> echo "Inhalt" | mailx -s "Betreff" user@Domain E-Mail verschicken<br/> E-Mail beim Starten verschicken<br/> /lib/systemd/system/mailx-start.service<br/> [Unit]<br/> Description=Boot Mails<br/> After=postfix.service<br/> [Service]<br/> Type=simple<br/> ExecStart=/usr/bin/sh -c ’echo "Inhalt" | mailx -s "Betreff" user@domain’<br/> [Install]<br/> WantedBy=multi-user.target<br/> E-Mail beim Beenden verschicken (kommt erst beim Booten an)<br/> /lib/systemd/system/mailx-stop.service<br/> [Unit]<br/> Description=Boot Mails<br/> After=shutdown.target<br/> [Service]<br/> Type=simple<br/> ExecStart=/usr/bin/sh -c ’echo "Inhalt" | mailx -s "StopBetreff" user@domain’<br/> 75<br/> <hr/> <a name=76></a>10. E-Mail<br/> [Install]<br/> WantedBy=multi-user.target<br/> danach<br/> sudo systemctl enable mailx-start.service<br/> sudo systemctl enable mailx-stop.service<br/> 76<br/> <hr/> <a name=77></a>11. Apache<br/> 11.1. Einleitung<br/> Der Apache Webserver ist ein Programm das im Netzwerk(WWW), bei Anfragen mit<br/> einem Webbrowser, Websites(HTTP-Protokoll) ausgeben kann.<br/> Die Anfragen werden als URL angegeben. Beispiel: Schema://Hostname:Port/Server-<br/> Pfad -> http://www.apache.org:80/manual/<br/> 11.2. Kompilieren und Installieren<br/> 11.2.1. Anforderungen<br/> • Apache-Quellcode 1.3, erhältlich bei http://www.apache.org/<br/> • mod_ssl 1.3, erhältlich bei http://www.modssl.org/<br/> • Apache-Quellcode 2.0, erhältlich bei http://www.apache.org/<br/> • OpenSSL-Quellcode 0.9.x, erhältlich bei http://www.openssl.org/<br/> • Linux ab 2.4.xx(z.B.Debian Sarge 3.1), libgdbm2-devel(ndbm.h -> gdbm-ndbm.h)<br/> • ANSI-C-Compiler und Generierungswerkzeuge, GNU C Compiler (GCC) ab Ver-<br/> sion 2.7.2, wesentliche Generierungswerkzeuge wie make<br/> • Zeitgenauigkeit bewahren, ntpdate oder xntpd(NTP)<br/> • Perl 5(optional), Version ab 5.003 http://www.perl.com/<br/> • PureFTPd(optional), Version ab 5.003 http://www.perl.com/<br/> 11.2.2. Vorbereitungen<br/> su<br/> als root anmelden<br/> mkdir /usr/local/src<br/> das Verzeichnis /usr/local/src anlegen,<br/> wenn es noch nicht vorhanden ist<br/> chmod 777 /usr/local/src<br/> Verzeichnis-Rechte setzen<br/> ln -s /usr/include/gdbm-ndbm.h /usr/include/ndbm.h<br/> Link zu ndbm.h<br/> exit<br/> root abmelden<br/> cp Quelldateien /usr/local/src<br/> Quelldateien kopieren<br/> 77<br/> <hr/> <a name=78></a>11. Apache<br/> 11.2.3. OpenSSL<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz openssl-0.9.7d.tar.gz<br/> Quelldateien entpacken<br/> cd openssl-0.9.7d<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./config --help<br/> Hilfe zu den möglichen Optionen<br/> ./config --prefix=/usr/local/openssl/0.9.7d<br/> Codebaum konfigurieren und<br/> Installations-Verzeichnis angeben<br/> make<br/> Programm herstellen<br/> make test<br/> Programm testen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> ln -s /usr/local/openssl/0.9.7d /usr/local/openssl/current<br/> Link zu OpenSSL<br/> exit<br/> root abmelden<br/> 11.2.4. Apache 1.3 und SSL<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz apache_1.3.31.tar.gz<br/> Quelldateien entpacken<br/> tar xvfz mod_ssl-2.8.19-1.3.31.tar.gz<br/> Quelldateien entpacken<br/> cd apache_1.3.31<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure --help<br/> Hilfe zu den möglichen Optionen<br/> cd ../mod_ssl-2.8.19-1.3.31<br/> ./configure --help<br/> Hilfe zu den möglichen Optionen<br/> ./configure --with-apache=../apache_1.3.31<br/> --with-ssl=../openssl-0.9.7d<br/> --prefix=/usr/local/apache/1.3.31<br/> --datadir=/srv/www<br/> --enable-module=most<br/> --enable-shared=max<br/> --enable-module=ssl<br/> cd ../apache_1.3.31<br/> in das Quelldatei-Verzeichnis wechseln<br/> make<br/> Programm herstellen<br/> make certificate TYPE=custom<br/> Zertifikat erzeugen<br/> Angaben zu der Certificate Authority<br/> Signature Algorithm ((R)SA or (D)SA) [R]:R<br/> 1. Country Name<br/> (2 letter code) [XY]:DE<br/> 2. State or Province Name<br/> (full name)<br/> [Snake Desert]:Niedersachsen<br/> 3. Locality Name<br/> (eg, city)<br/> [Snake Town]:Salzgitter<br/> 4. Organization Name<br/> (eg, company)<br/> [Snake Oil, Ltd]:Komtek<br/> 5. Organizational Unit Name (eg, section)<br/> [Certificate Authority]:CA<br/> 78<br/> <hr/> <a name=79></a>11.2. Kompilieren und Installieren<br/> 6. Common Name<br/> (eg, CA name)<br/> [Snake Oil CA]:Komtek CA<br/> 7. Email Address<br/> (eg, name@FQDN) [ca@snakeoil.dom]:ca@komtek.de<br/> 8. Certificate Validity<br/> (days)<br/> [365]:365<br/> Certificate Version (1 or 3) [3]:3<br/> Angaben zum Serverzertifikat<br/> 1. Country Name<br/> (2 letter code) [XY]:DE<br/> 2. State or Province Name<br/> (full name)<br/> [Snake Desert]:Niedersachsen<br/> 3. Locality Name<br/> (eg, city)<br/> [Snake Town]:Salzgitter<br/> 4. Organization Name<br/> (eg, company)<br/> [Snake Oil, Ltd]:Komtek<br/> 5. Organizational Unit Name (eg, section)<br/> [Webserver Team]:Webmaster<br/> 6. Common Name<br/> (eg, FQDN)<br/> [www.snakeoil.dom]:www.komtek.de<br/> 7. Email Address<br/> (eg, name@fqdn) [www@snakeoil.dom]:www@www.komtek.de<br/> 8. Certificate Validity<br/> (days)<br/> [365]:365<br/> Certificate Version (1 or 3) [3]:3<br/> Schlüssel verschlüsseln<br/> Encrypt the private key now? [Y/n]: n<br/> Encrypt the private key now? [Y/n]: n<br/> su<br/> als root anmelden<br/> make install<br/> groupadd wwwadmin<br/> Gruppe wwwadmin anlegen<br/> chown -R nobody:wwwadmin /srv/www<br/> Rechte für das www-Verzeichnis setzen<br/> ln -s /usr/local/apache/1.3.31 /usr/local/apache/current<br/> Link zu Apache 1.3<br/> ln -s /usr/local/apache/current/conf /etc/apache<br/> Link zu den Konfigurationen<br/> ln -s /usr/local/apache/current/logs /var/log/apache<br/> Link zu den Logdateien<br/> ln -s /usr/local/apache/current/bin/apachectl /usr/local/bin<br/> Link zu apachectl<br/> ln -s /usr/local/apache/current/bin/apachectl /etc/init.d/apache<br/> Link zu den Startdateien<br/> cd /etc/rc5.d<br/> in den Start-Runlevel wechseln<br/> ln -s ../init.d/apache S20apache<br/> Link zum automatischen Starten<br/> cd ../rc0.d<br/> in den Stopp-Runlevel wechseln<br/> ln -s ../init.d/apache K20apache<br/> Link zum automatischen Beenden<br/> cd ../rc6.d<br/> in den Start-Runlevel wechseln<br/> ln -s ../init.d/apache K20apache<br/> Link zum automatischen Beenden<br/> exit<br/> root abmelden<br/> 79<br/> <hr/> <a name=80></a>11. Apache<br/> 11.2.5. Apache2<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz httpd-2.0.51.tar.gz<br/> Quelldateien entpacken<br/> cd httpd-2.0.51<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure --help<br/> Hilfe zu den möglichen Optionen<br/> ./configure --prefix=/usr/local/apache2/2.0.51<br/> --with-ssl=../openssl-0.9.7d<br/> --datadir=/srv/www2<br/> --enable-module=most<br/> --enable-shared=max<br/> --enable-module=ssl<br/> --with-port=81<br/> da auf 80 schon der Apache 1.3 läuft<br/> make<br/> Programm herstellen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren (als root!)<br/> groupadd wwwadmin<br/> Gruppe wwwadmin anlegen<br/> chown -R nobody:wwwadmin /srv/www2<br/> Rechte für das www-Verzeichnis setzen<br/> ln -s /usr/local/apache2/2.0.51 /usr/local/apache2/current<br/> Link zu Apache 2<br/> ln -s /usr/local/apache2/current/conf /etc/apache2<br/> Link zu den Konfigurationen<br/> ln -s /usr/local/apache2/current/logs /var/log/apache2<br/> Link zu den Logdateien<br/> ln -s /usr/local/apache2/current/bin/apachectl /usr/local/bin/apachectl2<br/> Link zu apachectl<br/> ln -s /usr/local/apache2/current/bin/apachectl /etc/init.d/apache2<br/> Link zu den Startdateien<br/> cd /etc/rc5.d<br/> in den Start-Runlevel wechseln<br/> ln -s ../init.d/apache2 S20apache2<br/> Link zum automatischen Starten<br/> cd ../rc0.d<br/> in den Stopp-Runlevel wechseln<br/> ln -s ../init.d/apache2 K20apache2<br/> Link zum automatischen Beenden<br/> cd ../rc6.d<br/> in den Start-Runlevel wechseln<br/> ln -s ../init.d/apache2 K20apache2<br/> Link zum automatischen Beenden<br/> exit<br/> root abmelden<br/> 11.2.6. Testen<br/> /etc/init.d/apache start<br/> Apache1.3 starten<br/> /etc/init.d/apache2 start<br/> Apache2 starten<br/> Browser http://localhost/<br/> Apache1.3 testen<br/> Browser http://localhost:81/<br/> Apache2 testen<br/> /etc/init.d/apache stop<br/> Apache1.3 beenden<br/> /etc/init.d/apache2 stop<br/> Apache2 beenden<br/> 80<br/> <hr/> <a name=81></a>11.2. Kompilieren und Installieren<br/> 11.2.7. Upgrade<br/> ./config.nice<br/> aus der letzten Installation entnehmen,<br/> Apache2<br/> 11.2.8. PureFTPd<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz pure-ftpd-1.0.20.tar.gz<br/> Quelldateien entpacken<br/> cd pure-ftpd-1.0.20<br/> Verzeichnis wechseln<br/> ./configure --prefix=/usr/local/pure-ftpd/1.0.20 --with-language=german<br/> Makefile herstellen<br/> make<br/> Programm herstellen<br/> make check<br/> Programm prüfen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> ln -s /usr/local/pure-ftpd/1.0.20 /usr/local/pure-ftpd/current<br/> Link zu pure-ftpd<br/> mkdir /usr/local/pure-ftpd/current/etc Verzeichnis etc anlegen<br/> cp configuration-file/pure-ftpd.conf /usr/local/pure-ftpd/current/etc<br/> Konfiguration kopieren<br/> cp pureftpd-*.conf /usr/local/pure-ftpd/current/etc<br/> Konfigurationen kopieren<br/> ln -s /usr/local/pure-ftpd/current/etc /etc/pure-ftpd<br/> Link zu den Konfigurationen<br/> vi /etc/init.d/pure-ftpd<br/> Startdatei für pure-ftpd anlegen<br/> #!/bin/bash<br/> case "$1" in<br/> start)<br/> echo "pureftpd wird gestartet ..."<br/> cd /usr/local/pure-ftpd/current<br/> ./sbin/pure-ftpd &<br/> ;;<br/> stop)<br/> echo "pureftpd wird heruntergefahren ..."<br/> kill -TERM ‘cat /var/run/pure-ftpd.pid‘<br/> ;;<br/> *)<br/> echo "Usage: $0 {start|stop}"<br/> exit 1<br/> ;;<br/> esac<br/> exit 0<br/> 81<br/> <hr/> <a name=82></a>11. Apache<br/> chmod 755 /etc/init.d/pure-ftpd<br/> Rechte setzen<br/> cd /etc/rc5.d<br/> Verzechnis wechseln<br/> ln -s ../init.d/pure-ftpd S20pure-ftpd Link zum automatischen Starten<br/> cd /etc/rc0.d<br/> Verzechnis wechseln<br/> ln -s ../init.d/pure-ftpd K20pure-ftpd Link zum automatischen Beenden<br/> cd /etc/rc6.d<br/> Verzechnis wechseln<br/> ln -s ../init.d/pure-ftpd K20pure-ftpd Link zum automatischen Beenden<br/> useradd -g wwwadmin -d /srv -s /bin/false wwwadmin<br/> Benutzer wwwadmin anlegen<br/> passwd wwwadmin<br/> Passwort setzen<br/> NoAnonymous<br/> yes<br/> UnixAuthentication<br/> yes<br/> MinUID<br/> 1000<br/> MinUID<br/> 1000<br/> TrustedGID<br/> 1002<br/> exit<br/> root abmelden<br/> 11.3. Apache starten<br/> 11.3.1. Apache starten<br/> Unter UNIX/Linux wird das httpd-Progamm als Daemon ausgeführt.<br/> apachectl start<br/> Apache starten<br/> rcapache start<br/> Apache starten(SuSE-Linux)<br/> 11.3.2. Wie der Apache startet<br/> • apachectl ist die empfohlene Methode, das httpd-Programm zu starten<br/> • apachectl setzt verschiedene Umgebungsvariablen und startet das httpd-Programm<br/> • apachectl reicht alle Kommandozeilenargumente durch<br/> • als erstes liest der httpd die Konfigurationsdatei httpd.conf ein, die beim Kom-<br/> pilieren festgelegt wurde<br/> • zur Laufzeit kann der Ablageort geändert werden, z.B. apachectl -f /etc/apache2/httpd.conf<br/> • beim erfolgreicehn Start, trennt sich der Server vom Terminal ab<br/> • bis zum Port 1024 muss der Apache root-Berechtigung besitzen<br/> • der Haupt-httpd-Prozess läuft unter dem Benutzer root weiter<br/> 82<br/> <hr/> <a name=83></a>11.3. Apache starten<br/> • ist der Server gestartet, öffnet er seine Log-Dateien<br/> • der Apache startet mehrere Kind-Prozesse<br/> • die Kind-Prozesse werden unter weniger privilegierten Benutzerkennungen aus-<br/> geführt(z.B. nobody, wwwrun ...)<br/> • die Kind-Prozesse lauschen und beantworten Anfragen von Clients<br/> • die Kind-Prozesse werden von dem ausgewählten Multi-Processing-Modul(Apache-<br/> MPM prefork UNIX/Linux) gesteuert<br/> 11.3.3. Fehler während des Hochfahrens<br/> • wird während des Hochfahrens einen schwerer Fehler feststellt, schreibt der Apa-<br/> che eine Nachricht auf die Konsole oder ins ErrorLog, bevor er sich selbst beendet<br/> • eine der häufigsten Fehlermeldungen ist Ünable to bind to Port ...", der Server<br/> läuft schon oder hat keine root-Berechtigung<br/> 11.3.4. Automatisch starten und beenden<br/> • apachectl zu den Startdateien des Systems hinzufügen (rc.local, rc.x-Verzeichnis)<br/> z.B. SuSE-Linux:<br/> cd /etc/rc.d/rc3.d/<br/> ln -s ../apache S16apache<br/> Link zum automatischen Starten<br/> in Runlevel 3 anlegen<br/> ln -s ../apache K06apache<br/> Link zum automatischen Beenden<br/> in Runlevel 3 anlegen<br/> z.B. Debian:<br/> cd /etc/rc3.d/<br/> ln -s ../init.d/apache2 S20apachectl<br/> Link zum automatischen Starten in Runlevel 5 anlegen<br/> cd /etc/rc0.d/<br/> ln -s ../init.d/apache2 K20apachectl<br/> Link zum automatischen Beenden in Runlevel 0 anlegen<br/> 11.3.5. Weitere Informationen<br/> http://localhost/manual/programs/httpd.html<br/> http://localhost/manual/de/programs/httpd.html<br/> http://localhost/manual/programs/apachectl.html<br/> http://localhost/manual/de/programs/apachectl.html<br/> 83<br/> <hr/> <a name=84></a>11. Apache<br/> 11.4. Beenden und Neustarten<br/> 11.4.1. Einleitung<br/> • um den Apache zu stoppen oder neu zu starten, muss ein Signal an den laufenden<br/> httpd-Prozess gesendet werden<br/> • es gibt zwei Möglichkeiten Signale zu senden, kill und apachectl<br/>• auf dem System laufen mehrere httpd-Programme<br/>• nur an den Elternprozess sollte ein Signal gesendet werden, /var/log/apache2/httpd.pid<br/>• es gibt drei Signale die an den Elternprozess gesendet werden können, TERM -<br/> beenden, HUP - neustarten, USR1 - unterbrechungsfreier Neustart<br/> • es wird empfohlen apachectl zu benutzen<br/>• mit tail -f /var/log/apache2/error_log"kann die Signalisierung beobachtet wer-<br/> den<br/> 11.4.2. Beenden<br/> Signal: TERM<br/> apachectl stop<br/> sendet das TERM(stop) signal an<br/> den Elternprozess<br/> rcapache stop<br/> Apache stoppen<br/> bei SuSE-Linux<br/> kill -TERM ‘cat /var/log/apache2/httpd.pid‘<br/> sendet das TERM(stop) signal an<br/> den Elternprozess<br/> • das Senden des TERM(stop)-Signals an den Elternprozess veranlasst alle seine<br/> Kindprozesse sich zu beenden<br/> • es dauert etwas bis alle Kindprozesse beendet sind<br/>• danach beendet sich der Elternprozess<br/>• alle gerade bearbeiteten Anfragen werden abgebrochen<br/>• es werden keine weiteren Anfragen mehr bedient<br/> 11.4.3. Unterbrechungsfreier Neustart<br/> Signal: USR1<br/> apachectl graceful<br/> sendet das USR1 signal an<br/> den Elternprozess<br/> kill -USR1 ‘cat /var/log/apache2/httpd.pid‘<br/> sendet das USR1 signal an<br/> den Elternprozess<br/> 84<br/> <hr/> <a name=85></a>11.4. Beenden und Neustarten<br/> • das Senden des USR1-Signals an den Elternprozess veranlasst alle seine Kind-<br/> prozesse sich zu beenden<br/> • die Kindprozesse bearbeiten noch die letzten Anfragen und beenden sich dann<br/> • der Elternprozess liest, wärend die Kindprozesse noch laufen, seine Konfigurati-<br/> onsdateien erneut ein und öffnet seine Logdateien neu<br/> • die Kindprozesse werden wieder gestartet<br/> • die Serverstatistiken(mod_status) werden nicht auf Null zurückgesetzt<br/> • ist die Konfigurationsdatei fehlerhaft, wird der Elternprozess nicht neu gestartet<br/> • die Kindprozesse bearbeiten noch die letzten Anfragen und beenden sich dann<br/> • wäred noch die letzten Anfragen bearbeitet werden kann der httpd nicht gestartet<br/> werden<br/> 11.4.4. Neustarten<br/> Signal: HUP<br/> apachectl restart<br/> sendet das HUP signal an<br/> den Elternprozess<br/> rcapache restart<br/> Apache stoppen und dann starten<br/> bei SuSE-Linux<br/> kill -HUP ‘cat /var/log/apache2/httpd.pid‘<br/> sendet das HUP signal an<br/> den Elternprozess<br/> • das Senden des HUP(wie TERM)-Signals an den Elternprozess veranlasst alle<br/> seine Kindprozesse sich zu beenden<br/> • der Elternprozess liest seine Konfigurationsdateien erneut ein und öffnet seine<br/> Logdateien neu<br/> • die Kindprozesse werden wieder gestartet und setzen die Bedienung von Zugriffen<br/> fort<br/> • die Serverstatistiken(mod_status) werden auf Null zurückgesetzt<br/> • ist die Konfigurationsdatei fehlerhaft, wird der Elternprozess nicht neu gestartet<br/> 11.4.5. Anhang: Syntax überprüfen<br/> apachectl -t<br/> überprüft den Syntax der Konfigurationsdatei, so kann<br/> vermieden werden das der Apache nicht neu startet<br/> 85<br/> <hr/> <a name=86></a>11. Apache<br/> 11.5. Anhang<br/> 11.5.1. Zu den Dateien<br/> /etc/apache/<br/> /etc/apache2/<br/> /etc/httpd/<br/> /etc/httpd2/<br/> access.conf<br/> Zugriffs-Konfiguration<br/> httpd.conf<br/> Apache Konfigurationsdatei<br/> mime.types<br/> Zuweisung von Dateiendungen<br/> srm.conf<br/> Resource-Konfiguration<br/> /var/log/apache/<br/> /var/log/apach2/<br/> /var/log/httpd/<br/> /var/log/httpd2/access_log<br/> Zugriffsmeldungen<br/> error_log<br/> Fehlermeldungen<br/> httpd.pid<br/> Hauptprozessnummer<br/> 11.6. Benutzerhandbuch<br/> 11.6.1. httpd.conf<br/> ServerType standalone<br/> Apache nicht ueber den inetd starten.<br/> ServerRoot "/www/"<br/> Diese Einstellung sorgt dafür, dass der Apache<br/> ausgehend von diesem Verzeichnis die<br/> Verzeichnisse fuer Dokumente, Logfiles und<br/> Konfigurationsdateien sucht.<br/> LockFile /var/lock/subsys/httpd/httpd.accept.lock<br/> Spezifizert das Lock<br/> File.<br/> PidFile /var/run/httpd.pid<br/> Datei, in der sich die Prozess ID des Httpd-<br/> Daemons befindet.<br/> ResourceConfig /etc/httpd/srm.conf<br/> Diese Datei enthaelt Angaben zur<br/> Formatierung und dem Aussehen der<br/> automatisch erzeugten Verzeichnisindizes<br/> (FancyIndexing) sowie Angaben zu den einzelnen<br/> Dateitypen.<br/> AccessConfig /etc/httpd/access.conf<br/> Datei zur Definition der Funktionen und<br/> 86<br/> <hr/> <a name=87></a>11.6. Benutzerhandbuch<br/> Zugriffsrechte bestimmter Verzeichnisse<br/> Timeout 300<br/> Zeitlimit fuer Client-Anfragen in Sekunden.<br/> KeepAlive On<br/> Unterstuezung der HTTP/1.1 Persistent<br/> Connections. Dardurch koennen ueber eine TCP-<br/> Verbindung mehrere Anfragen an den Server<br/> geschickt werden.<br/> MaxKeepAliveRequests 10<br/> Es werden 10 aufeinanderfolgende Anfragen<br/> innerhalb einer Keep-Alive-Verbindung erlaubt.<br/> KeepAliveTimeout 15<br/> Der Server wartet maximal 15 Sekunden auf<br/> weitere Anfragen des Clients bei einer Keep-<br/> Alive-Verbindung.<br/> MinSpareServers 5<br/> Es existieren immer mindestens 5 und hoechstens<br/> MaxSpareServers 10<br/> 10 leerlaufende Prozesse.<br/> StartServers 5<br/> Es werden automatisch 5 Kindprozesse des Apache<br/> gestartet.<br/> MaxClients 150<br/> Maximum von gleichzeitig laufenden<br/> Server-Prozessen.<br/> MaxRequestsPerChild 30<br/> Nach 30 Anfragen wird der Kindprozess beendet<br/> und gegebenfalls ein neuer gestartet.<br/> Listen 12.34.56.78:80<br/> Falls mehrere Interfaces bzw. IP Adressen fuer<br/> den Rechner vorhanden sind, kann mit Listen<br/> festgelegt werden, welche Ports fuer welche<br/> Adresse abgehoert werden sollen.<br/> Port 80<br/> Standalone Server Port 80<br/> User wwwrun<br/> Nach dem Oeffnen des Ports (als root), wechselt<br/> Group nogroup<br/> Apache zu der als User und Group angegebenen<br/> UID bzw. GID. Die Zuweisung kann entweder durch<br/> angeben des Namens oder durch # gefolgt von der<br/> ID erfolgen.<br/> ServerAdmin dv@mynet.loc<br/> Bei Fehlermeldungen wird diese Adresse dem<br/> Client zurueckgeliefert.<br/> ServerName www.mynet.loc<br/> Wird bei Redirects benoetigt (wenn man<br/> 87<br/> <hr/> <a name=88></a>11. Apache<br/> beispielsweise durch Eingabe von<br/> http://www.mynet.loc/main auf das Verzeichnis<br/> main zugreifen will, erzeugt der Apache einen<br/> Redirect auf http://www.mynet.loc/main/ . Ohne<br/> ServerName würde der richtige Hostname des<br/> Rechners zurückgeliefert werden.<br/> DocumentRoot "/www/htdocs/"<br/> Hier werden die HTML Seiten abgelegt.<br/> AllowOverride All<br/> Konfigurationsanweisungen in der .htaccess<br/> beachten<br/> UserDir public_html<br/> Homepage-Directory der Benutzer<br/> http://server/~benutzer/<br/> DirectoryIndex index.html index.htm index.php<br/> Wird nur ein Directory<br/> angegeben, wird automatisch die<br/> angegebene Datei gesucht und angezeigt.<br/> AccessFileName .htaccess<br/> Name der .htaccess<br/> DefaultType text/plain<br/> Dateien ohne Endung werden wie Text-Files<br/> behandelt.<br/> HostnameLookups Off<br/> Es sollen keine DNS-Lookups ausgefuert werden.<br/> ErrorLog /var/log/httpd/error_log<br/> Datei zur Aufnahme von Fehlermeldungen<br/> und sonstigen Info Meldungen<br/> (mod_log_config).<br/> LogLevel warn<br/> LogLevel :-) debug, info, notice, warn, error,<br/> crit,alert,emerg.<br/> LogFormat ...<br/> Legt das Format der Logdatei(en) fest.<br/> CustomLog /var/log/httpd/access_log common<br/> Erzeugt die Datei http.access im<br/> Common Log Format.<br/> ServerSignature Off<br/> ServerSignature kann man auf "Off" stellen,<br/> damit ein Zugriff auf eine nichtexistente Seite<br/> nicht Software und Versionsnummer anzeigt,<br/> jedoch bringt das nicht allzuviel, da im HTTP<br/> Header diese und wesentlich mehr Informationen<br/> zu finden sind.<br/> 88<br/> <hr/> <a name=89></a>11.6. Benutzerhandbuch<br/> Alias /icons/ "/www/icons/"<br/> Alias-Namen fuer bestimmte Verzeichnisse. Diese<br/> werden anschliessend behandelt, als wenn sie<br/> sich unter Document-Root befinden wuerden.<br/> Achtung! Die Einstellungen gelten auch fuer<br/> virtuelle Hosts.<br/> IndexOptions FancyIndexing<br/> Als Optionen sind angebbar:<br/> Fancyindexing - ausführliche Verzeichnisliste<br/> (Icons, Name, Größe, Kurzbeschreibung etc.)<br/> SuppressLastModified - keine Angabe der letzten<br/> Modifikationszeit<br/> SuppressSize - keine Angabe der Filegröße<br/> SuppressDescription - keine Angabe einer<br/> Kurzbeschreibung<br/> ScanHTMLTitles - HTML-Titel als Kurzbeschreibung<br/> (Achtung: Rechnerlast!)<br/> ReadmeName README<br/> Die Datei README wird bei der Ausgabe des<br/> Verzeichnisbaums angezeigt.<br/> HeaderName HEADER<br/> Die Datei HEADER wird am Anfangs-Tag in den<br/> Verzeichnisbaums angezeigt.<br/> IndexIgnore .??* *~ *#<br/> RCS CVS *,v *,t<br/> Diese Dateien werden nicht durch<br/> FancyIndexing angezeigt.<br/> TypesConfig /etc/httpd/mime.types<br/> Enthaelt die Zuweisungen Dateiendung<br/> zu Mime-Typ<br/> BrowserMatch "Mozilla/2" nokeepalive<br/> Hiermit wird der Apache angewiesen, auf<br/> bestimmte Browser unterschiedlich zu<br/> reagieren.<br/> 11.6.2. Access Control List File (.htaccess)<br/> Die Datei .htaccess muß in dem zu schützenden Ordner angelegt werden.<br/> AuthUserFile /www/.htpasswd<br/> Pfad zu einer Passwortdatei<br/> AuthGroupFile /dev/null<br/> AuthName "Tux ;-)"<br/> AuthType Basic<br/> <Limit GET POST PUT><br/> require user webmaster<br/> </Limit><br/> 89<br/> <hr/> <a name=90></a>11. Apache<br/> AuthUserFile /www/.htpasswd<br/> Pfad zu einer Passwortdatei<br/> AuthGroupFile /www/.htgroup<br/> Pfad zu einer Gruppendatei<br/> AuthName "Tux ;-)"<br/> AuthType Basic<br/> <Limit GET><br/> require group logins<br/> </Limit><br/> 11.6.3. Gruppendatei (.htgroup)<br/> cat .htgroup --><br/> logins: benutzer1 benutzer2 ...<br/> 11.6.4. Passwort-Datei (.htpasswd)<br/> htpasswd -c Passwortdatei Benutzername<br/> erzeugt eine neue Passwortdatei<br/> und ein Benutzer<br/> htpasswd Passwortdatei Benutzername<br/> erzeugt ein Benutzer<br/> 11.6.5. Erstellen eines SSL-Zertifikats<br/> openssl req -new > firma.csr<br/> openssl rsa -in privkey.pem -out firma.key<br/> openssl x509 -in firma.csr -out firma.crt -req -signkey firma.key -days 10000<br/> cp firma.key /etc/httpd/ssl.key/server.key<br/> cp firma.crt /etc/httpd/ssl.crt/server.crt<br/> cp firma.csr /etc/httpd/ssl.csr/server.csr<br/> chown root privkey.pem<br/> chmod 400 privkey.pem<br/> 11.6.6. LinkIcon (favicon.ico)<br/> Was ist ein favicon.ico?<br/> Immer wenn ein IE5 Benutzer eine Seite seinen Favoriten hinzufügt, sucht der IE5<br/> nach einem Icon das er anstatt des Standardicons in der Favoritenliste anzeigen kann.<br/> Er sucht zuerst im aktuellen ’Verzeichnis’ und geht dann Ebene für Ebene weiter bis<br/> zum Wurzelverzeichnis. Nehmen wir mal an, das aktuelle Dokument befindet sich un-<br/> ter http://www.bjoernsworld.de/suchmaschinen/ optimieren/aufraeumen.html, dann<br/> wird der IE 5 so nach dem Icon suchen:<br/> http://www.bjoernsworld.de/suchmaschinen/optimieren/favicon.ico<br/> http://www.bjoernsworld.de/suchmaschinen/favicon.ico<br/> http://www.bjoernsworld.de/favicon.ico<br/> 90<br/> <hr/> <a name=91></a>11.6. Benutzerhandbuch<br/> Er sucht solange, bis er eines gefunden hat oder bei /favicon.ico angekommen ist.<br/> Das gilt nur für den Internet Explorer Version 5.0 und 5.01; Version 5.5 sucht nur noch<br/> nach /favicon.ico selbstständig. Hat er eins gefunden, zeigt er es in der Favoritenliste<br/> an und beim erneuten Besuch der Seite auch links neben der URL in der Adresszeile:<br/> Welches Format hat das favicon.ico?<br/> Das favicon.ico ist ein Icon im Microsoft Windows Icon File Format. Windows Be-<br/> nutzer sehen täglich solche Icons auf ihrem Desktop, in ihrem Startmenü, etc. In der<br/> Favoritenliste wird dieses Icon in der Größe 16x16 Pixel dargestellt, daher sollte man<br/> das Icon auch in dieser Größe erstellen. Die Farbzahl beschränkt sich auf 16 bzw. 256<br/> Farben, wobei eine als transparente Farbe gilt.<br/> Welchen MIME-Type hat das favicon.ico?<br/> Der korrekte MIME-Type für das favicon.ico ist image/x-icon. Beim Apache Webserver<br/> kann man das in einer .htaccess mit der Zeile:<br/> AddType image/x-icon .ico<br/> konfigurieren.<br/> Wie erstelle ich ein favicon.ico?<br/> Man braucht dafür einen Icon Editor wie man sie zuhauf bei Tucows oder Winfiles. com<br/> finden kann. Mit z.B. dem Freeware Tool Irfan View ist es ohne Probleme möglich,<br/> eine Gifdatei in das Icon Format zu konvertieren. Macintosh Benutzer können den<br/> GraphicConverter von Thorsten Lemke oder den Iconographer von MscapeSoftware<br/> benutzen um das Icon zu erstellen. Bei favicon.com gibt es einen Online Editor in<br/> Java, mit dem man online sein eigenes favicon.ico erstellen kann.<br/> Wohin muss das favicon.ico?<br/> Wie oben schon gesagt, sucht der IE5, vor Version 5.5, zuerst im aktuellen ’Verzeichnis’<br/> und geht dann Ebene um Ebene nach oben, bis er unter http://host/favicon.ico ein<br/> Icon findet oder eben nicht. Man kann entweder in jedes Verzeichnis ein favicon.ico<br/> plazieren, oder im <HEAD> einer jeden HTML Datei auf ein Icon verweisen:<br/> <link rel="SHORTCUT ICON" href="/favicon.ico" title="external:/favicon.ico"><br/> Wenn der Apache Webserver mit mod_rewrite benutzt wird, kann man mit dieser<br/> Regel:<br/> RewriteEngine on<br/> RewriteRule ^(.+)/favicon\.ico$ /favicon.ico [R=permanent] [L]<br/> 91<br/> <hr/> <a name=92></a>11. Apache<br/> (z.B. in der .htaccess) alle Anfragen für favicons in Unterverzeichnissen auf das<br/> favicon.ico im Root-Verzeichnis der Domain umleiten.<br/> Wenn mod_rewrite nicht zur Verfügung steht, wohl aber Zugriff auf die Konfigu-<br/> rationsdateien Apache Web Servers, kann man in z.B. der <VirtualHost> Sektion<br/> folgenden Befehl einfügen:<br/> RedirectMatch Permanent ^(.+)/favicon\.ico$ http://server.de/favicon.ico<br/> Wie kann man diese Funktion abstellen?<br/> Es gibt meines Wissens nach keine Möglichkeit den IE5 dazu zu bringen, nicht nach<br/> dem favicon.ico zu suchen.<br/> Links zum Thema:<br/> http://www.favicon.de/<br/> http://www.favicon.com/<br/> http://wdvl.com/Authoring/Design/Images/Favicon/index.html<br/> http://msdn.microsoft.com/workshop/essentials/versions/ICPIE5.asp<br/> http://msdn.microsoft.com/workshop/Author/dhtml/howto/ShortcutIcon.asp<br/> http://www.winfiles.com/apps/98/icons-edit.html<br/> http://web.cip.com.br/flaviovs/sec/favicon/privacy.html<br/> http://web.cip.com.br/flaviovs/sec/favicon/index.html<br/> http://www.bjoernsworld.de/ie/398da66c.24234236@news.bjoern.hoehrmann.de.txt<br/> 92<br/> <hr/> <a name=93></a>12. MySQL<br/> 12.1. Einleitung<br/> MySQL ist eine Datenbank und phpMyAdmin eine Web-Oberfläche, um MySQL zu<br/> konfigurieren.<br/> 12.2. Kompilieren und Installieren<br/> 12.2.1. Anforderungen<br/> • MySQL-Quellcode 4.x.xx, erhältlich bei http://www.mysql.com/<br/> • Linux 2.x.xx<br/> • ANSI-C-Compiler und Generierungswerkzeuge, GNU C Compiler (GCC) ab Ver-<br/> sion 2.95.4, wesentliche Generierungswerkzeuge wie make<br/> • phpMyAdmin 2.x.x(optional), erhältlich bei http://www.phpmyadmin.net/, Web-<br/> Server, Apache 1 oder 2 mit PHP 4 oder 5<br/> 12.2.2. Vorbereitungen<br/> su<br/> als root anmelden<br/> mkdir /usr/local/src<br/> das Verzeichnis /usr/local/src anlegen,<br/> wenn es noch nicht vorhanden ist<br/> chmod 777 /usr/local/src<br/> Verzeichnis-Rechte setzen<br/> exit<br/> root abmelden<br/> cp Quelldateien /usr/local/src<br/> Quelldateien kopieren<br/> 12.2.3. MySQL<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz mysql-4.0.21.tar.gz<br/> Quelldateien entpacken<br/> cd mysql-4.0.21<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure --help<br/> Hilfe zu den miöglichen Optionen<br/> ./configure --prefix=/usr/local/mysql/4.0.21 --localstatedir=/var/mysql/data<br/> prefix: Installations-Verzeichnis<br/> localstatedir: Daten-Verzeichnis<br/> make<br/> Programm herstellen<br/> 93<br/> <hr/> <a name=94></a>12. MySQL<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren (als root!)<br/> ln -s /usr/local/mysql/4.0.21 /usr/local/mysql/current<br/> Link zu MySQL<br/> cp support-files/mysql.server /etc/init.d/mysql<br/> Startdatei kopieren<br/> chmod 755 /etc/init.d/mysql<br/> Dateirechte einstellen<br/> ln -s /etc/init.d/mysql /etc/rc5.d/S20mysql<br/> Link zum Starten in Runlevel5 anlegen<br/> ln -s /etc/init.d/mysql /etc/rc6.d/K20mysql<br/> Link zum Beenden in Runlevel6 anlegen<br/> ln -s /etc/init.d/mysql /etc/rc0.d/K20mysql<br/> Link zum Beenden in Runlevel0 anlegen<br/> groupadd mysql<br/> Gruppe mysql anlegen<br/> useradd -g mysql -d /usr/local/mysql/current -s /bin/false mysql<br/> Benutzer mysql anlengen<br/> mkdir -p /var/mysql/data<br/> Daten-Verzeichnis anlegen<br/> ./scripts/mysql_install_db --user=mysql initiale Datenbank installieren<br/> cd /usr/local/mysql/current<br/> in das mysql Verzeichnis wechseln<br/> cp share/mysql/my-medium.cnf /var/mysql/data/my.cnf<br/> Konfiguration anlegen<br/> chown -R root:mysql .<br/> Benutzer-Gruppen-Rechte setzen<br/> chown -R mysql:mysql /var/mysql/data<br/> Rechte für das Daten-Verzeichnis setzen<br/> /etc/init.d/mysql start<br/> mysql starten<br/> ./bin/mysqladmin -u root password ’geheim’<br/> Datenbank-Passwort setzen<br/> Achtung ! das Passwort steht danach in<br/> der ~/.bash_history<br/> 12.2.4. MySQL Testen<br/> ./bin/mysql -D mysql -u root -p<br/> Client starten und zugriff auf die<br/> Steuerungs-Datenbank nehmen<br/> mysql> show tables;<br/> Tabelle anzeigen<br/> +-----------------+<br/> | Tables_in_mysql |<br/> +-----------------+<br/> | columns_priv<br/> |<br/> | db<br/> |<br/> | func<br/> |<br/> | host<br/> |<br/> | tables_priv<br/> |<br/> | user<br/> |<br/> 94<br/> <hr/> <a name=95></a>12.2. Kompilieren und Installieren<br/> +-----------------+<br/> 6 rows in set (0.00 sec)<br/> mysql> exit;<br/> Client beenden<br/> Bye<br/> exit<br/> root abmelden<br/> 12.2.5. phpMyAdmin<br/> su<br/> als root anmelden<br/> cd /srv/www/htdocs<br/> in das Apache1.3-Verzeichnis wechseln<br/> cd /srv/www2/htdocs<br/> in das Apache2-Verzeichnis wechseln<br/> tar xvfj /usr/local/src/phpMyAdmin-2.5.7-pl1.tar.bz2<br/> Dateien entpacken<br/> ln -s phpMyAdmin-2.5.7-pl1 phpMyAdmin<br/> Link zu phpMyAdmin anlegen<br/> vi phpMyAdmin/config.inc.php<br/> phpMyAdmin anpassen<br/> $cfg[’PmaAbsoluteUri’] = ’http://localhost/phpMyAdmin/’;<br/> URL zu Apache1.3<br/> $cfg[’PmaAbsoluteUri’] = ’http://localhost:81/phpMyAdmin/’;<br/> URL zu Apache2<br/> $cfg[’Servers’][$i][’user’]<br/> = ’root’;<br/> // MySQL user<br/> $cfg[’Servers’][$i][’password’]<br/> = ’geheim’; // MySQL password<br/> vi phpMyAdmin/.htaccess<br/> htaccess anlegen<br/> AuthType Basic<br/> AuthName "PhpMyAdmin"<br/> AuthUserFile /srv/www/htdocs/phpMyAdmin/.htpasswd<br/> Apache1.3<br/> AuthUserFile /srv/www2/htdocs/phpMyAdmin/.htpasswd<br/> Apache2<br/> AuthGroupFile /dev/null<br/> <Limit GET POST><br/> require valid-user<br/> </Limit><br/> cd /usr/local/apache/current/bin<br/> Verzeichnis wechseln, Apache1.3<br/> cd /usr/local/apache2/current/bin<br/> Verzeichnis wechseln, Apache2<br/> ./htpasswd --help<br/> Hilfe zu htpasswd<br/> ./htpasswd -c /srv/www/htdocs/phpMyAdmin/.htpasswd root<br/> Apache1.3<br/> ./htpasswd -c /srv/www2/htdocs/phpMyAdmin/.htpasswd root<br/> Apache2<br/> vi /etc/apache/httpd.conf<br/> Apache1.3 anpassen<br/> 95<br/> <hr/> <a name=96></a>12. MySQL<br/> vi /etc/apache2/httpd.conf<br/> Apache2 anpassen<br/> <Directory "/srv/www/htdocs"><br/> Options Indexes FollowSymLinks MultiViews<br/> AllowOverride AuthConfig<br/> None -> AuthConfig<br/> Order allow,deny<br/> Allow from all<br/> </Directory><br/> /etc/init.d/apache graceful<br/> Einstellungen neu einlesen, Apache1.3<br/> /etc/init.d/apache2 graceful<br/> Einstellungen neu einlesen, Apache2<br/> exit<br/> root abmelden<br/> 96<br/> <hr/> <a name=97></a>13. PHP<br/> 13.1. Einleitung<br/> Wer hat PHP erfunden ?<br/> Der Kanada-Däne Rasmus Lerdorf !<br/> Was heist PHP ?<br/> Personal Home Page Tools<br/> Was ist PHP ?<br/> Eine einfache Skriptsprache. Sie wird direkt<br/> in HTML-Seiten eingefügt und vom Webserver<br/> interpretiert.<br/> Wie funktioniert PHP ?<br/> Der Browser schickt einen HTTP-Request an den<br/> Webserver. Der Server reagiert, liest die<br/> PHP-Seite ein, und führt die Skripte aus und<br/> schickt erst das fertig zusammengesetzte<br/> Dokument zurück an den Browser !<br/> LAMP - Linux-Apache-MySQL-PHP<br/> WAMP - Windows-Apache-MySQL-PHP<br/> 13.2. Kompilieren und Installieren<br/> 13.2.1. Anforderungen<br/> • PHP 4 oder 5, erhältlich bei http://www.php.net/<br/> • Linux ab 2.4.xx(z.B.Debian Sarge 3.1)<br/> • ANSI-C-Compiler und Generierungswerkzeuge, GNU C Compiler (GCC) ab Ver-<br/> sion 2.7.2, wesentliche Generierungswerkzeuge wie make<br/> • Webserver z.B. Apache 1.3 oder 2<br/> • GD-Library ab 2.x.x, erhältlich bei http://www.boutell.com/gd/, Freetype ab<br/> 2.x.x, erhältlich bei http://www.freetype.org/, Zlib ab 1.x.x, erhältlich bei http://www.gzip.org/zlib/,<br/> IJG JPEG, erhältlich bei http://www.ijg.org/<br/> 13.2.2. Vorbereitungen<br/> su<br/> als root anmelden<br/> mkdir /usr/local/src<br/> das Verzeichnis /usr/local/src anlegen,<br/> wenn es noch nicht vorhanden ist<br/> 97<br/> <hr/> <a name=98></a>13. PHP<br/> chmod 777 /usr/local/src<br/> Verzeichnis-Rechte setzen<br/> exit<br/> root abmelden<br/> cp Quelldateien /usr/local/src<br/> Quelldateien kopieren<br/> 13.2.3. Libraries für Zusatzfunktionen<br/> Freetype<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfj freetype-2.1.9.tar.bz2<br/> Quelldateien entpacken<br/> cd freetype-2.1.9<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure<br/> Codebaum konfigurieren<br/> make<br/> Programm herstellen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> exit<br/> root abmelden<br/> Zlib<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz zlib-1.2.1.tar.gz<br/> Quelldateien entpacken<br/> cd zlib-1.2.1<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure<br/> Codebaum konfigurieren<br/> make<br/> Programm herstellen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> exit<br/> root abmelden<br/> IJG JPEG<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfz jpegsrc.v6b.tar.gz<br/> Quelldateien entpacken<br/> cd jpeg-6b<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure --help<br/> Hilfe zu den möglichen Optionen<br/> ./configure --enable-shared<br/> --enable-static<br/> --prefix=/usr/local<br/> make<br/> Programm herstellen<br/> make test<br/> Programm testen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> exit<br/> root abmelden<br/> GD-Library<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> 98<br/> <hr/> <a name=99></a>13.2. Kompilieren und Installieren<br/> tar xvfz gd-2.0.28.tar.gz<br/> Quelldateien entpacken<br/> cd gd-2.0.28<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure<br/> Codebaum konfigurieren<br/> make<br/> Programm herstellen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> exit<br/> root abmelden<br/> 13.2.4. PHP<br/> cd /usr/local/src<br/> Verzeichnis wechseln<br/> tar xvfj php-5.0.1.tar.bz2<br/> Quelldateien entpacken<br/> cd php-5.0.1<br/> in das Quelldatei-Verzeichnis wechseln<br/> ./configure --help<br/> Hilfe zu den möglichen Optionen<br/> ./configure --with-apxs=/usr/local/apache/current/bin/apxs<br/> Apache 1.3 oder<br/> --with-apxs2=/usr/local/apache2/current/bin/apxs<br/> Apache 2<br/> --with-mysql=/usr/local/mysql/current<br/> --with-zlib<br/> --with-ftp<br/> --with-gd<br/> --with-jpeg-dir=/usr/local/lib<br/> --enable-versioning<br/> --enable-track-vars=yes<br/> --enable-url-includes<br/> --enable-sysvshm=yes<br/> --enable-sysvsem=yes<br/> --with-config-file-path=/etc<br/> make<br/> Programm herstellen<br/> su<br/> als root anmelden<br/> make install<br/> Programm installieren<br/> cp php.ini-dist /etc/php.ini<br/> PHP-Konfiguration kopieren<br/> vi /etc/apache/httpd.conf<br/> Apache1.3 anpassen<br/> vi /etc/apache2/httpd.conf<br/> Apache2 anpassen<br/> LoadModule php5_module<br/> modules/libphp5.so<br/> Apache2<br/> LoadModule php5_module<br/> libexec/libphp5.so<br/> Apache1.3<br/> AddModule mod_php5.c<br/> Apache1.3<br/> DirectoryIndex index.html index.htm index.html.var index.php index.phtml<br/> AddType application/x-httpd-php .php<br/> AddType application/x-httpd-php-source .phps<br/> exit<br/> root abmelden<br/> 99<br/> <hr/> <a name=100></a>13. PHP<br/> 13.3. Referenz<br/> 13.3.1. Grundlagen<br/> <?php , <? oder <%<br/> Beginn des PHP-Abschnitts<br/> ?> oder %><br/> Ende des PHP-Abschnitts<br/> ;<br/> Zeilenende<br/> // Kommentartext<br/> Einzeiliger Kommentartext<br/> /* Kommentartext<br/> Einleitung, mehrzeiliger Kommentartext<br/> Kommentartext */<br/> Abschluss, mehrzeiliger Kommentartext<br/> $<br/> Variablen anfang<br/> echo "Text" ;<br/> Text ausgeben<br/> echo "Text $Variable Text" ;<br/> Variable ausgeben<br/> echo "Text".$Variable."Text" ; . Verketten von Zeichenfolgen<br/> echo "Text\n" ;<br/> \n Erzeugt eine neue Zeile<br/> echo "Text\r" ;<br/> \r Erzeugt einen neuen Absatz (return)<br/> echo "Text\tText" ;<br/> \t Erzeugt ein Tabulatorschritt<br/> echo "\"Text\"" ;<br/> \" Gänsefüßchen ausgeben<br/> echo "\’Text\’" ;<br/> \’ Einfache Anführungszeichen ausgeben<br/> echo "\$Text\$" ;<br/> \$ Dollar-Zeichen ausgeben<br/> echo "\\Text\\" ;<br/> \\ Backslash ausgeben<br/> $Array[Indexwert]="Wert" ;<br/> Wert einer Array-Variable zuweisen (Langform)<br/> $Array=array("W0","W1") ;<br/> Werte einer Array-Variable zuweisen (Kurzform)<br/> echo $Array[Indexwert] ;<br/> Wert einer Array-Variable ausgeben<br/> $Array[Index-Ersatz]="Wert" ;<br/> Wert eines Assoziativen-Arrays zuweisen (Langf.)<br/> $Array=array("I-E0"=>"W0","I-E1"=>"W1") ;<br/> Werte eines Assoziativen-Arrays zuweisen(Kurzf.)<br/> echo $Array[Index-Ersatz] ;<br/> Wert eines Assoziativen-Arrays ausgeben<br/> $a=$b+$c ;<br/> Addition von $b und $c gleich $a<br/> $a=$b-$c ;<br/> Subtraktion von $b minus $c gleich $a<br/> $a=$b*$c ;<br/> Multiplikation von $b mal $c gleich $a<br/> $a=$b/$c ;<br/> Division $b geteilt durch $c gleich $a<br/> $a++ ;<br/> $a=$a+1 ;<br/> $a-- ;<br/> $a=$a-1 ;<br/> $a=3.1415 ;<br/> . Dezimaltrenner<br/> 13.3.2. Funktionen<br/> phpinfo() ;<br/> PHP-Informationen ausgeben<br/> $Wochentag=date("w") ;<br/> Wochentag ermitteln 0-So bis 6-Sa<br/> $Monatszahl=date("m") ;<br/> Monatszahl ermitteln<br/> $Anzahl=count($Array) ;<br/> Elemet-Anzahl eines Arrays ermitteln<br/> $Wert=round($Wert,Nachkommastellen) ;<br/> Rundet den Wert mit Nachkommastellen<br/> $Wert=sprintf("%01.2f",$Wert) ; Rundet den Wert auf 2 :Nachkommastellen<br/> 100<br/> <hr/> <a name=101></a>14. Squid<br/> 14.1. Proxy<br/> Squid = Proxy-Cache = Stellvertreter-Zwischenspeicher<br/> 14.2. Einfacher Cache<br/> *---------------*<br/> *------------* | *---------* | *------------*<br/> | lokaler Cache |<--->| WWW-Client |<--->| Intenet |<--->| WWW-Server |<br/> *---------------*<br/> *------------* | *---------* | *------------*<br/> Die einfachste form des Caches<br/> |<br/> |<br/> 14.3. Proxy Cache<br/> *------------*<br/> | WWW-Client |<-+<br/> |<br/> |<br/> *------------* |<br/> |<br/> |<br/> |<br/> |<br/> |<br/> *------------* | *-------------* | *---------* | *------------*<br/> | WWW-Client |<-+->| Proxy Cache |<--->| Intenet |<--->| WWW-Server |<br/> *------------* | *-------------* | *---------* | *------------*<br/> |<br/> |<br/> |<br/> *------------* |<br/> |<br/> |<br/> | WWW-Client |<-+<br/> |<br/> |<br/> *------------*<br/> 14.4. Aufgaben<br/> • Zwischenspeichern von Internetseitten -> Beschleunigter Zugriff auf Internetin-<br/> halte<br/> • Abkoppelung vom direkten Zugriff auf das Internet -> Erhöte Sicherheit im<br/> lokalem Netz<br/> • Filterung von Interrnetseiten<br/> • Protokollierung des Internetverkehrs<br/> 101<br/> <hr/> <a name=102></a>14. Squid<br/> 14.5. Eigenschaften<br/> • Größe des Cache kann frei definiert werden<br/> • Aufbau von Cache-Hierarchien<br/> • Eigener DNS-Cache<br/> • Authentifizierung über zusätzliche Module möglich<br/> • Für Win, OS/2, Linux, BSD, Solaris verfügbar<br/> • Ausfilterung und Anonymisierung der Anfragen<br/> • Sehr flexible Zugriffskontrolle<br/> • Filterung über externe Programme (Squid-Guard)<br/> 14.6. Protokolle<br/> 14.6.1. Client-Kommunikation<br/> • Hyper Text Transfer Protocol (HTTP)<br/> • File Transfer Protocol (FTP)<br/> • Gopher<br/> • Wide Area Information Service (WAIS)<br/> • Secure Socket Layer (SSL)<br/> 14.6.2. Kommunikation zwischen Proxy-Cache-Servern<br/> • HyperText Transfer Protocol (HTTP)<br/> • Internet Cache Protocol (ICP(3130))<br/> • Cache Digests (Index von anderen Caches abfragen)<br/> • Simple Network Management Protocol (SNMP)<br/> • HyperText Caching Protocol (HTCP(4837))<br/> • Web Cache Coordination Protocol (WCCP)<br/> 102<br/> <hr/> <a name=103></a>14.7. Systemvoraussetzungen<br/> 14.7. Systemvoraussetzungen<br/> • Langsamme CPU<br/> • Viel RAM<br/> • Schnelle Festplatte(n)<br/> • Große Festplatte(n)<br/> 14.8. SuSE Linux<br/> rcsquid start<br/> Squid starten<br/> rcsquid stop<br/> Squid stoppen<br/> rcsquid restart<br/> Squid stoppen und dann starten<br/> rcsquid status<br/> Squid info<br/> 14.9. Automatische Starten von Squit<br/> cd /etc/rc.d/rc5.d/<br/> ln -s ../squid S22squid<br/> Link zum automatischen Starten in Runlevel 5<br/> anlegen.<br/> ln -s ../squid K02squid<br/> Link zum automatischen Beenden in Runlevel 5<br/> anlegen.<br/> 14.10. Squiddateien<br/> /etc/squid.conf<br/> Squid Konfigurationsdatei<br/> /usr/share/squid/errors/<br/> Fehlermeldungen die der Squid ausgibt<br/> /var/cache/squid/<br/> Squid-Cache<br/> /var/log/squid/access.log<br/> Log-Datei mit allen Zugriffen<br/> /var/log/squid/cache.log<br/> Cache-Aktivitaeten<br/> 14.11. squid.conf<br/> http_port: Proxy-Portnummer<br/> # http_port 3128<br/> http_port 8080<br/> cache_mem: Hauptspeicherverbrauch (x3)<br/> # cache_mem 8 MB<br/> maximum_object_size: maximale groeße einer Datei die der Proxy speichert<br/> # maximum_object_size 4096 KB<br/> 103<br/> <hr/> <a name=104></a>14. Squid<br/> minimum_object_size: minimale groeße einer Datei die der Proxy speichert<br/> # minimum_object_size 0 KB<br/> cache_dir: Verzeichnisname GroeßeMByte Ebene1 Ebene2<br/> # cache_dir ufs /var/cache/squid 100 16 256<br/> cache_dir ufs /var/cache/squid 400 16 256<br/> cache_access_log: Log-Datei mit allen Zugriffen<br/> # cache_access_log /var/log/squid/access.log<br/> cache_log: Log-Datei fuer alle Cache-Aktivitaeten<br/> # cache_log /var/log/squid/cache.log<br/> debug_options: ALL,1-normal 9-maximal<br/> # debug_options ALL,1<br/> log_fqdn: Bei on wird der Name und bei off wird die IP-Nummer<br/> in der access.log speichert<br/> # log_fqdn off<br/> log_fqdn off<br/> client_netmask: Zum Anonymisieren<br/> 255.255.255.255 volle IP-Nr.,<br/> 255.255.255.0 ersten 3 Stellen<br/> # client_netmask 255.255.255.255<br/> ftp_user: Anonymer FTP-Name<br/> # ftp_user Squid@<br/> ftp_user Anonymous@<br/> dns_children: maximale Anzahl der DNS Prozesse<br/> # dns_children 5<br/> dns_nameservers: Eintrag fuer DNS-Server<br/> #dns_nameservers 194.25.2.129 192.168.6.66<br/> reference_age: maximale Alter der Cachefiles (0.0 week/days/months/hours)<br/> # reference_age 1 year<br/> negative_ttl: gibt an wie lange eine negative DNS Aufloesung gueltig ist<br/> # negative_ttl 5 minutes<br/> http_access: Zugriffsrechte fuer den Cache<br/> 104<br/> <hr/> <a name=105></a>14.11. squid.conf<br/> # acl - aclname acltype string - definiert eine Zuganskontrolle und Sperrliste<br/> # src - Client IP-Adresse/Adressbereich<br/> # dst - Zielserver IP-Adresse/Adressbereich<br/> # srcdomain - Client (Domain-)Name<br/> # dstdomain - Zielserver (Domain-)Name<br/> # srcdom_regex - Cient (Domain-)Name als RegEx<br/> # dstdom_regex - Zielserver (Domain-)Name als RegEx<br/> # port - Port oder -bereich für Verbindungen<br/> # proto - Protokoll (z.B. HTTP, FTP ...) für die Verbindung<br/> # method - Methode der Verbindung (z.B. GET, POST ...)<br/> # proxy_auth - Benutzernamen bei Authentifizierung<br/> # urlpath_regex Teil einer URL als RegEx<br/> acl all src 0.0.0.0/0.0.0.0<br/> acl rotten dstdomain www.rotten.com<br/> http_access deny rotten<br/> http_access allow all<br/> cache_mgr: E-Mail bei einen Fehler an: E-Mail oder Alias(/etc/aliases)<br/> # cache_mgr webmaster<br/> cache_effective_user: BenutzerName/ID<br/> # cache_effective_user squid<br/> cache_effective_group: GruppenName/ID<br/> # cache_effective_group nogroup<br/> visible_hostname: ServerName bei Fehlermeldungen<br/> # none<br/> visible_hostname proxy.gelbdmz.loc<br/> logfile_rotate: Zeit der Logdateien in Wochen<br/> # logfile_rotate 0<br/> append_domain: Kein Punkt in der URL ? Dann diesen Domainnamen anhaengen<br/> # none<br/> append_domain .meak.de<br/> error_directory: Verzeichnis zu den Fehlermeldungen die der Squid ausgibt<br/> #error_directory /usr/share/squid/errors<br/> 105<br/> <hr/> <a name=106></a><hr/> <a name=107></a>Teil IV.<br/> Programmieren<br/> 107<br/> <hr/> <a name=108></a><hr/> <a name=109></a>15. Bash<br/> 15.1. Einleitung<br/> Was heist BASH ?<br/> Bourne-Again SHell<br/> Was ist die BASH ?<br/> Standard-Shell der meisten Linux-Distributionen<br/> Eine fast komplette Programmiersprache<br/> BASH-Programme werden auch SScripte"(Protokolle) genannt !<br/> 15.2. Referenz<br/> #!/bin/bash<br/> Pfad zur Shell die das Programm ausführen soll<br/> chmod u+x Script<br/> Macht das Script ausführbar<br/> bash Script oder sh Script<br/> so gehts auch<br/> #<br/> Kommentar bis Zeilenende<br/> :<br/> Null-Funktion. Ein Befehl, der nichts tut.<br/> (( oder [<br/> )) oder ]<br/> echo Text<br/> Gibt den Text aus<br/> echo "Text"<br/> Gibt den Text aus<br/> echo Text<br/> Text<br/> Gibt den Text mit nur einer Leerstelle aus<br/> echo "Text<br/> Text"<br/> Gibt den Text mit allen Leerstellen aus<br/> echo Text\ \ \ Text<br/> Gibt den Text mit allen Leerstellen aus<br/> Variable=7<br/> Speichert 7 in der Variable<br/> Variable=z<br/> Speichert z in der Variable<br/> echo $Variable<br/> Gibt den Inhalt der Variable aus<br/> echo ${Variable}<br/> Gibt den Inhalt der Variable aus<br/> Wert=$[$Wert+1]<br/> Wert=Wert+1<br/> Wert=$(($Wert+1))<br/> Wert=Wert+1<br/> : $[Wert+=1]<br/> Wert=Wert+1<br/> : $((Wert+=1))<br/> Wert=Wert+1<br/> 109<br/> <hr/> <a name=110></a>15. Bash<br/> 15.3. Steuer und Sonderzeichen der Bash<br/> Zeichen<br/> Funktion<br/> -------<br/> --------<br/> Leerzeichen (space)<br/> Trenner zwischen Programm-Parametern<br/> Tabulator (tab)<br/> Trenner zwischen Programm-Parametern<br/> Return (newline)<br/> Befehlseingabe<br/> \ (backslash)<br/> Escape-Zeichen<br/> | (pipe)<br/> Verkettung der Ein-/Ausgabe mehrerer Programme<br/> & (ampersand)<br/> Programm als Hintergrund-Prozess starten,<br/> Ein-/Ausgabeumleitung<br/> ; (semikolon)<br/> Trenner zwischen zwei Programmaufrufen<br/> ( ) (braces)<br/> Gruppierung, Berechnung<br/> 110<br/> <hr/> <a name=111></a>16. git<br/> Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien, die durch<br/> Linus Torvalds initiiert wurde.<br/> 16.1. Dokumentation<br/> git help status<br/> Manpage von git status anzeigen<br/> git status --help<br/> Manpage von git status anzeigen<br/> man git-status<br/> Manpage von git status anzeigen<br/> 16.2. Konfiguration<br/> git config --global ...<br/> Speichern im Homeverzeichnis .gitconfig<br/> git config --system ...<br/> /etc/gitconfig konfigurieren unueblich<br/> git config ...<br/> Arbeitsverzeichnis .git/config<br/> git config user.name "Max Mustermann"<br/> Name konfigurieren<br/> git config user.email "max.mustermann@examle.com"<br/> E-Mail konfigurieren<br/> git config --unset user.name<br/> Name löschen<br/> git config alias.st status<br/> Alias status -> st herstellen<br/> [alias]<br/> nützliche Abkürzungen<br/> st = status<br/> ci = commit<br/> br = branch<br/> co = checkout<br/> df = diff<br/> he = help<br/> cl = clone<br/> git config -e<br/> startet Editor auf der Konfiguration<br/> git config color.ui auto<br/> Farben einstellen<br/> git config core.eol lf,crlf oder native Zeilenende lf-Linux crlf-Windows<br/> native-System-Default<br/> git config core.safecrlf<br/> Verbietet Commit bei vermischung<br/> git config core.autocrlf input<br/> sichere Einstellung bei älteren<br/> Git-Versionen unter Windows<br/> git config il8n.commitEncoding ISO-8859-1Zeichenkodierung ISO-8859-1<br/> 111<br/> <hr/> <a name=112></a>16. git<br/> Standart UTF-8<br/> git config core.pager ’env LESSCHARSET=iso8859 less’<br/> Zeichenkodierung für den Pager<br/> git config core.editor vim<br/> Vim als Editor einstellen<br/> git config core.browser ...<br/> Browser einstellen<br/> git config help.autocorrect n<br/> beim Vertippen ähnliches Subkommando<br/> ausführen, n Zentelsekunden bis zum<br/> Ausführen, -1 für sofort aus, 0 zeigt<br/> nur Möglichkeiten an<br/> git config --list<br/> alle Einstellungen anzeigen<br/> 16.3. Konfigurationen über Umgebungsvariablen<br/> GIT_EDITOR<br/> Editor den Git verwendet<br/> sonst greift die Variable EDITOR<br/> GIT_PAGER<br/> der wert cat schaltet den Pager aus<br/> GIT_AUTHOR_EMAIL<br/> E-Mail für den Autor des Commits<br/> GIT_COMMITTER_EMAIL<br/> E-Mail für das Commiter-Feld des Commits<br/> GIT_AUTHOR_NAME<br/> Name für den Autor des Commits<br/> GIT_COMMITTER_NAME<br/> Name für das Commiter-Feld des Commits<br/> GIT_DIR<br/> Verzeichnis, in dem sich das Git-Repository befindet<br/> macht nur sinn bei einem Git-Repository<br/> 16.4. Der Index<br/> Der Inhalt von Dateinen liegt für Git auf drei Ebenen, den Working Tree, dem Index<br/> und dem Repository.<br/> clone/fetch/pull<br/> +----------+ --------------------------------------------------> +<br/> |Repository|<br/> |<br/> --bare init |(origin) | push<br/> |<br/> ----------> +----------+ <--------------------------------------- +<br/> |<br/> |<br/> |<br/> status<br/> add<br/> status<br/> commit/--amend<br/> |<br/> |<br/> +------------+ ---------> +--------------+ ---------------------> +----------+<br/> |Working Tree| diff<br/> |Index<br/> | diff --staged/--cached |Repository|<br/> |<br/> | <--------> |(Staging Area)| <--------------------> |<br/> |<br/> +------------+ <--------- +--------------+ <--------------------- +----------+<br/> | reset HEAD<br/> reset HEAD --<br/> |<br/> |<br/> + -------------------------------------------------> +<br/> |<br/> checkout --<br/> |<br/> init<br/> |<br/> ---------------------------------------------------------------------------> +<br/> 112<br/> <hr/> <a name=113></a>16.5. Repository<br/> git diff<br/> zeigt den Unterschied zwischen Working Tree<br/> und Index an<br/> git diff --color-words<br/> Änderugen Fablich anzeigen<br/> grün-hinzugekommen rot-entfernt<br/> git diff --word-diff --no-color ohne Frabe mit Zeichen<br/> git diff --staged<br/> zeigt den Unterschied zwischen<br/> Index(Staging Area) und Repository an<br/> git diff --cached<br/> zeigt den Unterschied zwischen<br/> Index(Staging Area) und Repository an<br/> 16.5. Repository<br/> git init Beispiel<br/> Neues Repository herstellen, legt Verzeichnis Beispiel<br/> an wenn nicht schon vorhanden<br/> git status<br/> zeigt den aktuellen Zustand an<br/> git log<br/> die Commit Historie anzeigen<br/> 16.6. Commit<br/> git add Datei<br/> Datei zum Index hinzufügen<br/> git add -u oder --update<br/> Alle Veränderungen in den Index übertragen<br/> git reset HEAD Datei<br/> aus der Staging Area zu entfernen<br/> git commit -m "Erste Version"<br/> Index zum Working Tree hinzufügen<br/> git add forgotten_file<br/> Datei zum Index hinzufügen<br/> git commit --amend<br/> den letzten Commit ändern<br/> git show<br/> Commit einsehen<br/> git log<br/> Commits anzeigen<br/> 16.7. Dateien entfernen<br/> git rm Datei<br/> Datei in deinem Arbeitsverzeichnis behalten,<br/> aber aus der Staging Area nehmen<br/> git rm -f Datei<br/> Datei aus dem Arbeitsverzeichis und Index löschen<br/> git reset HEAD Datei<br/> Datei in Deinem Arbeitsverzeichnis behalten,<br/> aber aus der Staging Area nehmen<br/> 16.8. Dateien verschieben<br/> git mv Datei_alt Datei_neu<br/> Datei verschieben<br/> 113<br/> <hr/> <a name=114></a>16. git<br/> 16.9. Änderung an einer Datei rückgängig machen<br/> git checkout -- Datei<br/> Datei zurückversetzen auf den letzten Commit oder Klone<br/> 16.10. Dateien ignorieren<br/> Dateien im Projektverzeichnis die nicht versioniert im Repository sein sollen<br/> kommen in die Datei .gitignore.<br/> .gitignore#<br/> Zeile mit # oder leere wird ignoriert<br/> *.o<br/> ignoriert alle Dateien die mit .o enden<br/> !lib.o<br/> wird nicht ignoriert<br/> /TODO<br/> ignoriert den Ordner TODO<br/> build/<br/> ignoriert alle Dateien im build Verzeichnis<br/> doc/*.txt<br/> ignoriert alle .txt Dateien im doc Verzeichnis<br/> doc/**/*.txt<br/> ignoriert alle .txt Dateien unterhalb des doc<br/> Verzeichnis<br/> 16.11. Mit externen Repositorys arbeiten<br/> git clone git://git.kernel.org/pub/scm/git/git.git<br/> git Repository herunterladen, Port 9418<br/> git clone file:///home/git/project.git<br/> Repository herunterladen, legt harte<br/> Links an wenn möglich<br/> git clone ssh://user@server/project.git ssh Repository herunterladen, Port 22<br/> git clone http(s)://example.com/gitproject.git<br/> http(s) Repository herunterladen,<br/> Port 80(443)<br/> git remote -v<br/> zeigt an, welche externen Server für<br/> das Projekt lokal konfiguriert sind<br/> git remote add Name URL<br/> Remote Repository hinzufügen<br/> git remote add origin ssh://git@sonne:/srv/git/linux.git<br/> Beispiel<br/> git fetch Name<br/> Informationen aus dem Remote Repository<br/> herunterladen<br/> git pull Name<br/> entspricht git fetch git merge<br/> git checkout -b Branch origin/Branch<br/> erstellt einen lokalen bearbeitbaren<br/> Branch<br/> git push origin master<br/> Änderungen in ein Remote Repository<br/> hochladen<br/> git push Remote Branch<br/> Brauch auf Remote hochladen<br/> git push Remote :Branch<br/> löschen entfernter Branches<br/> git remote show Name<br/> zeigt die URL für das Remote<br/> 114<br/> <hr/> <a name=115></a>16.12. Tags<br/> Repository, die Information welche<br/> Branches verfolgt werden und welcher<br/> Branch aus dem Remote Repository mit<br/> dem eigenen Master zusammengeführt<br/> wird, wenn Du git pull ausführst<br/> git remote rename Name_alt Name_neu<br/> Name des Remote Repository lokal ändern<br/> git remote rm Name<br/> Remote Repository entfernen<br/> 16.12. Tags<br/> git tag<br/> vorhandene Tags anzeigen<br/> git tag -a v1.4 -m ’my version 1.4’<br/> einen kommentierten Tag anlegen<br/> git tag -s v1.5 -m ’my signed 1.5 tag’<br/> einen kommentierten und signierten Tag anlegen<br/> git tag -v v1.4.2.1<br/> einen signierten Tag zu verifizieren<br/> git tag -a v1.2 -m ’version 1.2’ Checksumme<br/> im Nachhinein taggen, Checksumme des Commits<br/> oder einen Teil davon angeben<br/> git log --pretty=oneline<br/> Commit Historie mit Checksumme<br/> git push origin v1.5<br/> Tag veröffentlichen<br/> git push origin --tags<br/> Tags veröffentlichen<br/> git tag -d v1.5<br/> Tag löschen<br/> git push origin :refs/tags/v1.5 veröffentlichen Tag löschen<br/> 16.13. Branch<br/> Was ist ein Branch? Ein Zeiger, der auf den gleichen Commit zeigt, auf dem Du gerade<br/> arbeitest.<br/> git branch testing<br/> erstellt einen neuen Branch mit dem Namen testing<br/> git checkout testing<br/> um zu einem anderen Branch zu wechseln<br/> git branch -b testing<br/> erstellt und wechselt zu dem Branch<br/> git merge testing<br/> führt testing mit dem Master-Branch zusammen<br/> git branch -d testing<br/> entfernt testing<br/> git merge master<br/> Deinem Zweig mit dem master kombinieren<br/> git rebase master<br/> alle Änderungen auf einem Branch, auf einen anderen<br/> Branch erneut anwenden (nur mit unveröffendlichen<br/> Branch machen)<br/> git mergetool<br/> grafischen Tool zur Bereinigung von Merge-Konflikten<br/> git branch<br/> Liste aller Branches anzeigen<br/> git branch -v<br/> für jeden Branch den letzten Commit anzeigen lassen<br/> git branch --merged<br/> Liste gemergter Branches<br/> git branch --no-merged<br/> Liste nicht gemergter Branches<br/> 115<br/> <hr/> <a name=116></a>16. git<br/> 16.14. Git Aliase<br/> git config --global alias.co checkout<br/> co anstelle von checkout schreiben<br/> git config --global alias.br branch<br/> br anstelle von branch schreiben<br/> git config --global alias.ci commit<br/> ci anstelle von commit schreiben<br/> git config --global alias.st status<br/> st anstelle von status schreiben<br/> 16.15. Git auf einen Server bekommen<br/> git clone --bare my_project my_project.git<br/> Projekt zu Projekt.git klonen<br/> scp -r my_project.git user@git.example.com:/opt/git<br/> Projekt per ssh hochladen<br/> git clone user@git.example.com:/opt/git/my_project.git<br/> Projekt per ssh zum Arbeiten herunterladen<br/> ssh user@git.example.com<br/> auf dem Server anmelden<br/> cd /opt/git/my_project.git<br/> Projektverzeichnis betreten<br/> git init --bare --shared<br/> Gruppenschreibrechte zu einem Repository<br/> hinzufügen<br/> 16.16. Git auf dem SSH-Server einrichten<br/> Einrichtung des SSH-Zugangs auf dem Server mit der Authorized-Keys-Methode zur<br/> Authentifizierung der Benutzer.<br/> sudo adduser git<br/> Benutzer git anlegen<br/> su git<br/> Rechte von User git erlagen<br/> cd<br/> ins Home ~ Verzeichnis des Users wechseln<br/> mkdir .ssh<br/> Verzeichnis .ssh anlegen<br/> - öffentliche SSH-Schlüssel der Entwickler zu der Authorized-Keys-Datei des Benut-<br/> zers git hinzuzufügen.<br/> cat /tmp/id_rsa.user1.pub > ~/.ssh/authorized_keys<br/> authorized_keys erstellen und User1 einfügen<br/> cat /tmp/id_rsa.user2.pub >> ~/.ssh/authorized_keys<br/> User2 einfügen<br/> cat /tmp/id_rsa.user3.pub >> ~/.ssh/authorized_keys<br/> User3 einfügen<br/> - Leeren Ordner anlegen und mit der Option –bare ein Repository ohne ein Arbeits-<br/> verzeichnis erzeugen.<br/> cd /srv<br/> in den Ordner srv wechseln<br/> mkdir git<br/> git Ordner anlegen<br/> 116<br/> <hr/> <a name=117></a>16.17. Öffentlicher Webserver-Zugang<br/> cd git<br/> in den Ordner git wechseln<br/> mkdir project.git<br/> project.git Ordner anlegen<br/> cd project.git<br/> in den Ordner project.git wechseln<br/> git --bare init<br/> Repository ohne ein Arbeitsverzeichnis erzeugen<br/> - Die erste Version des Projektes in das Repository hochladen<br/> cd project<br/> in das Projekt wechseln<br/> git init<br/> Projekt Repository herstellen<br/> git add .<br/> alle Dateien um Index hinzufügen<br/> git commit -m ’initial commit’<br/> Index zum Working Tree hinzufügen<br/> git remote add origin git@gitserver:/srv/git/project.git<br/> Server hinzufügen<br/> git push origin master<br/> Commits und Referenzen auf den Server hochladen<br/> - Repository klonen und Änderungen hochladen<br/> git clone git@gitserver:/srv/git/project.git<br/> Repository klonen<br/> cd project<br/> ins Projekt wechseln<br/> vim README<br/> Projekt bearbeiten<br/> git commit -am ’fix for the README file’<br/> Änderung speichern<br/> git push origin master<br/> Änderung hochladen<br/> - Git-Zugang absichen<br/> /etc/passwd<br/> git:x:1000:1000::/home/git:/bin/sh<br/> /bin/sh auf<br/> git:x:1000:1000::/home/git:/usr/bin/git-shell<br/> /usr/bin/git-shell ändern<br/> 16.17. Öffentlicher Webserver-Zugang<br/> Anonymen Lese-Zugriff zu Deinem Projekt ermöglichen, per git clone http://git.gitserver.loc/project.git.<br/> - Hook aktivieren<br/> cd project.git<br/> in das Projekt wechseln<br/> mv hooks/post-update.sample hooks/post-update<br/> post-update umbenennen<br/> chmod a+x hooks/post-update<br/> post-update ausfürbar machen<br/> - VirtualHost Eintrag zur Apache-Konfiguration hinzufügen<br/> <VirtualHost *:80><br/> ServerName git.gitserver.loc<br/> ServerAdmin webmaster@localhost<br/> DocumentRoot /srv/git<br/> #<br/> <Directory /srv/git/><br/> #<br/> Order allow, deny<br/> 117<br/> <hr/> <a name=118></a>16. git<br/> #<br/> allow from all<br/> #<br/> </Directory><br/> <Directory /srv/git/><br/> Options Indexes FollowSymLinks<br/> AllowOverride None<br/> Require all granted<br/> </Directory><br/> ErrorLog ${APACHE_LOG_DIR}/git.gitserver.loc-error.log<br/> CustomLog ${APACHE_LOG_DIR}/git.gitserver.loc-access.log combined<br/> </VirtualHost><br/> Nach dem nächsten push kann per "git clone http://git.gitserver.loc/project.git"das<br/> Projekt anonym herunter geladen werden.<br/> 16.18. Grundbegriffe<br/> Versionkontrollsystem (Version Control System, VCS)<br/> Eine Versionsverwaltung ist ein System, das zur Erfassung von Änderungen<br/> an Dokumenten oder Dateien verwendet wird.<br/> Zum Beispiel:<br/> Zentrale Systeme - zentraler Server<br/> RCS-Revision Control System, CVS-Concurrent Versions System,<br/> SVN-Subversion<br/> Verteilte Systeme - Kein zentraler Server<br/> Bazaar, Darcs, Fossil, Git, GNU arch, Mercurial, Monotone<br/> Repository<br/> Nutzt Git als Dantenbank in der die verschiedenen Zustände jeder Datei<br/> eines Projektes über die Zeit hinweg ablegt. Jede Änderrung wird als<br/> Commit verpackt und abgespeichert.<br/> Working Tree<br/> Das Arbeitsverzeichnis von Git, oft auch Working Directory genannt.<br/> Commit Das speichern der veränderten Dateien im Repository.<br/> HEAD<br/> Eine symbolische Referenz auf den neusten Commit im aktuellen Branch.<br/> SHA-1<br/> Der Secure Hash Algorithm erstellt eine eindeutige, 160 Bit lange<br/> Prüfsumme. Alle Commits in Git werden nach ihrer SHA-1-Summe benannt,<br/> die aus dem Inhalt und den Metadaten des Commits errechnet wird.<br/> Objektmodell<br/> Ein Git-Repository lässt sich als Graph von Commits modellieren, der<br/> durch Git-Kommandos manipuliert wird.<br/> Index<br/> Der Index ist eine Zwischenstufe zwischen Working Tree und Repository,<br/> 118<br/> <hr/> <a name=119></a>16.19. Verwendung von Git<br/> in der Sie einen Commit vorbereiten. Enthält also die Dateien für den<br/> nästen Commit.<br/> Clone<br/> Wenn Sie sich ein Git-Repository aus dem Internet herrunterladen.<br/> Enthält die gesamte Versionsgeschichte einschließlich aller Commits.<br/> Branch Eine Abzweigung in der Entwicklung. Zum Beispiel für neue Featurs,<br/> Release vorbereitung oder alte Versionen mit Bugfixes zu versorgen.<br/> master Beim Initialisieren eines neuen Repositorys wird der Branch master<br/> erstellt analog trunk in anderen Systemen.<br/> Tag<br/> Tags sind symbolische Namen für schwer zu merkende SHA-1-Summen.<br/> Wichtige Commits, wie zum Beispiel Releases v1.2.3. oder können<br/> zusätzliche Metadateien wie Autor, Beschreibung und GPG-Signatur<br/> enthalten.<br/> 16.19. Verwendung von Git<br/> git config --global user.name "Thomas resiX"<br/> Benutzernamen angeben<br/> git config --global user.email "resiX@local.loc"<br/> E-Mail angeben<br/> git remote add origin http://user@server:3000/user/test.git Server angeben<br/> git config --list --show-origin<br/> Alle Einstellungen anzeigen<br/> git config --unset user.name<br/> Name löschen<br/> git init<br/> repository anlegen<br/> git status<br/> Änderungen anzeigen<br/> git add README.md<br/> stage (hinzufügen) Datei<br/> git commit -m "v0.0.1"<br/> commit (hinzufügen bestätigen/beschreiben) Datei<br/> git push<br/> alle Änderugen auf den Server hochladen<br/> git pull<br/> alle Änderugen vom Server holen<br/> git clone http://github.com/resiX/test.git<br/> repository vom Server holen<br/> git branch neuerZweig<br/> branch (zweig) herstellen<br/> git checkout neuerZweig<br/> Bearbeitung verzweigen<br/> git branch<br/> alle braches ausgeben<br/> git merge neuerZweig<br/> branche zum Master hinzufügen<br/> 119<br/> <hr/> <a name=120></a><hr/> <a name=121></a>17. C/C++<br/> 17.1. Befehle und Grundelemente<br/> gcc Datei.c<br/> Programm übersetzen -> a.out<br/> g++ Datei.cpp<br/> Programm übersetzen -> a.out (C++)<br/> gcc -c Datei.c<br/> Objektdatei herstellen -> Datei.o<br/> g++ -c Datei.cpp<br/> Objektdatei herstellen -> Datei.o (C++)<br/> gcc -o Programmname Datei1.o Datei2.o<br/> Datei1.o+Datei2.o -> Programmname<br/> g++ -o Programmname Datei1.o Datei2.o<br/> Datei1.o+Datei2.o -> Programmname (C++)<br/> gcc -o Programmname Datei.c<br/> Programm übersetzen -> Programmname<br/> g++ -o Programmname Datei.cpp<br/> Programm übersetzen -> Programmname(C++)<br/> Programmname<br/> Programm starten<br/> configure<br/> Makefile konfigurieren<br/> make<br/> Programm übersetzen,<br/> wenn Makefile vorhanden<br/> make install<br/> Programm installieren<br/> /*<br/> Kommentar einleiten<br/> */<br/> Kommentar abschließen<br/> //<br/> Kommentar einleiten bis zum Zeilenende (C++)<br/> {<br/> Blockbeginn<br/> }<br/> Blockende<br/> ,<br/> mehrere Variablen vom gleichen Typ deklarieren z.B. int a, b, c;<br/> ;<br/> Funktions-,Operations- und Zeilen-ende (leere Anweisung)<br/> #include<Datei> Datei aus /usr/include/ bei UNIX einlesen<br/> #include"Datei" Datei aus dem aktuellen Verzeichnis einlesen<br/> char<br/> Variablentyp character - Zeichen<br/> int<br/> Variablentyp integer - ganzzahlig mit Vorzeichen<br/> main()<br/> Hauptfunktion<br/> return()<br/> Wert aus einer Funktion zurückliefern<br/> 17.2. Steuersequenzen für ANSI-Bildschirme -<br/> Innerhalb von Texten<br/> \a<br/> BEL<br/> bell<br/> Alarm/Piepton<br/> 121<br/> <hr/> <a name=122></a>17. C/C++<br/> \b<br/> BS<br/> backspace<br/> Rücksetzen um ein Zeichen<br/> \f<br/> FF<br/> formfeed<br/> Seitenvorschub<br/> \n<br/> NL<br/> new line<br/> Zeilenvorschub<br/> \r<br/> CR<br/> carriage return<br/> Wagenrücklauf<br/> \t<br/> HT<br/> horizontal tabulation<br/> horizontaler Tabulator<br/> \v<br/> VT<br/> vertical tabulation<br/> vertikaler Tabulator<br/> \0<br/> NULL<br/> null<br/> kein Zeichen Textende<br/> \?<br/> ?<br/> Fragezeichen (kein Dreierzeichen)<br/> \’<br/> ’<br/> Hochkomma<br/> \"<br/> "<br/> Anführungszeichen<br/> \\<br/> \<br/> umgekehrter Schrägstrich<br/> \ddd<br/> Zeichencode in oktaler Notation<br/> \xdd<br/> Zeichencode in hexadezimaler Notation<br/> \e[1;1H<br/> Cursor auf x1 und y1 setzen<br/> \e[1;1f<br/> -> \e[1;1H<br/> \e[5A<br/> Cursor 5 Zeilen aufwärts bewegen<br/> \e[5B<br/> Cursor 5 Zeilen abwärts bewegen<br/> \e[5C<br/> Cursor 5 Spalten vorwärts(rechts) bewegen<br/> \e[5D<br/> Cursor 5 Spalten rückwärts(links) bewegen<br/> \e[2J<br/> Bildschirm löschen<br/> \e[6n<br/> Ausgabe der Cursor position z.B. ^[[32;6R<br/> \e[s<br/> merkt die aktuelle Cursor Position<br/> \e[u<br/> Cursor auf gemerkte Position setzen<br/> \e[Schrift;Vordergrund;Hintergrundmerkmale<br/> setzt Bildschirmmerkmale<br/> Schrift<br/> Vordergrund Hintergrund<br/> 0 normal<br/> 30 schwarz 40<br/> 1 grell<br/> 31 rot<br/> 41<br/> 4 unterstrichen 32 grün<br/> 42<br/> 5 blinken<br/> 33 gelb<br/> 43 braun<br/> 7 reverse<br/> 34 blau<br/> 44<br/> 35 magenta 45<br/> 36 cyan<br/> 46<br/> 37 weiß<br/> 47 grau<br/> 17.3. stdio.h -> Standard Ein- und Ausgabe<br/> c=getchar();<br/> Eingabe eines Zeichens, ohne Wagenrücklauf<br/> putchar(’a’);<br/> Ausgabe eines Zeichens, ohne Wagenrücklauf<br/> puts("Text");<br/> Zeichenkette ausgeben, mit Wagenrücklauf<br/> fputs("Text",stdount); Zeichenkette ausgeben, ohne Wagenrücklauf<br/> fputs("Text",stderr);<br/> Zeichenkette ausgeben, ohne Wagenrücklauf<br/> printf("Text %d",Zahl); Zeichenkette formatiert ausgeben, ohne Wagenrücklauf<br/> % F Z1 . Z2 L U<br/> | | | | | | + Umwandlungszeichen: %d-dezimal<br/> %u-unsigned<br/> 122<br/> <hr/> <a name=123></a>17.4. ctype.h<br/> | | | | | |<br/> %o-oktal<br/> %s-Text %c-Zeichen<br/> | | | | | |<br/> %f-Flieskomma<br/> %e-Expotential<br/> | | | | | |<br/> %x-hexadezimal %p-pointer<br/> | | | | | +-- Long-Ausgabe: notwendig für long int<br/> | | | | +----- Nachkommastellen: z.B 3 für drei stellen<br/> | | | +------- Trenzeichen, falls Z1 und Z2<br/> | | +---------- Größe des Ausgabefensters: z.B 7 für sieben stellen<br/> | +------------ Ausrichtung: ohne Angabe rechtsbündig,<br/> |<br/> mit Minuszeichen linksbündig<br/> +-------------- Fluchtsymbol<br/> scanf("%c",&text);<br/> Zeichen in &text einlesen<br/> % * Z L U<br/> | | | | +------ Umwandlungszeichen<br/> | | | +-------- Long-Ausgabe<br/> | | +---------- Größe des Eingabefensters<br/> | +------------ Wegwerfen<br/> +-------------- Fluchtsymbol<br/> 17.4. ctype.h<br/> if(isascii(zeichen))<br/> überprüft ob es sich um ein ASCII-Zeichen handelt<br/> if(isxdigit(zeichen))<br/> überprüft ob es sich um ein Hex-Zeichen handelt<br/> 17.5. string.h<br/> char *strcat(char text1, char text2) ; hängt Text2(mit \0) an Text1<br/> char *strchr(const char *text,<br/> int zeichen) ;<br/> sucht das erste vorkommende<br/> Zeichen im Text, liefert Adresse<br/> oder NULL<br/> char *strcpy(char text1, char text2) ; kopiert Text2(mit \0) zum Text1<br/> sitze_t strlen(const char *text) ;<br/> liefert die Länge von Text(ohne \0)<br/> char *strncat(char *text1,<br/> const char *text2, sitze_t n) ;<br/> hängt Text2 mit n Zeichen<br/> an Text1(mit \0)<br/> char *strtok(char *text,<br/> const char *kette) ;<br/> 1.Aufruf: sucht im Text das erste<br/> Zeichen das nicht in Kette vorkommt<br/> (wird kein Zeichen gefunden gibt strtok<br/> einen NULL-Zeiger zurück), wird ein<br/> Zeichen gefunden gibt strtok den Zeiger<br/> zurück, dann sucht strtok ab Zeiger das<br/> erste Zeichen das in der Kette vorkommt<br/> 123<br/> <hr/> <a name=124></a>17. C/C++<br/> und überschreibt es mit \0, strtok merkt<br/> sich den Zeiger auf das nächste Zeichen<br/> char *strtok(NULL, const char *kette) ; 2.-n.Aufruf: wie 1.Aufruf ab gemerkten<br/> Zeiger<br/> 17.6. Kontrollstrukturen<br/> if(Ausdruck)<br/> wenn der Ausdruck stimmt,<br/> {<br/> Anweisung-en1;<br/> Anweisung-en1<br/> }<br/>else<br/> sonst<br/> {<br/> Anweisung-en2;<br/> Anweisung-en2<br/> }<br/> switch(Ausdruck)<br/> gehe zum Ausdruck<br/> {<br/> case 1: Anweisung-en1; Ausdruck1:<br/> Anweisung-en1<br/> case 2: Anweisung-en2; Ausdruck2:<br/> Anweisung-en2<br/> break;<br/> Anweisungen beenden<br/> case n: Anweisung-enn; Ausdruckn:<br/> Anweisung-enn<br/> break;<br/> Anweisungen beenden<br/> default: Anweisung-en;<br/> Ausdruck nicht vorhanden:<br/> Aneisung-en<br/> }<br/> continue;<br/> unterbricht die Abarbeitung und geht zur Ausdrucksbedingung<br/> break;<br/> verlässt die Schleife oder Verbundsanweisung<br/> for(Ausdruck1;Ausdruck2;Ausdruck3)<br/> Ausdruck1 einmal ausführen<br/> {<br/> so lange der Ausdruck2 stimmt,<br/> vorher noch Ausdruck3<br/> Anweisug-en;<br/> Anweisung-en<br/> }<br/> while(Ausdruck)<br/> so lange der Ausdruck stimmt,<br/> {<br/> Anweisung-en;<br/> Anweisung-en<br/> }<br/> do<br/> mach<br/> {<br/> Anweisung-en;<br/> Anweisung-en<br/> }<br/> 124<br/> <hr/> <a name=125></a>17.7. ASCII(American Standart Code for Information Interchange)-Tabelle<br/> while(Ausdruck);<br/> so lange der Ausdruck stimmt<br/> 17.7. ASCII(American Standart Code for Information<br/> Interchange)-Tabelle<br/> 654<br/> 000<br/> 001<br/> 010<br/> 011<br/> 100<br/> 101<br/> 110<br/> 111<br/> Bit<br/> 3210<br/> NUL<br/> DLE<br/> SP<br/> 0<br/> @<br/> P<br/> ‘<br/> p<br/> 0000<br/> $0 0<br/> $10 16 $20 32 $30 48 $40 64 $50 80 $60 96 $70 112<br/> SOH<br/> DC1<br/> !<br/> 1<br/> A<br/> Q<br/> a<br/> q<br/> 0001<br/> $1 1<br/> $11 17 $21 33 $31 49 $41 65 $51 81 $61 97 $71 113<br/> STX<br/> DC2<br/> "<br/> 2<br/> B<br/> R<br/> b<br/> r<br/> 0010<br/> $2 2<br/> $12 18 $22 34 $32 50 $42 66 $52 82 $62 98 $72 114<br/> ETX<br/> DC3<br/> #<br/> 3<br/> C<br/> S<br/> c<br/> s<br/> 0011<br/> $3 3<br/> $13 19 $23 35 $33 51 $43 67 $53 83 $63 99 $73 115<br/> EOT<br/> DC4<br/> $<br/> 4<br/> D<br/> T<br/> d<br/> t<br/> 0100<br/> $4 4<br/> $14 20 $24 36 $34 52 $44 68 $54 84 $64 100 $74 116<br/> ENQ<br/> NAK<br/> %<br/> 5<br/> E<br/> U<br/> e<br/> u<br/> 0101<br/> $5 5<br/> $15 21 $25 37 $35 53 $45 69 $55 85 $65 101 $75 117<br/> ACK<br/> SYN<br/> &<br/> 6<br/> F<br/> V<br/> f<br/> v<br/> 0110<br/> $6 6<br/> $16 22 $26 38 $36 54 $46 70 $56 86 $66 102 $76 118<br/> BEL<br/> ETB<br/> ’<br/> 7<br/> G<br/> W<br/> g<br/> w<br/> 0111<br/> $7 7<br/> $17 23 $27 39 $37 55 $47 71 $57 87 $67 103 $77 119<br/> BS<br/> CAN<br/> (<br/> 8<br/> H<br/> X<br/> h<br/> x<br/> 1000<br/> $8 8<br/> $18 24 $28 40 $38 56 $48 72 $58 88 $68 104 $78 120<br/> HT<br/> EM<br/> )<br/> 9<br/> I<br/> Y<br/> i<br/> y<br/> 1001<br/> $9 9<br/> $19 25 $29 41 $39 57 $49 73 $59 89 $69 105 $79 121<br/> LF<br/> SUB<br/> *<br/> :<br/> J<br/> Z<br/> j<br/> z<br/> 1010<br/> $A 10<br/> $1A 26 $2A 42 $3A 58 $4A 74 $5A 90 $6A 106 $7A 122<br/> VT<br/> ESC<br/> +<br/> ;<br/> K<br/> [Ä<br/> k<br/> {ä<br/> 1011<br/> $B 11<br/> $1B 27 $2B 43 $3B 59 $4B 75 $5B 91 $6B 107 $7B 123<br/> 125<br/> <hr/> <a name=126></a>17. C/C++<br/> FF<br/> FS<br/> ,<br/> <<br/> L<br/> \ö<br/> l<br/> |ö<br/> 1100<br/> $C 12<br/> $1C 28 $2C 44 $3C 60 $4C 76 $5C 92 $6C 108 $7C 124<br/> CR<br/> GS<br/> -<br/> =<br/> M<br/> ]Ü<br/> m<br/> }ü<br/> 1101<br/> $D 13<br/> $1D 29 $2D 45 $3D 61 $4D 77 $5D 93 $7D 109 $7D 125<br/> SO<br/> RS<br/> .<br/> ><br/> N<br/> ^<br/> n<br/> ~ß<br/> 1110<br/> $E 14<br/> $1E 30 $2E 46 $3E 62 $4E 78 $5E 94 $7E 110 $7E 126<br/> SI<br/> US<br/> /<br/> ?<br/> O<br/> _<br/> o<br/> DEL<br/> 1111<br/> $F 15<br/> $1F 31 $2F 47 $3F 63 $4F 79 $5F 95 $7F 111 $7F 127<br/> 17.7.1. Unterteilung der Steuerzeichen:<br/> TC<br/> transmission control<br/> Übertragungssteuerzeichen<br/> FE<br/> format effects<br/> Formatsteuerzeichen<br/> IS<br/> information separators Informationstrennzeichen<br/> DC<br/> device control<br/> Gerätesteuerzeichen<br/> 17.7.2. Bedeutung der Steuerzeichen:<br/> NUL<br/> null<br/> kein Zeichen<br/> SOH<br/> TC<br/> start of heading<br/> Anfang des Kopfes<br/> STX<br/> TC<br/> start of text<br/> Anfang des Textes<br/> ETX<br/> TC<br/> end of text<br/> Ende des Textes<br/> EOT<br/> TC<br/> end of transmission<br/> Ende der Übertragung<br/> ENQ<br/> TC<br/> enquiry<br/> Stationsaufforderung<br/> ACK<br/> TC<br/> acknowledge<br/> positive Rückmeldung<br/> BEL<br/> bell<br/> Alarm / Piepton<br/> BS<br/> FE<br/> backspace<br/> Rückwärtsschritt<br/> HT<br/> FE<br/> horizontal tabulation<br/> horizontaler Tabulator<br/> LF<br/> FE<br/> line feed<br/> Zeilenvorschub<br/> VT<br/> FE<br/> vertical tabulation<br/> vertikaler Tabulator<br/> FF<br/> FE<br/> form feed<br/> Seitenvorschub<br/> CR<br/> FE<br/> carriage return<br/> Wagenrücklauf<br/> SO<br/> shift out<br/> Dauerumschaltung<br/> SI<br/> shift in<br/> Rückschaltung<br/> DLE<br/> TC<br/> data link escape<br/> Datenübertragungsumschaltung<br/> DCn<br/> DC<br/> device control<br/> Gerätesteuerzeichen<br/> NAK<br/> TC<br/> negative acknowledge<br/> negative Rückmeldung<br/> SYN<br/> TC<br/> synchronous idle<br/> Synchronisierung<br/> ETB<br/> TC<br/> end of transmission block<br/> Ende des Übertragungsblocks<br/> CAN<br/> cancel<br/> ungültig<br/> EM<br/> end of medium<br/> Ende der Aufzeichnung<br/> 126<br/> <hr/> <a name=127></a>17.8. Operatoren und Ausdrücke<br/> SUB<br/> substitute character<br/> Substitution<br/> ESC<br/> escape<br/> Umschaltung<br/> FS<br/> IS<br/> file separator<br/> Hauptgruppentrennung<br/> GS<br/> IS<br/> group separator<br/> Gruppentrennung<br/> RS<br/> IS<br/> record separator<br/> Untergruppentrennung<br/> US<br/> IS<br/> unit separator<br/> Teilgruppentrennung<br/> SP<br/> space<br/> Leerzeichen<br/> DEL<br/> delete<br/> löschen<br/> 17.8. Operatoren und Ausdrücke<br/> 17.8.1. Arithmetische Operatoren:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> +<br/> Addition<br/> ><br/> 5<br/> a+b<br/> -<br/> Subtraktion<br/> ><br/> 5<br/> a-b<br/> *<br/> Multiplikation<br/> ><br/> 4<br/> a*b<br/> /<br/> Division<br/> ><br/> 4<br/> a/b<br/> %<br/> Modulo<br/> ><br/> 4<br/> a%b<br/> 17.8.2. Vergleichsoperatoren:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> <<br/> kleiner als<br/> ><br/> 7<br/> a<b<br/> <=<br/> kleiner oder gleich<br/> ><br/> 7<br/> a<=b<br/> ><br/> größer<br/> ><br/> 7<br/> a>b<br/> >=<br/> größer oder gleich<br/> ><br/> 7<br/> a>=b<br/> ==<br/> gleich<br/> ><br/> 8<br/> a==b<br/> !=<br/> ungleich<br/> ><br/> 8<br/> a!=b<br/> 17.8.3. Logische Operatoren:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> &<br/> bitweises AND<br/> ><br/> 9<br/> a&b<br/> |<br/> bitweises OR<br/> ><br/> 11<br/> a|b<br/> ^<br/> bitweises XOR<br/> ><br/> 10<br/> a^b<br/> <<<br/> bitweises Linksschieben<br/> ><br/> 6<br/> a<<n<br/> >><br/> bitweises Rechtsschieben<br/> ><br/> 6<br/> a>>n<br/> ~<br/> Einerkomplement<br/> <<br/> 2<br/> ~a<br/> &&<br/> logisches AND<br/> ><br/> 12<br/> a&&b<br/> ||<br/> logisches OR<br/> ><br/> 13<br/> a||b<br/> !<br/> logische Negation<br/> <<br/> 2<br/> !a<br/> 127<br/> <hr/> <a name=128></a>17. C/C++<br/> 17.8.4. Zuweisungsoperatoren:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> =<br/> Zuweisung<br/> <<br/> 15<br/> a=b<br/> +=<br/> Zuweisung nach Addition<br/> <<br/> 15<br/> a+=b<br/> -=<br/> Zuweisung nach Subtraktion<br/> <<br/> 15<br/> a-=b<br/> *=<br/> Zuweisung nach Multiplikation<br/> <<br/> 15<br/> a*=b<br/> /=<br/> Zuweisung nach Division<br/> <<br/> 15<br/> a/=b<br/> %=<br/> Zuweisung nach Modulo<br/> <<br/> 15<br/> a%=b<br/> <<=<br/> Zuweisung nach bitweisem<br/> <<br/> 15<br/> a<<=b<br/> Linksschieben<br/> >>=<br/> Zuweisung nach bitweisem<br/> <<br/> 15<br/> a>>=b<br/> Rechtsschieben<br/> &=<br/> Zuweisung nach bitweisem AND<br/> <<br/> 15<br/> a&=b<br/> |=<br/> Zuweisung nach bitweisem OR<br/> <<br/> 15<br/> a|=b<br/> ^=<br/> Zuweisung nach bitweisem XOR<br/> <<br/> 15<br/> a^=b<br/> 17.8.5. Post- und Prefix- Operatoren:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> ++<br/> Inkrement<br/> > <<br/> 1 2<br/> a++ ++a<br/> --<br/> Dekrement<br/> > <<br/> 1 2<br/> a-- --a<br/> ()<br/> Funktionsaufruf<br/> ><br/> 1<br/> sqrt(a)<br/> []<br/> Arrayelement<br/> ><br/> 1<br/> feld[a]<br/> .<br/> Feld einer structur oder union ><br/> 1<br/> tag.dat<br/> -><br/> Zeiger auf structur<br/> ><br/> 1<br/> zeig->ele<br/> ( type )<br/> expl. Typenumwandlung<br/> <<br/> 2<br/> double(a)<br/> 17.8.6. Zeigeroperatoren:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> &<br/> Adresse von<br/> <<br/> 2<br/> &a<br/> *<br/> Indirektion<br/> <<br/> 2<br/> *a<br/> .*<br/> Dereferenzzeiger<br/> ><br/> 3<br/> tag.*dat<br/> ->*<br/> Dereferenzzeiger<br/> ><br/> 3<br/> tag->dat<br/> 17.8.7. Diverse Kategorien:<br/> Operator<br/> Bedeutung<br/> Assoziativität Rang<br/> Beispiel<br/> --------<br/> ---------<br/> -------------- ----<br/> --------<br/> ?:<br/> Bedinung<br/> <<br/> 14<br/> a?b:c<br/> i = x<y ? 6 : k+1 ;<br/> x kleiner y dann 6 sonst k+1<br/> 128<br/> <hr/> <a name=129></a>17.9. Inkrementieren und Dekrementieren<br/> ,<br/> Aufzählungsoperator<br/> ><br/> 16<br/> a,b, ...<br/> -<br/> unäres Minus<br/> <<br/> 2<br/> -n<br/> +<br/> unäres Plus<br/> <<br/> 2<br/> +n<br/> sizeof(typ)<br/> Größe des Types in Byte<br/> <<br/> 2<br/> sizeof(a)<br/> new<br/> dynam. Objekt erzeugen<br/> <<br/> 2<br/> b = new float[a]<br/> delete<br/> dynam. Objekt löschen<br/> <<br/> 2<br/> delete b<br/> ::<br/> Zugiffs-/Bereichsoperator<br/> <<br/> 2<br/> adr::nam<br/> 17.9. Inkrementieren und Dekrementieren<br/> i++ ;<br/> i = i + 1<br/> ++i ;<br/> i = i + 1<br/> x = i++ ;<br/> 1. x = i<br/> 2. i = i + 1<br/> x = ++i ;<br/> 1. i = i + 1<br/> 2. x = i<br/> i-- ;<br/> i = i - 1<br/> --i ;<br/> i = i - 1<br/> x = i-- ;<br/> 1. x = i<br/> 2. i = i - 1<br/> x = --i ;<br/> 2. i = i - 1<br/> 2. x = i<br/> 17.10. Wertebereich und Genauigkeit elementarer<br/> Datentypen<br/> Datentyp<br/> Bit<br/> Min.Wert<br/> Max.Wert<br/> Genauigkeit<br/> --------<br/> ---<br/> --------<br/> --------<br/> -----------<br/> char<br/> 8<br/> -128<br/> 127<br/> unsigned char<br/> 8<br/> 0<br/> 255<br/> short int<br/> 16<br/> -32768<br/> 32767<br/> unsigned short int 16<br/> 0<br/> 65535<br/> int<br/> (16)32(64)<br/> -2147483648<br/> 2147483647<br/> unsigned int<br/> 16<br/> 0<br/> 65535<br/> long int<br/> 32(64)<br/> -2147483648<br/> 2147483647<br/> unsigned long int 32<br/> 0<br/> 4294967295<br/> float<br/> 32<br/> ca. 3.4E-38<br/> 3.4E38<br/> >= 6 Ziffern<br/> double<br/> 64<br/> ca. 1.7E-308<br/> 1.7E308<br/> >= 10 Ziffern<br/> long double<br/> 80<br/> ca. 1.2E-4932<br/> 1.2E4932<br/> >= double<br/> 17.11. Variableninitialisierung<br/> Nichtinitialisierte Variabeln haben nicht automatisch den Wert 0!<br/> short faktor=10 ;<br/> short laktor, messwert ;<br/> 129<br/> <hr/> <a name=130></a>17. C/C++<br/> messwert=faktor ;<br/> 17.12. Konstanten<br/> Konstanten werden mit dem vorangestellten Schlüsselwort const wie Variabeln dekla-<br/> riert. Der dem Namen über das =-Zeichen zugeordnete Wert kann nicht im Programm<br/> verändert werden. Für eine fehlende Typenangabe wird int angenommen.<br/> cont float<br/> PI =<br/> 3.14159 ;<br/> // bevorzugen<br/> #define<br/> PI<br/> 3.14159 ;<br/> 17.12.1. Ganzzahlkonstanten<br/> dezimal = 30 ; oktal = 036 ; hexadezimal = 0x1E ; Zusätzlich kann frau eine Ganz-<br/> zahlkonstante durch das Suffix L oder l als long und durch U oder u als unsigned<br/> kennzeichnen (z.B. 30U).<br/> 17.12.2. Gleitkommakonstanten<br/> 0.033 +.033 33E-3 +33.0e-03 Zusätzlich kann frau eine Gleitkommakonstante durch<br/> das Suffix F oder f als float und durch L oder l als long double kennzeichnen (z.B.<br/> 0.033L).<br/> 17.12.3. Zeichen- und Zeichenkettenkonstanten<br/> ’n’<br/> “zeichenkette’"<br/> 130<br/> <hr/> <a name=131></a>18. Tcl/Tk<br/> wish<br/> startet den Tcl/Tk-Interpeter<br/> exit<br/> beendet den Tcl/Tk-Interpeter<br/> wish Programm.tcl<br/> startet das Programm.tcl<br/> button .name Option/en Knopf definieren Optionen:<br/> -text "Aufschrift"<br/> Knopf-Aufschrift<br/> -text [Befehl]<br/> Knopf-Aufschrift vom Befehl<br/> -command {Befehl}<br/> Knopf-Befehl<br/> Befehl: z.B. exec ls oder exec xterm -e vi &<br/> -relief flat<br/> Knopf flach<br/> -relief raised<br/> Knopf erhoben<br/> -relief sunken<br/> Knopf eingedrückt<br/> -relief ridge<br/> Knopf Band erhoben<br/> -relief groove<br/> Knopf Band eingedrückt<br/> -padx Pixelzahl<br/> Abstand zum Rand in x-Richtung<br/> -pady Pixelzahl<br/> Abstand zum Rand in y-Richtung<br/> -image [ image create photo -file Bildname ]<br/> Knopf mit gif, ppm oder pgm<br/> -foreground Farbe<br/> Schriftfarbe "#rgb"->"#ff0000" oder red<br/> -fg Farbe<br/> Abkürzung für -foreground Farbe<br/> -background Farbe<br/> Knopffarbe<br/> -bg Farbe<br/> Abkürzung für -background Farbe<br/> -width Pixelbreite<br/> Knopfbreite<br/> -height Pixelhöhe<br/> Knopfhöhe<br/> -font Zeichensatz<br/> Schrift für den Knopf<br/> pack .name Option/en<br/> Knopf anzeigen Option:<br/> -fill x<br/> Knopf an die Fensterbreite anpassen<br/> -expand true<br/> Knopf im großen Fenster aufteilen<br/> 131<br/> <hr/> <a name=132></a><hr/> <a name=133></a>19. Perl<br/> perl -v<br/> überprüfen ob Perl installiert ist<br/> 133<br/> <hr/> <a name=134></a><hr/> <a name=135></a>20. CGI+Perl<br/> 20.1. Einleitung<br/> Was ist CGI?<br/> Common Gateway Interface. Web-Server-Schnittstelle, um mit<br/> anderen Programmen zusammenzuarbeiten.<br/> Was ist Perl?<br/> Practical Extraction and Report Language. Interpreter-Skript-<br/> Sprache, die häufig zur Programmierung von CGI-Anwendungen<br/> benutzt wird.<br/> 20.2. Perl<br/> 20.2.1. Texte und Strings<br/> # Kommentartext<br/> (Hash) Einzeiliger Kommentartext<br/> print "Text" ;<br/> Text ausgeben<br/> print "Text\n" ;<br/> \n Neue Zeile<br/> print "Text\r" ;<br/> \r Wagenrücklauf<br/> print "Text\t" ;<br/> \t Tabulator<br/> print "Text\v" ;<br/> \v Vertikalzeichen<br/> print "Text\f" ;<br/> \f Papiereinzugszeichen<br/> print "Text\b" ;<br/> \b Rücksetzzeichen<br/> print "Text\a" ;<br/> \a Piepton<br/> print "Text\e" ;<br/> \e Unterbrechungszeichen<br/> print $Variable ;<br/> Variable ausgeben<br/> print "Text\"" ;<br/> \" Gänsefüßchen ausgeben<br/> print "Text\’" ;<br/> \’ Einfache Anführungszeichen ausgeben<br/> print "Text\$" ;<br/> \$ Dollar-Zeichen ausgeben<br/> print "Text\\" ;<br/> \\ Backslash ausgeben<br/> print "Text".$Var."Text" ;<br/> . Verketten von Zeichenfolgen<br/> print "Text"x10 ;<br/> Text 10 mal zusgeben<br/> 20.2.2. Rechenoperationen<br/> $a=$b+$c ;<br/> Addition von $b und $c gleich $a<br/> $a=$b-$c ;<br/> Subtraktion von $b minus $c gleich $a<br/> $a=$b*$c ;<br/> Multiplikation von $b mal $c gleich $a<br/> $a=$b/$c ;<br/> Division $b geteilt durch $c gleich $a<br/> 135<br/> <hr/> <a name=136></a>20. CGI+Perl<br/> $a=$b**$c ;<br/> Potenz $b hoch $c gleich $a<br/> $a=$b%$c ;<br/> Modulo $b geteilt durch $c Rest gleich $a<br/> $a++ ;<br/> $a=$a+1 ;<br/> $a-- ;<br/> $a=$a-1 ;<br/> $a=3.1415 ;<br/> . Dezimaltrenner<br/> 20.2.3. Arrays (Listen)<br/> @Array=("W0","W1") ;<br/> Werte einer Array-Variable zuweisen (Kurzform)<br/> $Array[Indexwert]="Wert" ;<br/> Wert einer Array-Variable zuweisen (Langform)<br/> @Array=$Liste[2,4,8] ;<br/> Werte eines Arrays eines Arrays zuweisen<br/> print @Array ;<br/> Gesamtes Array ausgeben<br/> print $Array[Indexwert] ;<br/> Wert einer Array-Variable ausgeben<br/> print $#Array ;<br/> Nummer des letzten Listenelements ausgeben<br/> 20.2.4. String- und Zahlenvergleichsoperratoren<br/> Vergleich<br/> Zahlenvergleich Stringvergleich<br/> Gleich<br/> ==<br/> eq<br/> Ungleich<br/> !=<br/> ne<br/> Kleiner als<br/> <<br/> lt<br/> Größer als<br/> ><br/> gt<br/> Kleiner oder gleich<br/> <=<br/> le<br/> Größer oder gleich<br/> >=<br/> ge<br/> 20.2.5. if-Bedingung<br/> if (Bedingung)<br/> Wenn die Bedingung Wahr,<br/> {<br/> Befehle ;<br/> Befehle ausführen<br/> }<br/> 20.2.6. if-else-Bedingung<br/> if (Bedingung)<br/> Wenn die Bedingung Wahr,<br/> {<br/> Befehle ;<br/> Befehle ausführen<br/> }<br/>else<br/> sonst<br/> {<br/> Befehle ;<br/> Befehle ausführen<br/> }<br/> 136<br/> <hr/> <a name=137></a>20.3. Funktionen<br/> 20.2.7. if-elseif-Bedingung<br/> if (Bedingung)<br/> Wenn die Bedingung Wahr,<br/> {<br/> Befehle ;<br/> Befehle ausführen<br/> }<br/>elseif (Bedingung)<br/> sonst Wenn die Bedingung Wahr,<br/> {<br/> Befehle ;<br/> Befehle ausführen<br/> }<br/> 20.3. Funktionen<br/> 20.3.1. String Funktionen<br/> $Var=chop($String) ;<br/> Löscht das letzte Zeichen von String und<br/> gibt es an Var<br/> 20.3.2. Rechen Funktionen<br/> $a=sqrt($b) ;<br/> Quadratwurzel von $b nach $a<br/> $a=log($b) ;<br/> Logarithmus<br/> $a=exp($b) ;<br/> Exponenten<br/> $a=abs($b) ;<br/> Absoluterwert<br/> $a=int($b) ;<br/> Ganzzahlwert<br/> 20.3.3. Array Funktionen<br/> push(@Liste,@Elemente) ;<br/> Setzt ein oder mehrere Elemente an<br/> das Ende der Liste<br/> unshift(@Liste,"Wert") ;<br/> Setzt ein oder mehrere Elemente an<br/> den Anfang der Liste<br/> $a=shift(@Liste) ;<br/> Entfernt das erste Element aus der Liste<br/> und gibt es an $a<br/> $a=pop(@Liste) ;<br/> Entfernt das letzte Element aus der Liste<br/> und gibt es an $a<br/> splice(@Liste,Start,Anzahl,Element) ;<br/> Entfernt die Anzahl vom Start der Liste<br/> und fügt Element ein<br/> 137<br/> <hr/> <a name=138></a><hr/> <a name=139></a>21. Java<br/> 21.1. Funktion von Java<br/> +---------------+ +--------------------------+ +---------------------+<br/> | Programm Code |->| Java Compiler (java.exe) |->| Bytecode (01010011) |<br/> +---------------+ +--------------------------+ +---------------------+<br/> |<br/> |<br/> V<br/> V<br/> +--------------+<br/> +--------------+<br/> | Ineterpreter |<br/> | Browser/<br/> |<br/> | (java.exe)<br/> |<br/> | Appletviewer |<br/> +--------------+<br/> +--------------+<br/> javac.exe progammcode.java -> programmcode.class<br/> Programm compilieren<br/> java.exe programmcode<br/> Programm ausführen<br/> appletviewer.exe<br/> Applets ausführen<br/> 21.2. Sprache und Syntax von Java<br/> 21.2.1. Kommentrare<br/> /*<br/> Kommentar-Anfang<br/> */<br/> Kommentar-Ende<br/> //<br/> Einzeiliger Kommentar ohne Ende<br/> ;<br/> Anweisung abschließen<br/> 21.2.2. Datentypen<br/> Typ<br/> Inhalt<br/> Standdartwert<br/> Größe<br/> Wertebereich<br/> boolean True oder False<br/> False<br/> 1 Bit -<br/> char<br/> Unicode Zeichen<br/> 0000<br/> 16 Bit<br/> 0000 bis FFFF (Hex.)<br/> byte<br/> Ganzzahl mit Vorzeichen 0<br/> 8 Bit<br/> -256 bis 255<br/> short<br/> Ganzzahl mit Vorzeichen 0<br/> 16 Bit -32768 bis 32767<br/> int<br/> Ganzzahl mit Vorzeichen 0<br/> 32 Bit<br/> -2^31 bis 2^31-1<br/> long<br/> Ganzzahl mit Vorzeichen 0<br/> 64 Bit<br/> -2^63 bis 2^63-1<br/> float<br/> Kommazahl<br/> 0.0<br/> 32 Bit -<br/> double Kommazahl<br/> 0.0<br/> 64 Bit -<br/> 139<br/> <hr/> <a name=140></a>21. Java<br/> 21.2.3. Variablen<br/> Variable deklarieren<br/> boolean myBool;<br/> int x = 32;<br/> double y = 3.2;<br/> char buchstabe;<br/> Variabeln ansprechen<br/> this.buchstabe;<br/> bezieht sich auf die aktuelle Klasse<br/> 21.3. Pakete und Verzeichnisstrukturen<br/> 21.3.1. Sichtbarkeit und Zugriffsrechte von Klassen und<br/> Methoden<br/> public<br/> Klasse, Methode oder Variable die überall sichtbar ist<br/> protected<br/> Methode oder Variable die nur im eigenen Paket und<br/> abgeleiteten Klassen sichtbar ist<br/> default<br/> Klasse, Methode oder Variable die Sichtbarkei beschrängt<br/> sich auf das eigen Paket<br/> private protected<br/> Methode oder Variable die nur in abgeleiteten Klassen<br/> sichtbar ist<br/> private<br/> Methode oder Variable die nur in der eigenen Klasse<br/> sichtbar ist<br/> Zugriff<br/> public protected default private protected private<br/> -------<br/> ------ --------- ------- ----------------- -------<br/> Zugriff ...<br/> ... im selben Paket<br/> Ja<br/> Ja<br/> Ja<br/> Nein<br/> Nein<br/> ... von anderen Paketen<br/> Ja<br/> Nein<br/> Nein<br/> Nein<br/> Nein<br/> Vererbt ...<br/> ... Klassen im selben Paket<br/> Ja<br/> Ja<br/> Ja<br/> Ja<br/> Nein<br/> ... Klassen an andere Pakete Ja<br/> Ja<br/> Nein<br/> Ja<br/> Nein<br/> 21.3.2. Klassen<br/> class Klasse<br/> Klassendeklaration<br/> {<br/> ...<br/> }<br/> public class Klasse<br/> öffendliche Klassendeklaration<br/> 140<br/> <hr/> <a name=141></a>21.3. Pakete und Verzeichnisstrukturen<br/> {<br/> -ohne public ist die Klasse automatisch "privat"<br/> ...<br/> }<br/> package Paketklasse;<br/> Klassen zusammenfassen d.h. Paketklasse.Klasse<br/> public class Klasse<br/> {<br/> ...<br/> }<br/> package Paket.Paketklasse<br/> Oberklassen zusammenfassen d.h.<br/> Paket.Paketklasse.Klasse<br/> 21.3.3. Konstruktoren und Destruktoren<br/> class Klasse<br/> Konstruktor<br/> {<br/> -----------<br/> public Klasse()<br/> Methode die beim Erschaffen eines neuen Objektes<br/> {<br/> automatisch aufgerufen wird<br/> ...<br/> }<br/> Destruktor<br/> ----------<br/> protected void finalize()<br/> Methode die beim Löschen eines alten<br/> {<br/> Objektes automatisch aufgerufen wird<br/> ...<br/> }<br/> }<br/> 21.3.4. Methoden überladen<br/> class Klasse<br/> {<br/> Methode()<br/> Dieselbe Metode mehrmals mit unterschielichen<br/> {<br/> Parametern schaffen<br/> ...<br/> }<br/>Methode(int var)<br/> Dieselbe Metode mehrmals mit unterschielichen<br/> {<br/> Parametern schaffen<br/> ...<br/> }<br/> }<br/> 21.3.5. Objekte<br/> objekt Neuobjekt = new objekt();<br/> Neues Objekt Neuobjekt von der Klasse<br/> 141<br/> <hr/> <a name=142></a>21. Java<br/> objekt erstellen<br/> 21.3.6. Vererbung<br/> public class NeuKlasse extends Klasse {}<br/> neue Klasse NeuKlasse herstellen<br/> alle sichtbaren Eigenschaften<br/> und Methoden werden übernommen<br/> 21.3.7. Schnittstellen<br/> public interface Klasse {<br/> Schnittstelle erschaffen<br/> Methodenkopf();<br/> Variablen;<br/> }<br/> class NeuKlasse extends Klasse implements IntKlasse<br/> neue Klasse NeuKlasse<br/> herstellen<br/> alle sichtbaren Eigenschaften<br/> und Methoden werden übernommen<br/> und die Schnittstelle IntKlasse<br/> hinzufügen<br/> 21.4. Elementare Syntax von Java<br/> 21.4.1. Operratoren<br/> x = 10;<br/> Das Gleichheitszeichen weist immer den rechten Wert dem auf<br/> der linken Seite zu<br/> 21.4.2. Verknüpfungsoperatoren<br/> Operator<br/> Bedeutung<br/> Beispiel<br/> --------<br/> ---------<br/> --------<br/> +<br/> Addition<br/> 7 = 3 + 4;<br/> -<br/> Subtraktion<br/> 1 = 7 - 6;<br/> *<br/> Multiplikation 6 = 2 * 3;<br/> /<br/> Division<br/> 3 = 9 / 3;<br/> %<br/> Modulo(Rest)<br/> 1 = 9 % 4;<br/> 21.4.3. Inkrement-Operator<br/> x++;<br/> x = x + 1;<br/> 142<br/> <hr/> <a name=143></a>21.4. Elementare Syntax von Java<br/> 21.4.4. Dekrement-Operator<br/> x--;<br/> x = x - 1;<br/> 21.4.5. Arithmetische Zuweisungsoperatoren<br/> Operator<br/> Beispiel<br/> Bedeutung<br/> --------<br/> --------<br/> ---------<br/> +=<br/> x += 3;<br/> x = x + 3;<br/> -=<br/> x -= 3;<br/> x = x - 3;<br/> *=<br/> x *= 3;<br/> x = x * 3;<br/> /=<br/> x /= 3;<br/> x = x / 3;<br/> %=<br/> x %= 3;<br/> x = x % 3;<br/> 21.4.6. Bedingungen und Entscheidungen<br/> if(Bedingung) {<br/> wenn Bedingung wahr dann Anweisungen<br/> Anweisungen;<br/> if ( x != y ) { z++; }<br/> }<br/> Operator<br/> Beschreibung<br/> --------<br/> ------------<br/> ==<br/> Gleichheit<br/> !=<br/> Ungleichheit<br/> <<br/> kleiner als<br/> ><br/> größer als<br/> <=<br/> kleiner gleich<br/> >=<br/> größer gleich<br/> 21.4.7. if - else - Bedingungen<br/> if(Bedingung) {<br/> wenn Bedingung wahr dann Anweisungen1 sonst Anweisungen2<br/> Anweisungen1;<br/> if ( x != y ) { z++; } else { z--; }<br/> } else {Anweisungen2;<br/> }<br/> 21.4.8. Verschachtelte Bedingungen<br/> if(Bedingung1) {<br/> wenn Bedingung1 und Bedingung2 dann Anweisungen1<br/> if(Bedingung2){<br/> sonst Anweisungen2<br/> Anweisungen1;<br/> if( x != y ) { if( a < b ){z++;} } else { z--; }<br/> }<br/> } else {Anweisungen2<br/> }<br/> 143<br/> <hr/> <a name=144></a>21. Java<br/> 21.4.9. Fallunterscheidung mit switch - case<br/> switch(Ausdruck) {<br/> switch(2) {<br/> Route 2 also<br/> case Wert1: Anweisungen1;<br/> case 1: x++;<br/> x = x - 1;<br/> break;<br/> break;<br/> case Wert2: Anweisungen2;<br/> case 2: x--;<br/> break;<br/> break;<br/> case Wert3: Anweisungen3;<br/> }<br/> break;<br/> }<br/> 21.5. Schleifen<br/> 21.5.1. Die while - Schleife<br/> while(Bedingung) {<br/> int x=0;<br/> solange Bedingung wahr<br/> Anweisungen;<br/> while(x<10) {<br/> Anweisungen<br/> }<br/> x++;<br/> }<br/> 21.5.2. Die do - while - Schleife<br/> do {<br/> int x=0;<br/> Anweisungen dann solange<br/> Anweisungen;<br/> do {<br/> Bedingung wahr<br/> } while(Bedingung);<br/> x++;<br/> Anweisungen<br/> } while(x<10);<br/> 21.5.3. Die for - Schleife<br/> for(Initialisierung; Bedingung; Schleifenschritt) {<br/> solange Bedingung wahr<br/> Anweisungen;<br/> Anweisungen<br/> }<br/> for(x=0;x<10;x++) {<br/> y++;<br/> }<br/> 21.5.4. Schleifen mit break verlassen<br/> for(x=0;x<10;x++) {<br/> Die Schleife wird vor dem y++ verlassen<br/> break;<br/> y++;<br/> }<br/> 21.5.5. Schleife mit continue wiederholen<br/> for(x=0;x<10;x++) {<br/> Die Schleife wird vor dem y++ wiederholt<br/> 144<br/> <hr/> <a name=145></a>21.6. Komplexe Datentypen<br/> continue;<br/> y++;<br/> }<br/> 21.6. Komplexe Datentypen<br/> 21.6.1. Arrays<br/> int liste[] = new int[10];<br/> schafft ein Array dass zehn verschiedene int-<br/> Werte speichern kann<br/> int Array[][] = new int[3][3]; schafft ein zweidimensionales Array<br/> int liste[] = {3, 5, 7};<br/> schaft ein Array mit 3 Werten<br/> liste[0] = Wert;<br/> Wert des 1. Elements zuweisen<br/> liste[0][0] = Wert;<br/> Wert des 1. Elements zuweisen<br/> Wert = liste[0];<br/> Wert des 1. Elements abrufen<br/> Wert = liste[0][0];<br/> Wert des 1. Elements abrufen<br/> liste.length<br/> enthält die Länge des Arrays liste<br/> 21.7. Die Anweisung import<br/> import haus.wand.stein;<br/> import erlaubt es Klassen im Sourcecode<br/> getAnzahl();<br/> über einen gekürzten Namen anzuspechen<br/> haus.wand.stein.getAnzahl() -> getAnzahl()<br/> import java.lang.*;<br/> importiert alle Bestandteile ins Programm<br/> 21.8. Java eigene Klassen<br/> 21.8.1. Die Klasse Math<br/> Math.*<br/> bietet mathematische Funktionen<br/> Math.E<br/> Eulersche Zahl<br/> Math.PI<br/> PI<br/> Math.random()<br/> Zufallszahl zwischen 0 und 1<br/> Math.round()<br/> rundet zu Ganzzahlen<br/> 21.9. Die Klasse Object<br/> 21.9.1. Die Klasse Object<br/> getClass()<br/> liefert die Klasse eines Objektes zurück<br/> equals()<br/> vergleicht zwei Objekte gibt true oder false<br/> 145<br/> <hr/> <a name=146></a>21. Java<br/> 21.10. Die Klasse Runtime<br/> Um diese Klasse zu nutzen,muss mit getRuntime() erst ein Objekt erstellt werden!<br/> Runtime mySystem = Runtime.getRuntime();<br/> Objekt Runtime erstellen<br/> freeMemory()<br/> freier Speicher<br/> totalMemory()<br/> gesamter Speicher<br/> exit(0)<br/> Programm sofort mit Wert verlassen<br/> exec()<br/> Systemprogramme starten (s. Exceptions)<br/> 21.11. Die Klasse String<br/> String s = "Hallo" + " Du !";<br/> Strings zusammenfassen<br/> charAt()<br/> gibt einen Buchstaben aus dem String zurück<br/> indexOf()<br/> Position von Buchstaben/ketten feststellen<br/> substring()<br/> String auseinanderschneiden<br/> lenght()<br/> Länge eines Strings bestimmen<br/> 21.12. Die Klasse Stringbuffer<br/> 21.12.1. Die Klasse Stringbuffer<br/> Um diese Klasse zu nutzen, muss erst ein Objekt erstellt werden!<br/> Stringbuffer buffer = newStringbuffer("");<br/> Objekt Stringbuffer erstellen<br/> setCharAt()<br/> änderrung eines bestimmten Buchstaben im String<br/> delete()<br/> löscht Teile aus dem String<br/> replace()<br/> ersetzt Teile im String<br/> insert()<br/> setzt Teile im String ein<br/> 21.13. Die Klasse System<br/> Standardeingabe - in, Standardausgabe - out, Fehlerausgabe - err<br/> System.out.println("Text")<br/> Text ausgeben<br/> byte[] b = new byte[80];<br/> System.in.read(b);<br/> Einlesen von Daten<br/> 21.14. Das Paket java.util<br/> import java.util.*;<br/> Paket einbinden<br/> 146<br/> <hr/> <a name=147></a>21.15. Ausnahmen (Exceptions)<br/> 21.14.1. Die Klasse Date<br/> Date myDate = new Date();<br/> Objekt Date erstellen<br/> toString()<br/> Datum in einen String umwandeln<br/> getTime()<br/> UNIX-Timestamp, der die Sekunden seit dem<br/> 1.1.1970 ausgibt<br/> before()<br/> vergleicht das Datumsobjekt od es davor ist<br/> after()<br/> vergleicht das Datumsobjekt od es danach ist<br/> Erweiterte Funktionen rund um das Datum gibt es in der Klasse Calendar bzw.<br/> DateFormat in der Java-API<br/> 21.14.2. Die Klasse Random<br/> Random zz = new Random();<br/> Objekt Random erstellen<br/> Methode<br/> Bereich<br/> Typ<br/> -------<br/> -------<br/> ---<br/> nextInt()<br/> -2^31 bis 2^31-1<br/> int<br/> nextLong()<br/> -2^63 bis 2^63-1<br/> long<br/> nextFloat()<br/> 0.0 bis 1.0<br/> float<br/> nextDouble()<br/> 0.0 bis 1.0<br/> double<br/> nextGaussian()<br/> gibt eine Zufallszahl zurück, die nach dem Gauß-<br/> Verfahren ermittelt wurde<br/> 21.14.3. Die Klasse Stack<br/> Stack myStack = new Stack();<br/> Objekt Stack erstellen<br/> push()<br/> legt ein Objekt auf dem Stack ab<br/> pop()<br/> holt das oberste Objekt vom Stack und löscht es<br/> peek()<br/> holt das oberste Objekt vom Stack<br/> 21.15. Ausnahmen (Exceptions)<br/> import java.io.*;<br/> public class trycatchfinally {<br/> public static void main(String args[]) {<br/> Runtime mySystem = Runtime.getRuntime();<br/> //Objekt Runtime erstellen<br/> try{<br/> //unsichere Anweisungen<br/> mySystem.exec("xaos");<br/> } catch(IOException e) {<br/> //Fehlerbehandlung<br/> System.err.println("Es ist ein Fehler aufgetreten: " + e);<br/> 147<br/> <hr/> <a name=148></a>21. Java<br/> } finally {<br/> //Anweisungen werden immer ausgeführt<br/> System.out.println("Kritischer Bereich wurde ausgeführt!");<br/> }<br/> }<br/> }<br/> 21.15.1. Eigene Ausnahme erzeugen (throw)<br/> Methode(int zahl) {<br/> if(zahl<0) {<br/> throw(new Exception("Fehler!"));<br/> } elese {zahl++;<br/> }<br/> }<br/> 21.16. Multitasking mit Threads<br/> 21.16.1. Arbeiten mit Threads<br/> java.lang<br/> die Klasse Thread ist ein Bestandteil des Paketes<br/> public class Klasse implements Runnable {}<br/> neue Klasse über die<br/> Schnittstelle Runnable erstellen<br/> run()<br/> Methode run() (Code des Threads)<br/> muss überschrieben werden<br/> Klasse test = new Klasse();<br/> In main(): Objekt der eigenen Klasse<br/> test.start();<br/> erstellen und Startmethode<br/> aufrufen<br/> public void start() {<br/> Thread myThread = new Thread(this);<br/> Objekt aus der Klasse Thrad<br/> erstellen und deren Konstruktor<br/> das aktuelle Objekt als<br/> parameter übergeben<br/> myThread.start();<br/> Thread starten<br/> ...;<br/> myThread.stop();<br/> Thread beenden<br/> }<br/> myThread.sleep(x);<br/> Thread x Milisekunden pausieren<br/> muss mit Ausnahme abgefangen<br/> 148<br/> <hr/> <a name=149></a>21.17. Applets<br/> werden InterruptedException<br/> myThread.suspend();<br/> Thraed anhalten<br/> myThread.resume();<br/> Thread wieder starten<br/> myThread.destroy();<br/> Thread zerstören/anhalten<br/> 21.17. Applets<br/> 21.17.1. Applets in eine Webseite einbinden<br/> <html><br/> <head><br/> <title>Mein erstes Applet</title><br/> </head><br/> <body><br/> <applet code="myApplet.class" width=150 height=150><br/> <parm name="var1" value="Hallo"><br/> <parm name="var2" value="Java!"><br/> </applet><br/> </body><br/> </html><br/> 21.17.2. Das erste Java Applet<br/> import java.applet.*;<br/> import java.awt.*;<br/> public class MyApplet extends Applet {<br/> public void paint(Graphics g) {<br/> g.drawString("Mein erstes Applet !", 20, 40);<br/> }<br/> }<br/> 21.17.3. Die Methoden eines Applets<br/> init()<br/> wird automatisch bei der Initialisierung des Applets aufgerufen<br/> start()<br/> wird automatisch aufgerufen, wenn das Applet im sichtbaren<br/> Browser-Bereich erscheint<br/> stop()<br/> wird automatisch aufgerufen, wenn das Applet den sichtbaren<br/> Bereich verläßt<br/> destroy()<br/> wird automatisch beim verlassen der Seite oder schließen des<br/> Browsers aufgerufen<br/> 21.17.4. Ein Applet im Überblick<br/> import java.applet.*;<br/> import java.awt.*;<br/> 149<br/> <hr/> <a name=150></a>21. Java<br/> public class newApplet extends Applet {<br/> public void init() {<br/> //initialisierung aller nötigen Werte für das Programm<br/> }<br/>public void start() {<br/> //Start des Applets<br/> }<br/>public void paint(Graphics g) {<br/> //Grafikausgabe über das Objekt g !<br/> }<br/>public void stop() {<br/> //Stop des Applets<br/> }<br/>public void destroy() {<br/> //Ende des Applets<br/> //Speicher wird freigegeben<br/> }<br/> }<br/> 21.17.5. Pakete<br/> java.awt<br/> dient zur Bearbeitung und Ausgabe von Grafiken und<br/> Fensterelementen in Applikationen und Applets<br/> (advanced window toolkit)<br/> java.applet<br/> eine Grundvoraussetzung für ein Applet<br/> 21.17.6. Die Klasse Graphics<br/> public void paint(Graphics g) {<br/> um in das Applet zu zeichnen<br/> drawString("Text",x,y);<br/> Text im Applet ausgeben<br/> }<br/> drawLine()<br/> Linie zeichnen<br/> drawRect()<br/> Rechteck zeichnen<br/> fillRect()<br/> gefülltes Rechteck zeichen<br/> drawRoundRect()<br/> Rechteck mit abgerundeten Ecken zeichnen<br/> fillRoundRect()<br/> gefülltes Rundeck zeichnen<br/> drawOval()<br/> Kreis/Elipse zeichnen<br/> fillOval()<br/> gefüllte/r Kreis/Elipse zeichnen<br/> copyArea()<br/> kopieren eines sichtbaren Bereiches<br/> 21.17.7. Die Klasse Color<br/> Color farbe = new Color(r,g,b);<br/> Farben erzeugen r=0-255 g=0-255 r=0-255<br/> Color dfarbe = farbe.darker();<br/> nächst dunklere Farbe<br/> 150<br/> <hr/> <a name=151></a>21.17. Applets<br/> Color hfarbe = farbe.brighter();<br/> nächst hellere Farbe<br/> Konstante<br/> Frabe<br/> ---------<br/> -----<br/> Clolor.white<br/> weiss<br/> Clolor.yellow<br/> gelb<br/> Clolor.orange<br/> orange<br/> Clolor.grey<br/> grau<br/> Clolor.pink<br/> pink<br/> Clolor.red<br/> rot<br/> Clolor.magenta<br/> magenta<br/> Clolor.green<br/> grün<br/> Clolor.blue<br/> blau<br/> Clolor.darkGray<br/> dunkelgrau<br/> Clolor.lightGray<br/> hellgrau<br/> Clolor.black<br/> schwarz<br/> 21.17.8. Die Klasse Font<br/> Windows<br/> Java<br/> -------<br/> ----<br/> Arial<br/> Helvetica<br/> Courier New<br/> Corier<br/> MS Sans Serif<br/> Dialog<br/> Times New Roman TimesRoman<br/> WingDings<br/> ZapfDingbats<br/> Arial<br/> default<br/> Font f = new Font("art", stil, größe);<br/> neue Schrift erstellen<br/> stil: plain(normal),<br/> italic(kursiv), blod(fett)<br/> 21.17.9. Die Klasse Image<br/> Image myImage = getImage(getCodeBase(), "Bild.jpg");<br/> Bildobjekt erschaffen<br/> drawImage()<br/> Bild anzeigen<br/> 21.17.10. Die Klasse Button<br/> Button myButton = new Button("Klick");<br/> Buttonobjekt erschaffen<br/> setLabel()<br/> Beschriftung des Buttons ändern<br/> getLabel()<br/> Beschriftung des Buttons auslesen<br/> 151<br/> <hr/> <a name=152></a>21. Java<br/> 21.18. Eventhandling<br/> java.awt.event.*;<br/> Paket zur Ereignisbehandlung einbinden<br/> 21.18.1. Mouse Events<br/> public class myApplet extends Applet implements MouseListener {}<br/> Schnittstelle MouseListener implementieren<br/> Methode<br/> Aufgabe<br/> -------<br/> -------<br/> mousePressed() Maustaste wird gedrückt<br/> mouseReleased() Maustaste wird losgelassen<br/> mouseClicked() Mausklick<br/> mouseEntered() Maus bewegt sich in das Applet<br/> mouseExited()<br/> Maus verlässt das Applet<br/> addMouseListener(this);<br/> Listener soll auf das gesamte Applet achten<br/> public void mousePressed(mouseEvent e) {<br/> int x = e.getX();<br/> Maustaste an X gedrückt<br/> int y = e.getY();<br/> Maustaste an Y gedrückt<br/> }<br/> addMouseMotionListener(this);<br/> MotionListener soll auf das Applet achten<br/> mouseMoved()<br/> bewegte Mausereignisse<br/> mouseDragged()<br/> 21.18.2. Action Events<br/> public class myApplet extends Applet implements ActionListener {}<br/> Schnittstelle ActionListener implementieren<br/> Button myButton = new Button("Knopf"); Button erstellen<br/> this.add(myButton);<br/> Button setzen<br/> myButton.addActionListener(this);<br/> Button mit ActionListener versehen<br/> public void actionPerformed(ActionEvent e) {<br/> Aufruf beim Anklicken des Button<br/> String Klick = e.getActionCommand();<br/> gibt die Aufschift des Button<br/> }<br/> 21.18.3. Parameter an ein Applet<br/> <applet code="myApplet.class" width=150 height=150><br/> 152<br/> <hr/> <a name=153></a>21.18. Eventhandling<br/> <parm name="var1" value="Hallo"><br/> Parameter1<br/> <parm name="var2" value="Java!"><br/> Parameter2<br/> </applet><br/> String var1 = getParameter("var1");<br/> Parameter1 an den String var1<br/> String var2 = getParameter("var2");<br/> und var2 übergeben<br/> 21.18.4. Weitere wichtige Pakete<br/> java.net<br/> Klassen und Schnittstellen für Netzwerkentwicklung<br/> java.beans<br/> wieder verwentbare Komponenten<br/> java.security<br/> erhöte Sicherheit innerhalb von Applikationen/Applets<br/> java.rmi<br/> Verteilung eines Programms auf mehrere Rechner<br/> java.sql<br/> Anbindung an SQL-Datenbanken<br/> java.servlet<br/> Applikationen die serverseitig laufen<br/> 153<br/> <hr/> <a name=154></a><hr/> <a name=155></a>22. JavaScript<br/> 22.1. Einbindung von JavaScript<br/> 22.1.1. Einbindung in den Head<br/> <html><br/> <head><br/> <title></title><br/> <script language="JavaScript"><br/> Leitet den JavaScript-Quelltext ein<br/> <!--<br/> Kommentar anfang für alte Browser die<br/> Definition von Fnktionen und<br/> kein JavaScript unterstüzen<br/> Variablen<br/> JavaScript-Quelltext<br/> //--><br/> Kommentar ende<br/> </script><br/> Beendet den JavaScript-Quelltext<br/> </head><br/> <body><br/> </body><br/> </html><br/> 22.1.2. Einbindung in den Body<br/> <html><br/> <head><br/> <title></title><br/> </head><br/> <body><br/> <script><br/> Leitet den JavaScript-Quelltext ein<br/> </script><br/> Beendet den JavaScript-Quelltext<br/> </body><br/> </html><br/> 22.1.3. Ausführen bei bestimmten Aktionen<br/> <html><br/> <head><br/> <title></title><br/> </head><br/> <body onLoad="JavaScript-Quelltext"> Beim Laden wird der JavaScript-Quelltext<br/> 155<br/> <hr/> <a name=156></a>22. JavaScript<br/> ausgeführt<br/> </body><br/> </html><br/> 22.2. Variablen<br/> var GlobaleVariable<br/> Globale Variable deklarieren<br/> function() {<br/> var LokaleVariable<br/> Lokale Variable deklarieren<br/> }<br/> var variable<br/> Variable deklarieren<br/> variable = "Wert"<br/> Wert zuweisen<br/> var zahl=9<br/> Variable deklarieren und Wert zuweisen<br/> +<br/> Verketten<br/> 22.3. Objekte<br/> 22.3.1. Standardobjekte<br/> document.write("Hallo")<br/> Hallo auf der Seite ausgeben<br/> document.writeln("Hallo")<br/> Hallo auf der Seite mit Zeilenumruch<br/> ausgeben<br/> document.close()<br/> Schreiben schließen<br/> document.bgColor=("ffffff")<br/> Hintergrunffarbe<br/> document.fgColor=("000000")<br/> Fordergrundfarbe<br/> document.linkColor=("00ff00")<br/> Neuer Link<br/> document.vlinkColor=("ffff00")<br/> Besuchter Link<br/> document.alinkColor=("ff0000")<br/> Aktiver Link<br/> document.referrer<br/> URL von der aufgerufen wurde<br/> document.location<br/> URL der Datei selber<br/> document.title<br/> Titel der Seite<br/> document.Name.src="bild2.gif"<br/> <img src="bild.gif" name="Name"> um auf<br/> das Bild zuzugreifen<br/> document.forms[0].Name.value<br/> Formular 1(0); aktueller Text im<br/> Eingabefeld auslesen oder überschreiben<br/> document.forms[0].Name.defaultValue<br/> Defaultwert auslesen oder überschreiben<br/> document.forms[0].Name.select()<br/> Text im Eingabefeld makieren<br/> document.forms[0].Name.focus()<br/> Cursor in das Eingabefeld setzen<br/> 156<br/> <hr/> <a name=157></a>22.3. Objekte<br/> document.forms[0].Name[0].checked<br/> Radio-Checkbuttons liest oder schreibt,<br/> ob ein Button ausgewählt ist<br/> document.forms[0].Name[0].defaultCheckedVoreinstellung eines Button lesen oder<br/> schreiben<br/> nicht markiert<br/> markiert<br/> 0<br/> 1<br/> false<br/> true<br/> document.forms[0].Name.options[0].selectedIndex<br/> Auswahlliste auslesen oder schreiben<br/> document.forms[0].Name.options[0].value Wert auslesen oder schreiben<br/> parent.frames[0].location.href=<br/> Frameinhalt ändern 0 -> Frame 1<br/> "frame.htm"<br/> parent.<br/> verzweigt in den nächsthöheren Frame<br/> top.<br/> verzweigt in den höchsten Frame im<br/> Browser<br/> frames[n]<br/> verzweigt auf die nächstniedrigere Stufe<br/> in den Frame mit dem Index n<br/> window.status=("Hallo")<br/> Hallo in der Statusleiste ausgeben<br/> myWindow=window.open("Dateiname","Fenstername","Eigenschaften")<br/> Öffnet ein neues Fenster<br/> Eigenschaften: width=(Pixel)<br/> gibt die Breite an<br/> height=(Pixel)<br/> gibt die Höhe an<br/> resizable=yes/no<br/> größe des Fensters veränderbar ?<br/> menubar=yes/no<br/> Menüleiste vorhanden ?<br/> toolbar=yes/no<br/> Buttonleiste vorhanden ?<br/> location=yes/no<br/> Adresszeile vorhanden ?<br/> status=yes/no<br/> Statuszeile vorhanden ?<br/> scrollbars=yes/no<br/> Bildlaufleiste vorhanden ?<br/> dependent=yes/no<br/> Vom aktuellen Fenster abhängig ?<br/> myWindow.close()<br/> Schließt das neue Fenster<br/> myWindow.closed<br/> Zugriff auf den Fensterzustand<br/> 22.3.2. String-Objekt<br/> String.length<br/> Anzahl der Zeichen des Strings<br/> String.substring(Anfang,Ende)<br/> Gibt den Anfang bis Ende des Strings zurück<br/> String.toLowerCase<br/> Wandelt alle Buchstaben in Kleinbuchstaben<br/> String.toUpperCase<br/> Wandelt alle Buchstaben in Großbuchstaben<br/> 157<br/> <hr/> <a name=158></a>22. JavaScript<br/> 22.3.3. Eigene Objekte<br/> function person(name, alter) {<br/> Funktion<br/> this.name = name<br/> zum<br/> this.alter = alter<br/> Objekt<br/> }<br/> anlegen<br/> var meier = new person("Geier Meier", 18)<br/> Objekt erzeugen<br/> meier.name = "Mr. Geier Meier"<br/> Wert ändern<br/> meier.alter = 20<br/> Wert ändern<br/> meier = new Object<br/> Objekt erzeugen<br/> meier.vorname = "Geier"<br/> Wert zuweisen<br/> meier.nachname = "Meier"<br/> Wert zuweisen<br/> 22.3.4. Arrays<br/> Variable = new Array<br/> Array erzeugen<br/> Variable[0] = "hallo"<br/> Wert zuweisen<br/> 22.4. Mathematische Operationen<br/> c = a + b<br/> Addition<br/> a++ ; a = a + 1<br/> c = a - b<br/> Subtraktion<br/> a-- ; a = a - 1<br/> c = a * b<br/> Multiplikation<br/> c = a / b<br/> Division<br/> a = Math.round(b)<br/> Ganzzahlige Rundung<br/> 22.5. Bedingte Ausführung<br/> if(Ausdruck)<br/> wenn der Ausdruck stimmt,<br/> {<br/> Anweisung-en1<br/> Anweisung-en1<br/> }<br/> 22.6. Schleifen<br/> for(Ausdruck1;Ausdruck2;Ausdruck3)<br/> Ausdruck1 einmal ausführen<br/> {<br/> so lange der Ausdruck2 stimmt,<br/> vorher noch Ausdruck3<br/> Anweisug-en<br/> Anweisung-en<br/> 158<br/> <hr/> <a name=159></a>22.7. Event-Handler<br/> }<br/> while(Ausdruck)<br/> so lange der Ausdruck stimmt,<br/> {<br/> Anweisung-en<br/> Anweisung-en<br/> }<br/> 22.7. Event-Handler<br/> onLoad="Aktion"<br/> Beim Laden Aktion ausführen<br/> onUnload="Aktion"<br/> Beim Schließen Aktion ausführen<br/> onMouseOver="Aktion"<br/> Beim Überfahren Aktion ausführen<br/> onMouseOut="Aktion"<br/> Beim Verlassen Aktion ausführen<br/> onFocus="Aktion"<br/> Beim Setzen des Cursors auf das Element<br/> (Einsatz in Formularen)<br/> onBlur="Aktion"<br/> Beim Verlassen des Elementes<br/> onChange="Aktion"<br/> Beim Verlassen des Elementes wenn verändert<br/> onClick="Aktion"<br/> Beim Anklicken eines Formularelements<br/> <a href="javascript:function(’Link’)">Verweistext</a><br/> onSubmit="Aktion"<br/> Beim Senden eines Formulares Aktion ausführen<br/> 22.8. Funktionen<br/> function Name(var1,var2)<br/> Definiert eine Funktion mit dem Name<br/> { alert(var2)<br/> Hier kommt der Funktionsinhalt rein<br/> }<br/> return("Hallo")<br/> Hallo zurück geben<br/> alert("Text")<br/> Öffnet ein Fenster und gibt den Text aus<br/> uhrzeit=new Date()<br/> Datum und Uhrzeit in das Objekt uhrzeit<br/> schreiben<br/> st=uhrzeit.getHours()<br/> Stunden aus dem Objekt uhrzeit der Variable<br/> st zuweisen<br/> min=uhrzeit.getMinutes()<br/> Minuten aus dem Objekt uhrzeit der Variable<br/> min zuweisen<br/> setTimeout("Funktion",Millisekunden)<br/> Funktion nach Millisekunden aufrufen<br/> Math.random()<br/> 159<br/> <hr/> <a name=160></a>22. JavaScript<br/> 22.9. Reservierte Wörter<br/> abstract<br/> boolean<br/> break<br/> byte<br/> case<br/> catch<br/> char<br/> class<br/> const<br/> continue<br/> debugger<br/> default<br/> delete<br/> else<br/> enum<br/> export<br/> extends<br/> false<br/> final<br/> finally<br/> float<br/> for<br/> function<br/> goto<br/> if<br/> implements<br/> import<br/> in<br/> instanceof<br/> int<br/> interface<br/> long<br/> native<br/> new<br/> null<br/> package<br/> private<br/> protected<br/> public<br/> return<br/> short<br/> static<br/> super<br/> 160<br/> <hr/> <a name=161></a>22.9. Reservierte Wörter<br/> switch<br/> synchronized<br/> this<br/> throw<br/> throws<br/> transient<br/> true<br/> try<br/> typeof<br/> var<br/> void<br/> volatile<br/> while<br/> with<br/> 161<br/> <hr/> <a name=162></a><hr/> <a name=163></a>Teil V.<br/> Anhang<br/> 163<br/> <hr/> <a name=164></a><hr/> <a name=165></a>23. Glossar<br/> Abhängigkeiten Ein von rpm verwendetes System, um die Verwaltung installierter<br/> Software zu vereinfachen. Jedes Paket enthält ein Skript, das dem lokalen rpm<br/> mitteilt, welche anderen Pakete es zur Ausführung benötigt. Sind die erforderli-<br/> chen Pakete nicht installiert, wird die Installation abgebrochen. Gleiches gilt für<br/> die Deinstallation.<br/> Andere, others In UNIX die Gruppe der Benutzer, die weder Eigetümer einer Datei<br/> sind, noch zur Besitzergruppe gehören. Es ist generell eine gute Idee, die Rechte<br/> dieser Gruppe so restriktiv wie möglich zu handhaben. Siehe auch Besitzergrup-<br/> pe.<br/> alias Ein Shell-Mechanismus, um eine Zeichenkette durch einen anderen zu ersetzen,<br/> bevor ein Kommando ausgeführt wird. Einen Überblick über alle definierten<br/> Aliasse erhalten Sie mit dem Kommando alias.<br/> Anzeigehilfe Programm zum Anzeigen einer (Text-) Datei. Es bietet die Möglichkeit<br/> einfach vorwärts und rückwärts durch das Dokument zu navigieren sowie Zei-<br/> chenketten zu suchen. Wir empfehlen Ihnen das Programm less zu verwenden<br/> (u.a. da es die selben Tastaturkürzel wie vim verwendet).<br/> APM Advanced Power Management (”Fortgeschrittenes Energiemanagement”). Wird<br/> von einigen BIOSsen dazu benutzt, die Maschine nach einer Periode von Inakti-<br/> vität in einen energiesparenden Ruhezustand zu bringen. Auf Laptops ist APM<br/> auch dafür zuständig, Informationen über den Batteriestatus bzw. die verblei-<br/> bende Arbeitszeit bereit zu stellen.<br/> Arbeitsfläche Wenn Sie das X-Windows-System verwenden, ist die Arbeitsfläche der<br/> teil des Bildschirmes, auf dem Sie arbeiten und auf dem Ihre Symbole und Fenster<br/> dargestellt werden. Manschmal wird auch lachs vom ”Hitergrund” gesprochen.<br/> Siehe auch: virtuelle Arbeitsfläche.<br/> ARP Address Resolution Protocol. (”Protokoll zur Adress-Auflösungs”). Das Protokoll<br/> um IP-Adressen dynamisch in physikalische (Hardware-)Adressen umzuwandeln.<br/> Nur möglich auf direkt verbundenen Netzwerken im Hardware- Broadcasting.<br/> ASCII Abkürzung für American Standart Code for Information Interchange. Es han-<br/> delt sich um den meistvervwendeten 7-Bit-Kode zur Darstellung von Ziffern,<br/> Buchstaben und Sonderzeichen. Der ASCII-Code ist mittlerweile per ”normati-<br/> ver Kraft des Faktischen” durch den ISO Standart 8859-1 abgelöst (Siehe ISO<br/> 8859).<br/> 165<br/> <hr/> <a name=166></a>23. Glossar<br/> Assembler Maschinensprache. Vorstufe des Objekt-Kodes. Programme werden meist<br/> in sogenannten Hochsprachen (wie C) geschrieben, die dann per Kompilation in<br/> Assembler umgewandelt werden.<br/> ATAPI eine Familie von CD-ROM-Laufwerken, die an den IDE-Controller angeschlos-<br/> sen werden. Es gibt auch SCSI-Laufwerke, die am SCSI-Controler betrieben wer-<br/> den, sowie proprietäre Laufwerke, die ihren eigenen Controller benutzen oder an<br/> die Soundkarte angeschlossen werden.<br/> atomar Eine Gruppe von Operationen, die nicht weiter aufgeteilt werden kann.<br/> ausführlicher Modus Befehle produzieren im ausführlichen Modus Zusatzinformatio-<br/> nen, die auf die Standardausgabe oder Standart-Fehlerausgabe ausgegeben wer-<br/> den. Einige Programme bieten die Möglichkeit einzustellen wie ”redselig” sie sein<br/> sollen.<br/> HTTP HyperText Transfer Protokoll(Hypertext-Übertragungsprotokoll). Ist ein Pro-<br/> tokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich ein-<br/> gesetzt, um Webseiten aus dem World Wide Web (WWW) in einen Webbrowser<br/> zu laden.<br/> URL Uniform Resource Locator (Einheitlicher Quellenanzeiger). Bezeichnet man ei-<br/> ne Unterart von Uniform Resource Identifiern (URIs). URLs identifizieren und<br/> lokalisieren eine Ressource über die zu verwendende Zugriffsmethode (z. B. das<br/> verwendete Netzwerkprotokoll wie HTTP oder FTP) und den Ort (engl. locati-<br/> on) der Ressource in Computernetzwerken. Im allgemeinen Sprachgebrauch wer-<br/> den sie auch als Internetadresse bezeichnet, wobei damit (der umgangssprachlich<br/> häufigen Gleichsetzung von Internet und WWW folgend) meist speziell URLs<br/> von Webseiten gemeint sind.<br/> USV Unterbrechungsfreie Stromversorgung. Sehr großer Akku (aufladbare Baterie)<br/> der bei einem Stromausfall den Rechner mit Strom versorgt.<br/> WWW World Wide Web(Weltweites Netz). Ist ein über das Internet abrufbares Hypertext-<br/> System, bestehend aus elektronischen Dokumenten, die durch Hyperlinks mit-<br/> einander verknüpft sind.<br/> 166<br/> <hr/> <a name=167></a>Stichwortverzeichnis<br/> &, <a href="linuxs.html#30">30</a><br/> echo, <a href="linuxs.html#20">20</a><br/> host, <a href="linuxs.html#34">34</a><br/> egrep, <a href="linuxs.html#24">24</a><br/> hosts, <a href="linuxs.html#50">50</a><br/> affs, <a href="linuxs.html#49">49</a><br/> Eigentümer, <a href="linuxs.html#28">28</a><br/> hpfs, <a href="linuxs.html#49">49</a><br/> alias, <a href="linuxs.html#22">22</a><br/> emerge, <a href="linuxs.html#33">33</a><br/> htop, <a href="linuxs.html#30">30</a><br/> apt, <a href="linuxs.html#32">32</a><br/> env-update, <a href="linuxs.html#31">31</a><br/> apt-get, <a href="linuxs.html#32">32</a><br/> equery, <a href="linuxs.html#33">33</a><br/> ifconfig, <a href="linuxs.html#34">34</a><br/> etc-update, <a href="linuxs.html#33">33</a><br/> info, <a href="linuxs.html#20">20</a><br/> bash, <a href="linuxs.html#55">55</a><br/> euse, <a href="linuxs.html#33">33</a><br/> init, <a href="linuxs.html#19">19, </a><a href="linuxs.html#20">20</a><br/> bg, <a href="linuxs.html#30">30</a><br/> expand, <a href="linuxs.html#25">25</a><br/> initctl, <a href="linuxs.html#20">20</a><br/> Bildschirmschoner, <a href="linuxs.html#19">19,</a><br/> export, <a href="linuxs.html#31">31, </a><a href="linuxs.html#38">38, </a><a href="linuxs.html#55">55</a><br/> insmod, <a href="linuxs.html#17">17</a><br/> <a href="linuxs.html#39">39</a><br/> ext2, <a href="linuxs.html#49">49</a><br/> ip, <a href="linuxs.html#34">34</a><br/> blockorientiert, <a href="linuxs.html#28">28</a><br/> ext3, <a href="linuxs.html#49">49</a><br/> iso9660, <a href="linuxs.html#49">49</a><br/> bzip2, <a href="linuxs.html#17">17</a><br/> fakeroot, <a href="linuxs.html#17">17</a><br/> jobs, <a href="linuxs.html#30">30</a><br/> cat, <a href="linuxs.html#23">23</a><br/> fdformat, <a href="linuxs.html#27">27</a><br/> cd, <a href="linuxs.html#23">23</a><br/> Kernel, <a href="linuxs.html#17">17</a><br/> fdisk, <a href="linuxs.html#27">27</a><br/> cfdsik, <a href="linuxs.html#27">27</a><br/> kill, <a href="linuxs.html#30">30</a><br/> fg, <a href="linuxs.html#30">30</a><br/> chgrp, <a href="linuxs.html#28">28</a><br/> ksh, <a href="linuxs.html#55">55</a><br/> fgrep, <a href="linuxs.html#24">24</a><br/> chmod, <a href="linuxs.html#28">28</a><br/> file, <a href="linuxs.html#22">22</a><br/> last, <a href="linuxs.html#20">20</a><br/> chown, <a href="linuxs.html#28">28</a><br/> find, <a href="linuxs.html#24">24</a><br/> ldd, <a href="linuxs.html#34">34</a><br/> chroot, <a href="linuxs.html#31">31</a><br/> finger, <a href="linuxs.html#20">20</a><br/> less, <a href="linuxs.html#23">23</a><br/> clock, <a href="linuxs.html#21">21</a><br/> free, <a href="linuxs.html#20">20</a><br/> ln, <a href="linuxs.html#23">23</a><br/> cmp, <a href="linuxs.html#25">25</a><br/> fsck, <a href="linuxs.html#27">27</a><br/> locate, <a href="linuxs.html#55">55</a><br/> comm, <a href="linuxs.html#25">25</a><br/> fstab, <a href="linuxs.html#48">48</a><br/> login, <a href="linuxs.html#19">19</a><br/> compress, <a href="linuxs.html#25">25</a><br/> ftp, <a href="linuxs.html#34">34</a><br/> logout, <a href="linuxs.html#19">19</a><br/> cp, <a href="linuxs.html#23">23</a><br/> losetup, <a href="linuxs.html#28">28</a><br/> csh, <a href="linuxs.html#55">55</a><br/> git, <a href="linuxs.html#119">119</a><br/> lpq, <a href="linuxs.html#25">25</a><br/> gpg, <a href="linuxs.html#17">17, </a><a href="linuxs.html#36">36</a><br/> lpr, <a href="linuxs.html#25">25</a><br/> date, <a href="linuxs.html#20">20, </a><a href="linuxs.html#21">21</a><br/> grep, <a href="linuxs.html#24">24</a><br/> lprm, <a href="linuxs.html#25">25</a><br/> Datum, <a href="linuxs.html#21">21</a><br/> group, <a href="linuxs.html#49">49</a><br/> ls, <a href="linuxs.html#22">22</a><br/> dd, <a href="linuxs.html#27">27</a><br/> grub, <a href="linuxs.html#31">31</a><br/> lsmod, <a href="linuxs.html#17">17</a><br/> df, <a href="linuxs.html#20">20</a><br/> Gruppe, <a href="linuxs.html#28">28</a><br/> diff, <a href="linuxs.html#25">25</a><br/> gzip, <a href="linuxs.html#17">17</a><br/> mail, <a href="linuxs.html#37">37, </a><a href="linuxs.html#75">75</a><br/> dmesg, <a href="linuxs.html#17">17</a><br/> make, <a href="linuxs.html#17">17, </a><a href="linuxs.html#34">34</a><br/> docker, <a href="linuxs.html#69">69</a><br/> halt, <a href="linuxs.html#19">19</a><br/> make-kpkg, <a href="linuxs.html#17">17</a><br/> docker-compose, <a href="linuxs.html#69">69</a><br/> Hardlink, <a href="linuxs.html#23">23</a><br/> man, <a href="linuxs.html#20">20</a><br/> dpkg, <a href="linuxs.html#17">17, </a><a href="linuxs.html#32">32</a><br/> head, <a href="linuxs.html#23">23</a><br/> mfomat, <a href="linuxs.html#27">27</a><br/> 167<br/> <hr/> <a name=168></a>STICHWORTVERZEICHNIS<br/> minix, <a href="linuxs.html#49">49</a><br/> rmdir, <a href="linuxs.html#23">23</a><br/> Uhrzeit, <a href="linuxs.html#21">21</a><br/> mkdir, <a href="linuxs.html#23">23</a><br/> rmmod, <a href="linuxs.html#17">17</a><br/> umount, <a href="linuxs.html#27">27</a><br/> mkdosfs, <a href="linuxs.html#27">27</a><br/> rpm, <a href="linuxs.html#32">32</a><br/> umsdos, <a href="linuxs.html#49">49</a><br/> mke2fs, <a href="linuxs.html#27">27</a><br/> uname, <a href="linuxs.html#17">17</a><br/> mkfs, <a href="linuxs.html#27">27</a><br/> sax, <a href="linuxs.html#38">38</a><br/> uncompress, <a href="linuxs.html#25">25</a><br/> modprobe, <a href="linuxs.html#28">28</a><br/> scp, <a href="linuxs.html#34">34, </a><a href="linuxs.html#35">35</a><br/> uniq, <a href="linuxs.html#25">25</a><br/> more, <a href="linuxs.html#23">23</a><br/> setenv, <a href="linuxs.html#55">55</a><br/> unpack, <a href="linuxs.html#25">25</a><br/> mount, <a href="linuxs.html#27">27</a><br/> settherm, <a href="linuxs.html#19">19</a><br/> unset, <a href="linuxs.html#55">55</a><br/> msdos, <a href="linuxs.html#49">49</a><br/> sh, <a href="linuxs.html#55">55</a><br/> unsetenv, <a href="linuxs.html#55">55</a><br/> mv, <a href="linuxs.html#23">23</a><br/> shutdown, <a href="linuxs.html#19">19</a><br/> Upstart, <a href="linuxs.html#20">20</a><br/> smbfs, <a href="linuxs.html#49">49</a><br/> useradd, <a href="linuxs.html#28">28</a><br/> ncpfs, <a href="linuxs.html#49">49</a><br/> Softlink, <a href="linuxs.html#23">23</a><br/> userdel, <a href="linuxs.html#28">28</a><br/> netcat, <a href="linuxs.html#34">34</a><br/> source, <a href="linuxs.html#31">31</a><br/> usermod, <a href="linuxs.html#28">28</a><br/> netdate, <a href="linuxs.html#21">21</a><br/> ssh, <a href="linuxs.html#34">34, </a><a href="linuxs.html#35">35</a><br/> UTC, <a href="linuxs.html#21">21</a><br/> nfs, <a href="linuxs.html#49">49</a><br/> ssh-keygen, <a href="linuxs.html#35">35</a><br/> nl, <a href="linuxs.html#23">23</a><br/> startx, <a href="linuxs.html#38">38</a><br/> vfat, <a href="linuxs.html#49">49</a><br/> nmap, <a href="linuxs.html#34">34</a><br/> stderr, <a href="linuxs.html#19">19</a><br/> vi, <a href="linuxs.html#24">24, </a><a href="linuxs.html#61">61</a><br/> nslookup, <a href="linuxs.html#34">34</a><br/> stdin, <a href="linuxs.html#19">19, </a><a href="linuxs.html#56">56</a><br/> vipw, <a href="linuxs.html#28">28</a><br/> ntfs, <a href="linuxs.html#49">49</a><br/> stdout, <a href="linuxs.html#19">19</a><br/> w, <a href="linuxs.html#20">20</a><br/> od, <a href="linuxs.html#23">23</a><br/> strace, <a href="linuxs.html#34">34</a><br/> strings, <a href="linuxs.html#23">23</a><br/> wc, <a href="linuxs.html#22">22</a><br/> wget, <a href="linuxs.html#17">17</a><br/> passwd, <a href="linuxs.html#28">28, </a><a href="linuxs.html#53">53</a><br/> su, <a href="linuxs.html#28">28</a><br/> whatis, <a href="linuxs.html#20">20</a><br/> ping, <a href="linuxs.html#34">34</a><br/> sux, <a href="linuxs.html#28">28</a><br/> which, <a href="linuxs.html#20">20</a><br/> pr, <a href="linuxs.html#25">25</a><br/> systemctl, <a href="linuxs.html#19">19</a><br/> who, <a href="linuxs.html#20">20</a><br/> proc, <a href="linuxs.html#49">49</a><br/> sysv, <a href="linuxs.html#49">49</a><br/> whoami, <a href="linuxs.html#20">20</a><br/> ps, <a href="linuxs.html#30">30</a><br/> pstree, <a href="linuxs.html#30">30</a><br/> tail, <a href="linuxs.html#23">23</a><br/> xf86config, <a href="linuxs.html#38">38</a><br/> pwd, <a href="linuxs.html#20">20</a><br/> tar, <a href="linuxs.html#27">27</a><br/> XF86Setup, <a href="linuxs.html#38">38</a><br/> tcsh, <a href="linuxs.html#55">55</a><br/> xset, <a href="linuxs.html#39">39</a><br/> rcsshd, <a href="linuxs.html#36">36</a><br/> telnet, <a href="linuxs.html#34">34</a><br/> xsetroot, <a href="linuxs.html#39">39</a><br/> reboot, <a href="linuxs.html#19">19</a><br/> timedatectl, <a href="linuxs.html#21">21</a><br/> recode, <a href="linuxs.html#23">23</a><br/> top, <a href="linuxs.html#30">30</a><br/> yast, <a href="linuxs.html#20">20</a><br/> reiserfs, <a href="linuxs.html#49">49</a><br/> tr, <a href="linuxs.html#25">25</a><br/> revdep-rebuild, <a href="linuxs.html#33">33</a><br/> tune2fs, <a href="linuxs.html#27">27</a><br/> zcat, <a href="linuxs.html#17">17</a><br/> rlogin, <a href="linuxs.html#34">34</a><br/> zeichenorientiert, <a href="linuxs.html#28">28</a><br/> rm, <a href="linuxs.html#23">23</a><br/> ufs, <a href="linuxs.html#49">49</a><br/> Zeit, <a href="linuxs.html#21">21</a><br/> 168<br/> <hr/> <a name="outline"></a><h1>Document Outline</h1> <ul> <li><a href="linuxs.html#3">Vorwort</a></li> <li><a href="linuxs.html#5">Inhaltsverzeichnis</a></li> <li><a href="linuxs.html#15">Linux</a> <ul> <li><a href="linuxs.html#17">Linux</a> <ul> <li><a href="linuxs.html#17">Was ist Linux?</a></li> <li><a href="linuxs.html#17">Kernel und Module</a> <ul> <li><a href="linuxs.html#17">Kernel 2.4</a></li> <li><a href="linuxs.html#17">Kernel 2.6 (Debian 4.0 etch)</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#19">Befehle</a> <ul> <li><a href="linuxs.html#19">Standartein-aus-gabe</a></li> <li><a href="linuxs.html#19">Anmelden und Abmelden</a></li> <li><a href="linuxs.html#19">Anhalten des Systems und Booten</a></li> <li><a href="linuxs.html#20">Die Runlevel</a> <ul> <li><a href="linuxs.html#20">Upstart (Systemstart)</a></li> </ul> </li> <li><a href="linuxs.html#20">SuSE-Linux</a></li> <li><a href="linuxs.html#20">Zur Orientierung auf einem UNIX-Rechner</a></li> <li><a href="linuxs.html#21">Datum und Uhrzeit</a></li> <li><a href="linuxs.html#22">Auflisten</a></li> <li><a href="linuxs.html#22">Dateinamen</a></li> <li><a href="linuxs.html#22">Dateiendungen</a></li> <li><a href="linuxs.html#22">Infos über Files</a></li> <li><a href="linuxs.html#23">Arbeiten(Verwüstungen) im und am Filesystem</a></li> <li><a href="linuxs.html#23">Kopieren und Verschieben</a></li> <li><a href="linuxs.html#23">Löschen</a></li> <li><a href="linuxs.html#23">Ausgeben</a></li> <li><a href="linuxs.html#24">Der Texteditor vi/vim</a></li> <li><a href="linuxs.html#24">Suchen nach Dateien</a></li> <li><a href="linuxs.html#24">Suchen in Dateien</a></li> <li><a href="linuxs.html#25">Vergleichen von Dateien</a></li> <li><a href="linuxs.html#25">Drucken</a></li> <li><a href="linuxs.html#25">File-Inhalt bearbeiten</a></li> <li><a href="linuxs.html#25">TAR (tape archiver) verwaltet Dateiarchive</a> <ul> <li><a href="linuxs.html#27">Packen</a></li> <li><a href="linuxs.html#27">Entpacken</a></li> </ul> </li> <li><a href="linuxs.html#27">Disketten/Festplatten</a> <ul> <li><a href="linuxs.html#28">Dateisystem verschlüsseln</a></li> </ul> </li> <li><a href="linuxs.html#28">Zugriffsrechte/Eigentümer/Gruppe</a></li> <li><a href="linuxs.html#30">Prozessbefehle</a></li> <li><a href="linuxs.html#31">Re-install Grub with Live CD</a> <ul> <li><a href="linuxs.html#31">Chroot</a></li> <li><a href="linuxs.html#31">Grub</a></li> </ul> </li> <li><a href="linuxs.html#31">Software installieren</a> <ul> <li><a href="linuxs.html#31">rpm-Format</a></li> <li><a href="linuxs.html#32">deb-Format</a></li> <li><a href="linuxs.html#33">Portage Gentoo</a></li> <li><a href="linuxs.html#34">Quelltexte</a></li> <li><a href="linuxs.html#34">Hilfe</a></li> </ul> </li> <li><a href="linuxs.html#34">Im Netz</a></li> <li><a href="linuxs.html#35">SSH</a> <ul> <li><a href="linuxs.html#35">Generierung eines DSA Schlüsselpaares</a></li> <li><a href="linuxs.html#35">Public-Key auf dem Zielrechner hinzufügen</a></li> <li><a href="linuxs.html#35">Private-Key auf dem Qellrechner</a></li> <li><a href="linuxs.html#36">Login nur mit SSH-Keys erlauben</a></li> </ul> </li> <li><a href="linuxs.html#36">GnuPG</a> <ul> <li><a href="linuxs.html#36">Erzeugen</a></li> <li><a href="linuxs.html#36">Hochladen</a></li> <li><a href="linuxs.html#37">Löschen</a></li> <li><a href="linuxs.html#37">Holen</a></li> <li><a href="linuxs.html#37">Signatur erzeugen und prüfen</a></li> <li><a href="linuxs.html#37">Verschlüsseln</a></li> <li><a href="linuxs.html#37">Entschlüsseln</a></li> <li><a href="linuxs.html#38">Schlüsselverwaltung</a></li> <li><a href="linuxs.html#38">Anzeigen</a></li> <li><a href="linuxs.html#38">Exportieren</a></li> </ul> </li> <li><a href="linuxs.html#38">X11 - Grafik</a> <ul> <li><a href="linuxs.html#39">Bildschirmschoner/Maus</a></li> <li><a href="linuxs.html#39">X11 ohne Maus</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#41">Verzeichnisse und Dateien</a> <ul> <li><a href="linuxs.html#41">Dateibaum</a></li> <li><a href="linuxs.html#48">/etc/fstab</a></li> <li><a href="linuxs.html#48">/dev/</a></li> <li><a href="linuxs.html#49">Dateisystemtypen unter Linux</a></li> <li><a href="linuxs.html#49">/etc/group</a></li> <li><a href="linuxs.html#50">/etc/hosts</a></li> <li><a href="linuxs.html#50">/etc/inittab</a> <ul> <li><a href="linuxs.html#50">Terminal</a></li> <li><a href="linuxs.html#50">Termcapeintrag</a></li> <li><a href="linuxs.html#51">Gettykommando</a></li> <li><a href="linuxs.html#51">Kürzel</a></li> <li><a href="linuxs.html#51">Arbeitsstufen</a></li> <li><a href="linuxs.html#51">Modus</a></li> <li><a href="linuxs.html#52">Kommando</a></li> </ul> </li> <li><a href="linuxs.html#53">/etc/passwd</a></li> </ul> </li> <li><a href="linuxs.html#55">Die Shells</a> <ul> <li><a href="linuxs.html#55">Die Shells</a></li> <li><a href="linuxs.html#55">Die Start-Scripts</a></li> <li><a href="linuxs.html#55">Tastenkombinationen</a></li> <li><a href="linuxs.html#56">Die C-Shell</a></li> <li><a href="linuxs.html#57">Bash rechnen</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#59">Programme</a> <ul> <li><a href="linuxs.html#61">Der Texteditor vi/vim</a> <ul> <li><a href="linuxs.html#61">Aufruf</a></li> <li><a href="linuxs.html#61">Eingabemodus (input mode)</a></li> <li><a href="linuxs.html#61">Befehlsmodus (visual mode)</a> <ul> <li><a href="linuxs.html#61">Eingeben:</a></li> <li><a href="linuxs.html#61">Überschreiben:</a></li> <li><a href="linuxs.html#62">Bewegen:</a></li> <li><a href="linuxs.html#63">Löschen und Eingeben:</a></li> <li><a href="linuxs.html#63">Löschen:</a></li> <li><a href="linuxs.html#63">Aufheben:</a></li> <li><a href="linuxs.html#63">Verschieben:</a></li> <li><a href="linuxs.html#64">Zusammenfügen:</a></li> <li><a href="linuxs.html#64">Markieren:</a></li> <li><a href="linuxs.html#64">Kopieren:</a></li> <li><a href="linuxs.html#64">Einfügen:</a></li> <li><a href="linuxs.html#64">Suchen:</a></li> <li><a href="linuxs.html#64">Wiederholen:</a></li> <li><a href="linuxs.html#65">Sonstige Kommandos:</a></li> </ul> </li> <li><a href="linuxs.html#65">Kommandomodus (colon mode)</a> <ul> <li><a href="linuxs.html#65">Texteingabe Kommandos</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#67">LaTeX</a> <ul> <li><a href="linuxs.html#67">LaTeX</a></li> </ul> </li> <li><a href="linuxs.html#69">Docker</a> <ul> <li><a href="linuxs.html#69">Docker installieren</a></li> <li><a href="linuxs.html#69">Mit Docker arbeiten</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#71">Linux im Netzwerk</a> <ul> <li><a href="linuxs.html#73">Netzwerk</a> <ul> <li><a href="linuxs.html#74">/etc/network/interfaces</a></li> </ul> </li> <li><a href="linuxs.html#75">E-Mail</a> <ul> <li><a href="linuxs.html#75">Verwendung von E-Mail</a></li> </ul> </li> <li><a href="linuxs.html#77">Apache</a> <ul> <li><a href="linuxs.html#77">Einleitung</a></li> <li><a href="linuxs.html#77">Kompilieren und Installieren</a> <ul> <li><a href="linuxs.html#77">Anforderungen</a></li> <li><a href="linuxs.html#77">Vorbereitungen</a></li> <li><a href="linuxs.html#78">OpenSSL</a></li> <li><a href="linuxs.html#78">Apache 1.3 und SSL</a></li> <li><a href="linuxs.html#80">Apache2</a></li> <li><a href="linuxs.html#80">Testen</a></li> <li><a href="linuxs.html#81">Upgrade</a></li> <li><a href="linuxs.html#81">PureFTPd</a></li> </ul> </li> <li><a href="linuxs.html#82">Apache starten</a> <ul> <li><a href="linuxs.html#82">Apache starten</a></li> <li><a href="linuxs.html#82">Wie der Apache startet</a></li> <li><a href="linuxs.html#83">Fehler während des Hochfahrens</a></li> <li><a href="linuxs.html#83">Automatisch starten und beenden</a></li> <li><a href="linuxs.html#83">Weitere Informationen</a></li> </ul> </li> <li><a href="linuxs.html#84">Beenden und Neustarten</a> <ul> <li><a href="linuxs.html#84">Einleitung</a></li> <li><a href="linuxs.html#84">Beenden</a></li> <li><a href="linuxs.html#84">Unterbrechungsfreier Neustart</a></li> <li><a href="linuxs.html#85">Neustarten</a></li> <li><a href="linuxs.html#85">Anhang: Syntax überprüfen</a></li> </ul> </li> <li><a href="linuxs.html#86">Anhang</a> <ul> <li><a href="linuxs.html#86">Zu den Dateien</a></li> </ul> </li> <li><a href="linuxs.html#86">Benutzerhandbuch</a> <ul> <li><a href="linuxs.html#86">httpd.conf</a></li> <li><a href="linuxs.html#89">Access Control List File (.htaccess)</a></li> <li><a href="linuxs.html#90">Gruppendatei (.htgroup)</a></li> <li><a href="linuxs.html#90">Passwort-Datei (.htpasswd)</a></li> <li><a href="linuxs.html#90">Erstellen eines SSL-Zertifikats</a></li> <li><a href="linuxs.html#90">LinkIcon (favicon.ico)</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#93">MySQL</a> <ul> <li><a href="linuxs.html#93">Einleitung</a></li> <li><a href="linuxs.html#93">Kompilieren und Installieren</a> <ul> <li><a href="linuxs.html#93">Anforderungen</a></li> <li><a href="linuxs.html#93">Vorbereitungen</a></li> <li><a href="linuxs.html#93">MySQL</a></li> <li><a href="linuxs.html#94">MySQL Testen</a></li> <li><a href="linuxs.html#95">phpMyAdmin</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#97">PHP</a> <ul> <li><a href="linuxs.html#97">Einleitung</a></li> <li><a href="linuxs.html#97">Kompilieren und Installieren</a> <ul> <li><a href="linuxs.html#97">Anforderungen</a></li> <li><a href="linuxs.html#97">Vorbereitungen</a></li> <li><a href="linuxs.html#98">Libraries für Zusatzfunktionen</a></li> <li><a href="linuxs.html#99">PHP</a></li> </ul> </li> <li><a href="linuxs.html#100">Referenz</a> <ul> <li><a href="linuxs.html#100">Grundlagen</a></li> <li><a href="linuxs.html#100">Funktionen</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#101">Squid</a> <ul> <li><a href="linuxs.html#101">Proxy</a></li> <li><a href="linuxs.html#101">Einfacher Cache</a></li> <li><a href="linuxs.html#101">Proxy Cache</a></li> <li><a href="linuxs.html#101">Aufgaben</a></li> <li><a href="linuxs.html#102">Eigenschaften</a></li> <li><a href="linuxs.html#102">Protokolle</a> <ul> <li><a href="linuxs.html#102">Client-Kommunikation</a></li> <li><a href="linuxs.html#102">Kommunikation zwischen Proxy-Cache-Servern</a></li> </ul> </li> <li><a href="linuxs.html#103">Systemvoraussetzungen</a></li> <li><a href="linuxs.html#103">SuSE Linux</a></li> <li><a href="linuxs.html#103">Automatische Starten von Squit</a></li> <li><a href="linuxs.html#103">Squiddateien</a></li> <li><a href="linuxs.html#103">squid.conf</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#107">Programmieren</a> <ul> <li><a href="linuxs.html#109">Bash</a> <ul> <li><a href="linuxs.html#109">Einleitung</a></li> <li><a href="linuxs.html#109">Referenz</a></li> <li><a href="linuxs.html#110">Steuer und Sonderzeichen der Bash</a></li> </ul> </li> <li><a href="linuxs.html#111">git</a> <ul> <li><a href="linuxs.html#111">Dokumentation</a></li> <li><a href="linuxs.html#111">Konfiguration</a></li> <li><a href="linuxs.html#112">Konfigurationen über Umgebungsvariablen</a></li> <li><a href="linuxs.html#112">Der Index</a></li> <li><a href="linuxs.html#113">Repository</a></li> <li><a href="linuxs.html#113">Commit</a></li> <li><a href="linuxs.html#113">Dateien entfernen</a></li> <li><a href="linuxs.html#113">Dateien verschieben</a></li> <li><a href="linuxs.html#114">Änderung an einer Datei rückgängig machen</a></li> <li><a href="linuxs.html#114">Dateien ignorieren</a></li> <li><a href="linuxs.html#114">Mit externen Repositorys arbeiten</a></li> <li><a href="linuxs.html#115">Tags</a></li> <li><a href="linuxs.html#115">Branch</a></li> <li><a href="linuxs.html#116">Git Aliase</a></li> <li><a href="linuxs.html#116">Git auf einen Server bekommen</a></li> <li><a href="linuxs.html#116">Git auf dem SSH-Server einrichten</a></li> <li><a href="linuxs.html#117">Öffentlicher Webserver-Zugang</a></li> <li><a href="linuxs.html#118">Grundbegriffe</a></li> <li><a href="linuxs.html#119">Verwendung von Git</a></li> </ul> </li> <li><a href="linuxs.html#121">C/C++</a> <ul> <li><a href="linuxs.html#121">Befehle und Grundelemente</a></li> <li><a href="linuxs.html#121">Steuersequenzen für ANSI-Bildschirme - Innerhalb von Texten</a></li> <li><a href="linuxs.html#122">stdio.h -> Standard Ein- und Ausgabe</a></li> <li><a href="linuxs.html#123">ctype.h</a></li> <li><a href="linuxs.html#123">string.h</a></li> <li><a href="linuxs.html#124">Kontrollstrukturen</a></li> <li><a href="linuxs.html#125">ASCII(American Standart Code for Information Interchange)-Tabelle</a> <ul> <li><a href="linuxs.html#126">Unterteilung der Steuerzeichen:</a></li> <li><a href="linuxs.html#126">Bedeutung der Steuerzeichen:</a></li> </ul> </li> <li><a href="linuxs.html#127">Operatoren und Ausdrücke</a> <ul> <li><a href="linuxs.html#127">Arithmetische Operatoren:</a></li> <li><a href="linuxs.html#127">Vergleichsoperatoren:</a></li> <li><a href="linuxs.html#127">Logische Operatoren:</a></li> <li><a href="linuxs.html#128">Zuweisungsoperatoren:</a></li> <li><a href="linuxs.html#128">Post- und Prefix- Operatoren:</a></li> <li><a href="linuxs.html#128">Zeigeroperatoren:</a></li> <li><a href="linuxs.html#128">Diverse Kategorien:</a></li> </ul> </li> <li><a href="linuxs.html#129">Inkrementieren und Dekrementieren</a></li> <li><a href="linuxs.html#129">Wertebereich und Genauigkeit elementarer Datentypen</a></li> <li><a href="linuxs.html#129">Variableninitialisierung</a></li> <li><a href="linuxs.html#130">Konstanten</a> <ul> <li><a href="linuxs.html#130">Ganzzahlkonstanten</a></li> <li><a href="linuxs.html#130">Gleitkommakonstanten</a></li> <li><a href="linuxs.html#130">Zeichen- und Zeichenkettenkonstanten</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#131">Tcl/Tk</a></li> <li><a href="linuxs.html#133">Perl</a></li> <li><a href="linuxs.html#135">CGI+Perl</a> <ul> <li><a href="linuxs.html#135">Einleitung</a></li> <li><a href="linuxs.html#135">Perl</a> <ul> <li><a href="linuxs.html#135">Texte und Strings</a></li> <li><a href="linuxs.html#135">Rechenoperationen</a></li> <li><a href="linuxs.html#136">Arrays (Listen)</a></li> <li><a href="linuxs.html#136">String- und Zahlenvergleichsoperratoren</a></li> <li><a href="linuxs.html#136">if-Bedingung</a></li> <li><a href="linuxs.html#136">if-else-Bedingung</a></li> <li><a href="linuxs.html#137">if-elseif-Bedingung</a></li> </ul> </li> <li><a href="linuxs.html#137">Funktionen</a> <ul> <li><a href="linuxs.html#137">String Funktionen</a></li> <li><a href="linuxs.html#137">Rechen Funktionen</a></li> <li><a href="linuxs.html#137">Array Funktionen</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#139">Java</a> <ul> <li><a href="linuxs.html#139">Funktion von Java</a></li> <li><a href="linuxs.html#139">Sprache und Syntax von Java</a> <ul> <li><a href="linuxs.html#139">Kommentrare</a></li> <li><a href="linuxs.html#139">Datentypen</a></li> <li><a href="linuxs.html#140">Variablen</a></li> </ul> </li> <li><a href="linuxs.html#140">Pakete und Verzeichnisstrukturen</a> <ul> <li><a href="linuxs.html#140">Sichtbarkeit und Zugriffsrechte von Klassen und Methoden</a></li> <li><a href="linuxs.html#140">Klassen</a></li> <li><a href="linuxs.html#141">Konstruktoren und Destruktoren</a></li> <li><a href="linuxs.html#141">Methoden überladen</a></li> <li><a href="linuxs.html#141">Objekte</a></li> <li><a href="linuxs.html#142">Vererbung</a></li> <li><a href="linuxs.html#142">Schnittstellen</a></li> </ul> </li> <li><a href="linuxs.html#142">Elementare Syntax von Java</a> <ul> <li><a href="linuxs.html#142">Operratoren</a></li> <li><a href="linuxs.html#142">Verknüpfungsoperatoren</a></li> <li><a href="linuxs.html#142">Inkrement-Operator</a></li> <li><a href="linuxs.html#143">Dekrement-Operator</a></li> <li><a href="linuxs.html#143">Arithmetische Zuweisungsoperatoren</a></li> <li><a href="linuxs.html#143">Bedingungen und Entscheidungen</a></li> <li><a href="linuxs.html#143">if - else - Bedingungen</a></li> <li><a href="linuxs.html#143">Verschachtelte Bedingungen</a></li> <li><a href="linuxs.html#144">Fallunterscheidung mit switch - case</a></li> </ul> </li> <li><a href="linuxs.html#144">Schleifen</a> <ul> <li><a href="linuxs.html#144">Die while - Schleife</a></li> <li><a href="linuxs.html#144">Die do - while - Schleife</a></li> <li><a href="linuxs.html#144">Die for - Schleife</a></li> <li><a href="linuxs.html#144">Schleifen mit break verlassen</a></li> <li><a href="linuxs.html#144">Schleife mit continue wiederholen</a></li> </ul> </li> <li><a href="linuxs.html#145">Komplexe Datentypen</a> <ul> <li><a href="linuxs.html#145">Arrays</a></li> </ul> </li> <li><a href="linuxs.html#145">Die Anweisung import</a></li> <li><a href="linuxs.html#145">Java eigene Klassen</a> <ul> <li><a href="linuxs.html#145">Die Klasse Math</a></li> </ul> </li> <li><a href="linuxs.html#145">Die Klasse Object</a> <ul> <li><a href="linuxs.html#145">Die Klasse Object</a></li> </ul> </li> <li><a href="linuxs.html#146">Die Klasse Runtime</a></li> <li><a href="linuxs.html#146">Die Klasse String</a></li> <li><a href="linuxs.html#146">Die Klasse Stringbuffer</a> <ul> <li><a href="linuxs.html#146">Die Klasse Stringbuffer</a></li> </ul> </li> <li><a href="linuxs.html#146">Die Klasse System</a></li> <li><a href="linuxs.html#146">Das Paket java.util</a> <ul> <li><a href="linuxs.html#147">Die Klasse Date</a></li> <li><a href="linuxs.html#147">Die Klasse Random</a></li> <li><a href="linuxs.html#147">Die Klasse Stack</a></li> </ul> </li> <li><a href="linuxs.html#147">Ausnahmen (Exceptions)</a> <ul> <li><a href="linuxs.html#148">Eigene Ausnahme erzeugen (throw)</a></li> </ul> </li> <li><a href="linuxs.html#148">Multitasking mit Threads</a> <ul> <li><a href="linuxs.html#148">Arbeiten mit Threads</a></li> </ul> </li> <li><a href="linuxs.html#149">Applets</a> <ul> <li><a href="linuxs.html#149">Applets in eine Webseite einbinden</a></li> <li><a href="linuxs.html#149">Das erste Java Applet</a></li> <li><a href="linuxs.html#149">Die Methoden eines Applets</a></li> <li><a href="linuxs.html#149">Ein Applet im Überblick</a></li> <li><a href="linuxs.html#150">Pakete</a></li> <li><a href="linuxs.html#150">Die Klasse Graphics</a></li> <li><a href="linuxs.html#150">Die Klasse Color</a></li> <li><a href="linuxs.html#151">Die Klasse Font</a></li> <li><a href="linuxs.html#151">Die Klasse Image</a></li> <li><a href="linuxs.html#151">Die Klasse Button</a></li> </ul> </li> <li><a href="linuxs.html#152">Eventhandling</a> <ul> <li><a href="linuxs.html#152">Mouse Events</a></li> <li><a href="linuxs.html#152">Action Events</a></li> <li><a href="linuxs.html#152">Parameter an ein Applet</a></li> <li><a href="linuxs.html#153">Weitere wichtige Pakete</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#155">JavaScript</a> <ul> <li><a href="linuxs.html#155">Einbindung von JavaScript</a> <ul> <li><a href="linuxs.html#155">Einbindung in den Head</a></li> <li><a href="linuxs.html#155">Einbindung in den Body</a></li> <li><a href="linuxs.html#155">Ausführen bei bestimmten Aktionen</a></li> </ul> </li> <li><a href="linuxs.html#156">Variablen</a></li> <li><a href="linuxs.html#156">Objekte</a> <ul> <li><a href="linuxs.html#156">Standardobjekte</a></li> <li><a href="linuxs.html#157">String-Objekt</a></li> <li><a href="linuxs.html#158">Eigene Objekte</a></li> <li><a href="linuxs.html#158">Arrays</a></li> </ul> </li> <li><a href="linuxs.html#158">Mathematische Operationen</a></li> <li><a href="linuxs.html#158">Bedingte Ausführung</a></li> <li><a href="linuxs.html#158">Schleifen</a></li> <li><a href="linuxs.html#159">Event-Handler</a></li> <li><a href="linuxs.html#159">Funktionen</a></li> <li><a href="linuxs.html#160">Reservierte Wörter</a></li> </ul> </li> </ul> </li> <li><a href="linuxs.html#163">Anhang</a> <ul> <li><a href="linuxs.html#165">Glossar</a></li> </ul> </li> <li><a href="linuxs.html#167">Stichwortverzeichnis</a></li> </ul> <hr/> </body> </html>