Inhaltsverzeichnis
1 ... Einführung ... 291.1 ... Voraussetzungen an den Leser ... 29... 1.1.1 ... Zielgruppe ... 30 ... 1.1.2 ... Notation ... 31 1.2 ... Was ist eine Shell? ... 32 1.3 ... Hauptanwendungsgebiet ... 34 ... 1.3.1 ... Was ist ein Shellscript? ... 35 ... 1.3.2 ... Vergleich mit anderen Sprachen ... 36 1.4 ... Kommando, Programm oder Shellscript? ... 38 ... 1.4.1 ... Shell-eigene Kommandos (Builtin-Kommando) ... 38 ... 1.4.2 ... Aliase in der Shell ... 38 ... 1.4.3 ... Funktionen in der Shell ... 39 ... 1.4.4 ... Shellscripts (Shell-Prozeduren) ... 39 ... 1.4.5 ... Programme (binär) ... 39 1.5 ... Die Shell-Vielfalt ... 40 ... 1.5.1 ... ksh (Korn-Shell) ... 40 ... 1.5.2 ... Bash (Bourne-Again-Shell) ... 41 ... 1.5.3 ... zsh (Z-Shell) ... 41 ... 1.5.4 ... ash (A-Shell) ... 41 ... 1.5.5 ... rbash, rzsh (Restricted Shell) ... 41 ... 1.5.6 ... tcsh (TC-Shell) ... 42 ... 1.5.7 ... Welche Shell-Variante wird in diesem Buch verwendet? ... 42 ... 1.5.8 ... rsh und ssh ... 43 1.6 ... Betriebssysteme ... 43 1.7 ... Crashkurs: einfacher Umgang mit der Kommandozeile ... 44 ... 1.7.1 ... Grundlegende Befehle ... 44 ... 1.7.2 ... Der Umgang mit Dateien ... 45 ... 1.7.3 ... Der Umgang mit Verzeichnissen ... 49 ... 1.7.4 ... Datei- und Verzeichnisnamen ... 53 ... 1.7.5 ... Gerätenamen ... 53 ... 1.7.6 ... Dateiattribute ... 54 1.8 ... Shellscripts schreiben und ausführen ... 57 ... 1.8.1 ... Der Editor ... 57 ... 1.8.2 ... Der Name des Shellscripts ... 57 ... 1.8.3 ... Ausführen ... 58 ... 1.8.4 ... Hintergrundprozess starten ... 61 ... 1.8.5 ... Ausführende Shell festlegen ... 62 ... 1.8.6 ... Kommentare ... 65 ... 1.8.7 ... Stil ... 65 ... 1.8.8 ... Ein Shellscript beenden ... 66 ... 1.8.9 ... Testen und Debuggen von Shellscripts ... 68 ... 1.8.10 ... Shellscript, das ein Shellscript erstellt und ausführt ... 69 1.9 ... Vom Shellscript zum Prozess ... 71 ... 1.9.1 ... Ist das Shellscript ein Prozess? ... 72 ... 1.9.2 ... Echte Login-Shell? ... 73 1.10 ... Datenstrom ... 74 ... 1.10.1 ... Ausgabe umleiten ... 75 ... 1.10.2 ... Standardfehlerausgabe umleiten ... 77 ... 1.10.3 ... Eingabe umleiten ... 80 ... 1.10.4 ... Pipes ... 83 ... 1.10.5 ... Ein T-Stück mit tee ... 84 ... 1.10.6 ... Ersatzmuster (Wildcards) ... 86 ... 1.10.7 ... Brace Extension (Bash und Korn-Shell only) ... 90 ... 1.10.8 ... Muster-Alternativen (Bash und Korn-Shell only) ... 91 ... 1.10.9 ... Tilde-Expansion (Bash und Korn-Shell only) ... 91 1.11 ... Empfehlung ... 92 2 ... Variablen ... 932.1 ... Grundlagen ... 93... 2.1.1 ... Zugriff auf den Wert einer Variablen ... 93 ... 2.1.2 ... Variablen-Interpolation ... 94 2.2 ... Zahlen ... 98 ... 2.2.1 ... Integer-Arithmetik (Bourne-Shell, Bash und Korn-Shell) ... 99 ... 2.2.2 ... Integer-Arithmetik (Bash und Korn-Shell only) ... 101 ... 2.2.3 ... bc – Rechnen mit Fließkommazahlen und mathematische Funktionen ... 104 2.3 ... Zeichenketten ... 107 ... 2.3.1 ... Stringverarbeitung ... 108 ... 2.3.2 ... Erweiterte Funktionen für Bash und Korn-Shell ... 115 2.4 ... Quotings und Kommando-Substitution ... 118 ... 2.4.1 ... Single und Double Quotings ... 119 ... 2.4.2 ... Kommando-Substitution – Back Quotes ... 121 2.5 ... Arrays (Bash und Korn-Shell only) ... 124 ... 2.5.1 ... Werte an Arrays zuweisen ... 125 ... 2.5.2 ... Eine Liste von Werten an ein Array zuweisen (Bash) ... 126 ... 2.5.3 ... Eine Liste von Werten an ein Array zuweisen (Korn-Shell) ... 126 ... 2.5.4 ... Zugreifen auf die einzelnen Elemente eines Arrays ... 126 2.6 ... Variablen exportieren ... 130 2.7 ... Umgebungsvariablen eines Prozesses ... 136 2.8 ... Shell-Variablen ... 137 2.9 ... Automatische Variablen der Shell ... 142 ... 2.9.1 ... Der Name des Shellscripts – $0 ... 142 ... 2.9.2 ... Die Prozessnummer des Shellscripts – $$ ... 143 ... 2.9.3 ... Der Beendigungsstatus eines Shellscripts – $? ... 144 ... 2.9.4 ... Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses – $! ... 144 ... 2.9.5 ... Weitere vordefinierte Variablen der Shell ... 145 ... 2.9.6 ... Weitere automatische Variablen für Bash und Korn-Shell ... 145 3 ... Parameter und Argumente ... 1493.1 ... Einführung ... 1493.2 ... Kommandozeilenparameter $1 bis $9 ... 149 3.3 ... Besondere Parameter ... 151 ... 3.3.1 ... Die Variable $* ... 151 ... 3.3.2 ... Die Variable $@ ... 153 ... 3.3.3 ... Die Variable $# ... 153 3.4 ... Der Befehl shift ... 154 3.5 ... Argumente und Leerzeichen ... 156 3.6 ... Argumente jenseits von $9 ... 157 ... 3.6.1 ... Beliebig viele Argumente (Bash und Korn-Shell only) ... 158 3.7 ... Argumente setzen mit set und Kommando-Substitution ... 159 3.8 ... getopts – Kommandozeilenoptionen auswerten ... 162 3.9 ... Vorgabewerte für Variablen ... 165 4 ... Kontrollstrukturen ... 1694.1 ... Bedingte Anweisung mit if ... 169... 4.1.1 ... Kommandos testen mit if ... 171 ... 4.1.2 ... Kommandoverkettung über Pipes mit if ... 173 4.2 ... Die else-Alternative für eine if-Verzweigung ... 177 4.3 ... Mehrfache Alternative mit elif ... 179 4.4 ... Das Kommando test ... 182 ... 4.4.1 ... Ganze Zahlen vergleichen ... 183 ... 4.4.2 ... Ganze Zahlen vergleichen mit let (Bash und Korn-Shell only) ... 185 ... 4.4.3 ... Zeichenketten vergleichen ... 186 ... 4.4.4 ... Zeichenketten vergleichen (Bash und Korn-Shell only) ... 191 4.5 ... Status von Dateien erfragen ... 194 4.6 ... Logische Verknüpfung von Ausdrücken ... 197 ... 4.6.1 ... Negationsoperator ! ... 198 ... 4.6.2 ... Die UND-Verknüpfung (-a und &&) ... 199 ... 4.6.3 ... Die ODER-Verknüpfung (-o und ||) ... 201 ... 4.6.4 ... Klammerung und mehrere logische Verknüpfungen ... 202 4.7 ... Short Circuit-Tests – ergebnisabhängige Befehlsausführung ... 203 4.8 ... Die Anweisung case ... 206 ... 4.8.1 ... Alternative Vergleichsmuster ... 209 ... 4.8.2 ... case und Wildcards ... 210 ... 4.8.3 ... case und Optionen ... 212 4.9 ... Schleifen ... 213 4.10 ... for-Schleife ... 214 ... 4.10.1 ... Argumente bearbeiten mit for ... 215 ... 4.10.2 ... for und die Dateinamen-Substitution ... 216 ... 4.10.3 ... for und die Kommando-Substitution ... 218 ... 4.10.4 ... for und Array (Bash und Korn Shell only) ... 221 ... 4.10.5 ... for-Schleife mit Schleifenzähler (Bash only) ... 222 4.11 ... Die while-Schleife ... 224 4.12 ... Die until-Schleife ... 226 4.13 ... Kontrollierte Sprünge ... 229 ... 4.13.1 ... Der Befehl continue ... 230 ... 4.13.2 ... Der Befehl break ... 231 4.14 ... Endlosschleifen ... 233 5 ... Terminal-Ein- und Ausgabe ... 2375.1 ... Von Terminals zu Pseudo-Terminals ... 2375.2 ... Ausgabe ... 239 ... 5.2.1 ... Der echo-Befehl ... 240 ... 5.2.2 ... print (Korn-Shell only) ... 244 ... 5.2.3 ... Der Befehl printf ... 244 ... 5.2.4 ... Der Befehl tput – Terminalsteuerung ... 247 5.3 ... Eingabe ... 253 ... 5.3.1 ... Der Befehl read ... 253 ... 5.3.2 ... (Zeilenweise) Lesen einer Datei mit read ... 255 ... 5.3.3 ... Zeilenweise mit einer Pipe aus einem Kommando lesen (read) ... 256 ... 5.3.4 ... Here-Dokumente (Inline-Eingabeumleitung) ... 257 ... 5.3.5 ... Here-Dokumente mit read verwenden ... 260 ... 5.3.6 ... Die Variable IFS ... 261 ... 5.3.7 ... Arrays einlesen mit read (Bash und Korn-Shell only) ... 267 ... 5.3.8 ... Shell-abhängige Anmerkungen zu read ... 268 ... 5.3.9 ... Einzelnes Zeichen abfragen ... 269 ... 5.3.10 ... Einzelne Zeichen mit Escape-Sequenzen abfragen ... 270 ... 5.3.11 ... Passworteingabe ... 277 5.4 ... Umlenken mit dem Befehl exec ... 278 5.5 ... Filedeskriptoren ... 281 ... 5.5.1 ... Einen neuen Filedeskriptor verwenden ... 282 ... 5.5.2 ... Die Umlenkung <> ... 285 5.6 ... Named Pipes ... 286 5.7 ... Menüs mit select (Bash und Korn-Shell only) ... 289 5.8 ... dialog und Xdialog ... 294 ... 5.8.1 ... Entscheidungsfrage --yesno ... 295 ... 5.8.2 ... Nachrichtenbox mit Bestätigung --msgbox ... 296 ... 5.8.3 ... Hinweisfenster ohne Bestätigung --infobox ... 297 ... 5.8.4 ... Text-Eingabezeile --inputbox ... 298 ... 5.8.5 ... Ein einfacher Dateibetrachter --textbox ... 299 ... 5.8.6 ... Ein Menü --menu ... 300 ... 5.8.7 ... Auswahlliste zum Ankreuzen --checklist ... 301 ... 5.8.8 ... Radiobuttons zum Auswählen --radiolist ... 302 ... 5.8.9 ... Fortschrittszustand anzeigen --gauge ... 302 ... 5.8.10 ... Verändern von Aussehen und Ausgabe ... 304 ... 5.8.11 ... Kleines Beispiel ... 304 ... 5.8.12 ... Zusammenfassung ... 305 5.9 ... gnuplot – Visualisierung von Messdaten ... 306 ... 5.9.1 ... Wozu wird gnuplot eingesetzt? ... 307 ... 5.9.2 ... gnuplot starten ... 308 ... 5.9.3 ... Das Kommando zum Plotten ... 308 ... 5.9.4 ... Variablen und Parameter für gnuplot ... 309 ... 5.9.5 ... Ausgabe von gnuplot umleiten ... 310 ... 5.9.6 ... Variablen und eigene Funktionen definieren ... 312 ... 5.9.7 ... Interpretation von Daten aus einer Datei ... 313 ... 5.9.8 ... Alles bitte nochmals zeichnen (oder besser speichern und laden) ... 316 ... 5.9.9 ... gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb) ... 317 ... 5.9.10 ... Plot-Styles und andere Ausgaben festlegen ... 319 ... 5.9.11 ... Tricks für die Achsen ... 325 ... 5.9.12 ... Die dritte Dimension ... 329 ... 5.9.13 ... Zusammenfassung ... 331 6 ... Funktionen ... 3336.1 ... Definition ... 333... 6.1.1 ... Definition (Bash und Korn-Shell only) ... 334 ... 6.1.2 ... Funktionsaufruf ... 334 ... 6.1.3 ... Funktionen exportieren ... 336 ... 6.1.4 ... Aufrufreihenfolge ... 338 ... 6.1.5 ... Who is who ... 339 ... 6.1.6 ... Aufruf selbst bestimmen ... 339 ... 6.1.7 ... Funktionen auflisten ... 340 6.2 ... Funktionen, die Funktionen aufrufen ... 340 6.3 ... Parameterübergabe ... 342 ... 6.3.1 ... FUNCNAME (Bash only) ... 345 6.4 ... Rückgabewert aus einer Funktion ... 346 ... 6.4.1 ... Rückgabewert mit return ... 346 ... 6.4.2 ... Rückgabewert mit echo und einer Kommando- Substitution ... 347 ... 6.4.3 ... Rückgabewert ohne eine echte Rückgabe (lokale Variable) ... 349 ... 6.4.4 ... Funktionen und exit ... 350 6.5 ... Lokale contra globale Variablen ... 351 ... 6.5.1 ... Lokale Variablen (Bash und Korn-Shell only) ... 353 6.6 ... alias und unalias ... 355 6.7 ... Autoload (Korn-Shell only) ... 357 7 ... Signale ... 3597.1 ... Grundlagen zu den Signalen ... 3597.2 ... Signale senden – kill ... 363 7.3 ... Eine Fallgrube für Signale – trap ... 364 ... 7.3.1 ... Einen Signalhandler (Funktion) einrichten ... 367 ... 7.3.2 ... Mit Signalen Schleifendurchläufe abbrechen ... 370 ... 7.3.3 ... Mit Signalen das Script beenden ... 371 ... 7.3.4 ... Das Beenden der Shell (oder eines Scripts) abfangen ... 371 ... 7.3.5 ... Signale ignorieren ... 373 ... 7.3.6 ... Signale zurücksetzen ... 373 8 ... Rund um die Ausführung von Scripts und Prozessen ... 3758.1 ... Prozessprioritäten ... 3758.2 ... Warten auf andere Prozesse ... 376 8.3 ... Hintergrundprozess wieder hervorholen ... 377 8.4 ... Hintergrundprozess schützen ... 378 8.5 ... Subshells ... 379 8.6 ... Mehrere Scripts verbinden und ausführen (Kommunikation zwischen Scripts) ... 381 ... 8.6.1 ... Datenübergabe zwischen Scripts ... 381 ... 8.6.2 ... Rückgabe von Daten an andere Scripts ... 383 ... 8.6.3 ... Scripts synchronisieren ... 386 8.7 ... Jobverwaltung ... 388 8.8 ... Shellscripts zeitgesteuert ausführen ... 391 8.9 ... Startprozess- und Profildaten der Shell ... 396 ... 8.9.1 ... Arten von Initialisierungsdateien ... 397 ... 8.9.2 ... Ausführen von Profildateien beim Start einer Login-Shell ... 398 ... 8.9.3 ... Ausführen von Profildateien beim Start einer Nicht-Login-Shell (Bash und Korn-Shell) ... 400 ... 8.9.4 ... Zusammenfassung alle Profil- und Startup-Dateien ... 402 8.10 ... Ein Shellscript bei der Ausführung ... 404 ... 8.10.1 ... Syntaxüberprüfung ... 404 ... 8.10.2 ... Expansionen ... 404 ... 8.10.3 ... Kommandos ... 404 8.11 ... Shellscripts optimieren ... 406 9 ... Nützliche Funktionen ... 4099.1 ... Der Befehl eval ... 4099.2 ... xargs ... 412 9.3 ... dirname und basename ... 414 9.4 ... umask ... 415 9.5 ... ulimit (Builtin) ... 416 9.6 ... time ... 418 9.7 ... typeset ... 419 10 ... Fehlersuche und Debugging ... 42110.1 ... Strategien zum Vermeiden von Fehlern ... 421... 10.1.1 ... Planen Sie Ihr Script ... 421 ... 10.1.2 ... Testsystem bereitstellen ... 422 ... 10.1.3 ... Ordnung ist das halbe Leben ... 423 10.2 ... Fehlerarten ... 425 10.3 ... Fehlersuche ... 426 ... 10.3.1 ... Tracen mit set -x ... 427 ... 10.3.2 ... DEBUG und ERR-Signal ... 429 ... 10.3.3 ... Variablen und Syntax überprüfen ... 434 ... 10.3.4 ... Eine Debug-Ausgabe hinzufügen ... 434 ... 10.3.5 ... Debugging-Tools ... 435 11 ... Reguläre Ausdrücke und grep ... 43711.1 ... Reguläre Ausdrücke – die Theorie ... 437... 11.1.1 ... Elemente für reguläre Ausdrücke (POSIX-RE) ... 438 11.2 ... grep ... 441 ... 11.2.1 ... Wie arbeitet grep? ... 442 ... 11.2.2 ... grep mit regulären Ausdrücken ... 443 ... 11.2.3 ... grep mit Pipes ... 448 ... 11.2.4 ... grep mit Optionen ... 449 ... 11.2.5 ... egrep (extended grep) ... 452 ... 11.2.6 ... fgrep (fixed oder fast grep) ... 453 ... 11.2.7 ... rgrep ... 453 12 ... Der Stream-Editor sed ... 45512.1 ... Funktions- und Anwendungsweise von sed ... 455... 12.1.1 ... Wohin mit der Ausgabe? ... 457 12.2 ... Der sed-Befehl ... 459 12.3 ... Adressen ... 460 12.4 ... Kommandos, Substitutionsflags und Optionen von sed ... 462 ... 12.4.1 ... Das a-Kommando – Zeile(n) anfügen ... 465 ... 12.4.2 ... Das c-Kommando – Zeilen ersetzen ... 466 ... 12.4.3 ... Das d-Kommando – Zeilen löschen ... 467 ... 12.4.4 ... Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern ... 467 ... 12.4.5 ... Das Kommando i – Einfügen von Zeilen ... 469 ... 12.4.6 ... Das p-Kommando – Patternspace ausgeben ... 470 ... 12.4.7 ... Das Kommando q – Beenden ... 471 ... 12.4.8 ... Die Kommandos r und w ... 471 ... 12.4.9 ... Das Kommando s – substitute ... 473 ... 12.4.10 ... Das Kommando y ... 477 12.5 ... sed-Scripts ... 478 13 ... awk-Programmierung ... 48313.1 ... Einführung und Grundlagen von awk ... 483... 13.1.1 ... History und Versionen von awk ... 484 ... 13.1.2 ... Die Funktionsweise von awk ... 485 13.2 ... Aufruf von awk-Programmen ... 486 ... 13.2.1 ... Grundlegender Aufbau eines awk-Kommandos ... 486 ... 13.2.2 ... Die Kommandozeilen-Optionen von awk ... 488 ... 13.2.3 ... awk aus der Kommandozeile aufrufen ... 489 ... 13.2.4 ... awk in Shellscripts aufrufen ... 489 ... 13.2.5 ... awk als eigenes Script ausführen ... 491 13.3 ... Grundlegende awk-Programme und -Elemente ... 491 ... 13.3.1 ... Ausgabe von Zeilen und Zeilennummern ... 492 ... 13.3.2 ... Felder ... 493 13.4 ... Muster (bzw. Adressen) von awk-Scripts ... 498 ... 13.4.1 ... Zeichenkettenvergleiche ... 498 ... 13.4.2 ... Vergleichsausdrücke ... 499 ... 13.4.3 ... Reguläre Ausdrücke ... 501 ... 13.4.4 ... Zusammengesetzte Ausdrücke ... 504 ... 13.4.5 ... BEGIN und END ... 504 13.5 ... Die Komponenten von awk-Scripts ... 506 ... 13.5.1 ... Variablen ... 507 ... 13.5.2 ... Arrays ... 512 ... 13.5.3 ... Operatoren ... 515 ... 13.5.4 ... Kontrollstrukturen ... 522 13.6 ... Funktionen ... 527 ... 13.6.1 ... Mathematische Funktionen ... 527 ... 13.6.2 ... Funktionen für Zeichenketten ... 529 ... 13.6.3 ... Funktionen für die Zeit ... 533 ... 13.6.4 ... Systemfunktionen ... 535 ... 13.6.5 ... Ausgabefunktionen ... 535 ... 13.6.6 ... Eingabefunktion ... 536 ... 13.6.7 ... Benutzerdefinierte Funktionen ... 539 13.7 ... Empfehlung ... 542 14 ... Linux-UNIX-Kommandoreferenz ... 54314.1 ... Kurzübersicht ... 54414.2 ... Dateiorientierte Kommandos ... 551 ... bzcat – Ausgabe von bzip2-komprimierten Dateien ... 551 ... cat – Datei(en) nacheinander ausgeben ... 551 ... chgrp – Gruppe von Dateien oder Verzeichnissen ändern ... 552 ... cksum/md5sum/sum – eine Prüfsumme für eine Datei ermitteln ... 552 ... chmod – Zugriffsrechte von Dateien oder Verzeichnissen ändern ... 553 ... chown – Eigentümer von Dateien oder Verzeichnissen ändern ... 554 ... cmp – Dateien miteinander vergleichen ... 555 ... comm – zwei sortierte Textdateien miteinander vergleichen ... 555 ... cp – Dateien kopieren ... 556 ... csplit – Zerteilen von Dateien (kontextabhängig) ... 556 ... cut – Zeichen oder Felder aus Dateien herausschneiden ... 557 ... diff – Vergleichen zweier Dateien ... 557 ... diff3 – Vergleich von drei Dateien ... 558 ... dos2unix – Dateien vom DOS- in UNIX-Format umwandeln ... 559 ... expand – Tabulatoren in Leerzeichen umwandeln ... 559 ... file – den Inhalt von Dateien analysieren ... 559 ... find – Suchen nach Dateien ... 560 ... fold – einfaches Formatieren von Dateien ... 561 ... head – Anfang einer Datei ausgeben ... 562 ... less – Datei(en) seitenweise ausgeben ... 562 ... ln – Links auf eine Datei erzeugen ... 563 ... ls – Verzeichnisinhalt auflisten ... 563 ... more – Datei(en) seitenweise ausgeben ... 564 ... mv – Datei(en) und Verzeichnisse verschieben oder umbenennen ... 564 ... nl – Datei mit Zeilennummer ausgeben ... 564 ... od – Datei(en) hexadezimal bzw. oktal ausgeben ... 565 ... paste – Dateien spaltenweise verknüpfen ... 565 ... pcat – Ausgabe von pack-komprimierten Dateien ... 565 ... rm – Dateien und Verzeichnisse löschen ... 566 ... sort – Dateien sortieren ... 566 ... split – Dateien in mehrere Teile zerlegen ... 567 ... tac – Dateien rückwärts ausgeben ... 568 ... tail – Ende einer Datei ausgeben ... 568 ... tee – Ausgabe duplizieren ... 569 ... touch – Anlegen von Dateien oder Zeitstempel verändern ... 569 ... tr – Zeichen ersetzen bzw. Umformen von Dateien ... 569 ... type – Kommandos klassifizieren ... 569 ... umask – Dateierstellungsmaske ändern bzw. ausgeben ... 570 ... uniq – doppelte Zeilen nur einmal ausgeben ... 570 ... unix2dos – Dateien vom UNIX- in DOS-Format umwandeln ... 570 ... wc – Zeilen, Wörter und Zeichen einer Datei zählen ... 571 ... whereis – Suche nach Dateien ... 571 ... zcat, zless, zmore – (seitenweise) Ausgabe von gunzip-komprimierten Dateien ... 571 14.3 ... Verzeichnisorientierte Kommandos ... 572 ... basename – gibt den Dateianteil eines Pfadnamens zurück ... 572 ... cd – Verzeichnis wechseln ... 572 ... dircmp – Verzeichnisse rekursiv vergleichen ... 572 ... dirname – Verzeichnisanteil eines Pfadnamens zurückgeben ... 572 ... mkdir – ein Verzeichnis anlegen ... 572 ... pwd – Ausgeben des aktuellen Arbeitsverzeichnisses ... 573 ... rmdir – ein leeres Verzeichnis löschen ... 573 14.4 ... Verwaltung von Benutzern und Gruppe ... 573 ... exit, logout – eine Session (Sitzung) beenden ... 573 ... finger – Informationen zu anderen Benutzern abfragen ... 574 ... groupadd, groupmod, groupdel – Gruppenverwaltung (distributionsabhängig) ... 574 ... groups – Gruppenzugehörigkeit ausgeben ... 575 ... id – eigene Benutzer- und Gruppen-ID ermitteln ... 575 ... last – An- und Abmeldezeit eines Benutzers ermitteln ... 575 ... logname – Name des aktuellen Benutzers anzeigen ... 575 ... newgrp – Gruppenzugehörigkeit kurzzeitig wechseln (betriebssystemspezifisch) ... 575 ... passwd – Passwort ändern bzw. vergeben ... 576 ... useradd/adduser, userdel, usermod – Benutzerverwaltung (distributionsabhängig) ... 576 ... who – eingeloggte Benutzer anzeigen ... 577 ... whoami – Name des aktuellen Benutzers anzeigen ... 577 14.5 ... Programm- und Prozessverwaltung ... 578 ... at – Kommando zu einem bestimmten Zeitpunkt ausführen lassen ... 578 ... batch – Kommando irgendwann später ausführen lassen ... 578 ... bg – einen angehaltenen Prozess im Hintergrund fortsetzen ... 579 ... cron/crontab – Programme in bestimmten Zeitintervallen ausführen lassen ... 579 ... fg – einen angehaltenen Prozess im Vordergrund fortsetzen ... 579 ... jobs – Anzeigen angehaltener bzw. im Hintergrund laufender Prozesse ... 580 ... kill – Signale an Prozesse mit einer Prozessnummer senden ... 580 ... killall – Signale an Prozesse mit einem Prozessnamen senden ... 580 ... nice – Prozesse mit anderer Priorität ausführen lassen ... 580 ... nohup – Prozesse beim Beenden einer Sitzung weiterlaufen lassen ... 581 ... ps – Prozessinformationen anzeigen ... 581 ... pgrep – Prozesse über ihren Namen finden ... 582 ... pstree – Prozesshierachie in Baumform ausgeben ... 582 ... renice – Priorität laufender Prozesse verändern ... 583 ... sleep – Prozesse suspendieren (schlafen legen) ... 583 ... su – Ändern der Benutzerkennung (ohne Neuanmeldung) ... 583 ... sudo – Programm als anderer Benutzer ausführen ... 584 ... time – Zeitmessung für Prozesse ... 585 ... top – Prozesse nach CPU-Auslastung anzeigen (betriebssystemspezifisch) ... 585 14.6 ... Speicherplatzinformationen ... 585 ... df – Abfrage des benötigten Speicherplatzes für die Dateisysteme ... 585 ... du – Größe eines Verzeichnisbaums ermitteln ... 586 ... free – verfügbaren Speicherplatz (RAM und Swap) anzeigen (betriebssystemabhängig) ... 587 ... swap – Swap-Space anzeigen (nicht Linux) ... 587 14.7 ... Dateisystem-Kommandos ... 587 ... badblocks – überprüft, ob ein Datenträger defekte Sektoren hat ... 587 ... cfdisk – Partitionieren von Festplatten ... 588 ... dd – Datenblöcke zwischen Device (Low Level) kopieren (und konvertieren) ... 588 ... dd_rescue – fehlertolerantes Kopieren von Dateiblöcken ... 590 ... dumpe2fs – zeigt Informationen über ein ext2/ext3- Dateisystem an ... 591 ... e2fsck – repariert ein ext2/ext3-Dateisystem ... 591 ... fdformat – formatiert eine Diskette ... 592 ... fdisk – Partitionieren von Speichermedien ... 593 ... fsck – Reparieren und Überprüfen von Dateisystemen ... 594 ... mkfs – Dateisystem einrichten ... 595 ... mkswap – eine Swap-Partition einrichten ... 596 ... mount, umount – An- bzw. Abhängen eines Dateisystems ... 597 ... parted – Partitionen anlegen, verschieben, vergrößern oder verkleinern ... 598 ... prtvtoc – Partitionstabellen ausgeben ... 598 ... swapon, swapoff – Swap-Datei oder Partition (de)aktivieren ... 598 ... sync – alle gepufferten Schreiboperationen ausführen ... 598 14.8 ... Archivierung und Backup ... 599 ... bzip2/bunzip2 – (De-)Komprimieren von Dateien ... 599 ... compress/uncompress – (De-)Komprimieren von Dateien ... 600 ... cpio, afio – Dateien und Verzeichnisse archivieren ... 600 ... crypt – Dateien verschlüsseln ... 603 ... dump/restore bzw. ufsdump/ufsrestore – Vollsicherung bzw. ... gzip/gunzip – (De-)Komprimieren von Dateien ... 606 ... mt – Streamer steuern ... 607 ... pack/unpack – (De-)Komprimieren von Dateien ... 607 ... tar – Dateien und Verzeichnisse archivieren ... 608 ... zip/unzip – (De-)Komprimieren von Dateien ... 612 14.9 ... Systeminformationen ... 613 ... cal – zeigt einen Kalender an ... 613 ... date – Datum und Uhrzeit ... 614 ... uname – Rechnername, Architektur und OS ausgeben ... 614 ... uptime – Laufzeit des Rechners ... 615 14.10 ... System-Kommandos ... 615 ... dmesg – letzte Boot-Meldung des Kernels anzeigen ... 615 ... halt – alle laufenden Prozesse beenden ... 615 ... reboot – alle laufenden Prozesse beenden und System neu starten ... 615 ... shutdown – System herunterfahren ... 616 14.11 ... Druckeradministration ... 617 14.12 ... Netzwerkbefehle ... 618 ... arp – Ausgeben von MAC-Adressen ... 618 ... ftp – Dateien zu einem anderen Rechner übertragen ... 618 ... hostname – Rechnername ermitteln ... 624 ... ifconfig – Netzwerkzugang konfigurieren ... 624 ... mail/mailx – E-Mails schreiben und empfangen (und auswerten) ... 626 ... uuencode/uudecode – Text- bzw. Binärdateien codieren ... 627 ... netstat – Statusinformationen über das Netzwerk ... 628 ... nslookup (host/dig) – DNS-Server abfragen ... 628 ... ping – Verbindung zu anderem Rechner testen ... 629 ... ssh – sichere Shell auf anderem Rechner starten ... 630 ... scp – Dateien kopieren zwischen unterschiedlichen Rechnern ... 632 ... rsync – Replizieren von Dateien und Verzeichnissen ... 633 ... traceroute – Route zu einem Rechner verfolgen ... 635 14.13 ... Benutzerkommunikation ... 636 ... wall – Nachrichten an alle Benutzer verschicken ... 636 ... write – Nachrichten an andere Benutzer verschicken ... 636 ... mesg – Nachrichten auf die Dialogstation zulassen oder unterbinden ... 636 14.14 ... Bildschirm- und Terminalkommandos ... 637 ... clear – Löschen des Bildschirms ... 637 ... reset – Zeichensatz für ein Terminal wiederherstellen ... 637 ... setterm – Terminal-Einstellung verändern ... 637 ... stty – Terminal-Einstellung abfragen oder setzen ... 638 ... tty – Terminal-Name erfragen ... 639 ... tput – Terminal- und Cursorsteuerung ... 639 14.15 ... Online-Hilfen ... 640 ... apropos – nach Schlüsselwörtern in man-Seiten suchen ... 640 ... info – GNU-Online-Manual ... 640 ... man – die traditionelle Online-Hilfe ... 640 ... whatis – Kurzbeschreibung zu einem Kommando ... 641 14.16 ... Alles rund um PostScript-Kommandos ... 642 14.17 ... Gemischte Kommandos ... 642 ... alias/unalias – Kurznamen für Kommandos vergeben bzw. ... bc – Taschenrechner ... 642 ... printenv bzw. env – Umgebungsvariablen anzeigen ... 643 15 ... Die Praxis ... 64515.1 ... Alltägliche Lösungen ... 646... 15.1.1 ... Auf alphabetische und numerische Zeichen prüfen ... 646 ... 15.1.2 ... Auf Integer überprüfen ... 647 ... 15.1.3 ... echo mit oder ohne -n ... 649 15.2 ... Datei-Utilities ... 650 ... 15.2.1 ... Leerzeichen im Dateinamen ersetzen ... 650 ... 15.2.2 ... Dateiendungen verändern ... 651 ... 15.2.3 ... Nach veränderten Dateien in zwei Verzeichnissen vergleichen ... 653 15.3 ... Systemadministration ... 654 ... 15.3.1 ... Benutzerverwaltung ... 655 ... 15.3.2 ... Systemüberwachung ... 673 15.4 ... Backup-Strategien ... 679 ... 15.4.1 ... Warum ein Backup? ... 679 ... 15.4.2 ... Sicherungsmedien ... 681 ... 15.4.3 ... Varianten der Sicherungen ... 681 ... 15.4.4 ... Bestimmte Bereiche sichern ... 682 ... 15.4.5 ... Backup über ssh mit tar ... 683 ... 15.4.6 ... Daten mit rsync synchronisieren ... 689 ... 15.4.7 ... Dateien und Verzeichnisse per E-Mail versenden ... 693 ... 15.4.8 ... Startup-Scripts ... 695 15.5 ... World Wide Web und HTML ... 702 ... 15.5.1 ... Analysieren von access_log (Apache) ... 703 ... 15.5.2 ... Analysieren von error_log (Apache) ... 707 15.6 ... CGI (Common Gateway Interface) ... 710 ... 15.6.1 ... CGI-Scripts ausführen ... 711 ... 15.6.2 ... CGI-Environment ausgeben ... 712 ... 15.6.3 ... Einfache Ausgabe als Text ... 713 ... 15.6.4 ... Ausgabe als HTML formatieren ... 716 ... 15.6.5 ... Systeminformationen ausgeben ... 718 ... 15.6.6 ... Kontaktformular ... 720 ... 15.6.7 ... Noch ein Tipp ... 724 16 ... GUIs mit Tcl/Tk ... 72516.1 ... Was ist und was kann Tcl/Tk? ... 72516.2 ... Ein Tcl/Tk-Skript starten ... 726 16.3 ... Variablen ... 728 16.4 ... Einfache Ausgabe ... 729 16.5 ... Substitutionsmechanismen ... 729 ... 16.5.1 ... Variablensubstitution ... 729 ... 16.5.2 ... Befehlssubstitution ... 730 ... 16.5.3 ... Backslashsubstitution ... 730 16.6 ... Mathematische Ausdrücke ... 731 16.7 ... Programmstrukturen ... 731 ... 16.7.1 ... Verzweigungen ... 732 ... 16.7.2 ... Schleifen ... 733 ... 16.7.3 ... Prozeduren (Funktionen) ... 735 16.8 ... Listen ... 736 16.9 ... Stringverarbeitung ... 736 16.10 ... Dateizugriff ... 736 ... 16.10.1 ... open ... 737 ... 16.10.2 ... puts ... 737 ... 16.10.3 ... gets ... 738 ... 16.10.4 ... read ... 739 16.11 ... Der Rest ... 739 16.12 ... Das Tk-Toolkit ... 739 16.13 ... Eine Einführung ... 740 16.14 ... Eine einfache Schaltfläche – button ... 741 16.15 ... Einzeiliges Textfeld – entry ... 742 16.16 ... Mehrzeiliger Text und ein Menü – text und menu ... 743 16.17 ... Mit Ereignissen verbinden – bind ... 747 16.18 ... Layoutmanager (Geometriemanager) – grid und pack ... 749 ... 16.18.1 ... pack ... 749 ... 16.18.2 ... grid ... 752 16.19 ... Eine Scrollleiste – scrollbar ... 754 16.20 ... Weitere Eingabe-Widgets – radiobutton, checkbutton, scale und spinbox ... 755 ... 16.20.1 ... radiobutton ... 755 ... 16.20.2 ... checkbutton ... 756 ... 16.20.3 ... scale ... 756 ... 16.20.4 ... spinbox ... 757 ... 16.20.5 ... Beispiel ... 758 16.21 ... frame und labelframe ... 760 16.22 ... Listen – listbox ... 760 16.23 ... Darstellen von Grafiken – canvas ... 762 16.24 ... Ein geteiltes Fenster – panedwindow ... 763 16.25 ... Widgetübersicht ... 764 16.26 ... Dialoge (tk_) ... 765 16.27 ... Tile-Erweiterung (ttk_) ... 765 16.28 ... Weitere Empfehlungen ... 766 A ... Anhang ... 769A.1 ... Shell-Builtin-Befehle ... 769A.2 ... Externe Kommandos ... 771 A.3 ... Shell-Optionen ... 772 A.4 ... Shell-Variablen ... 773 A.5 ... Kommandozeile editieren ... 778 A.6 ... Wichtige Tastenkürzel (Kontrolltasten) ... 780 A.7 ... Initialisierungsdateien der Shells ... 781 A.8 ... Signale ... 782 A.9 ... Sonderzeichen und Zeichenklassen ... 784 A.10 ... Die Buch-DVD ... 785 |
