Shell-Programmierung

Shell-Programmierung

von: Jürgen Wolf

Galileo Press, 2005

ISBN: 9783898426831

Sprache: Deutsch

783 Seiten, Download: 3203 KB

 
Format:  PDF, auch als Online-Lesen

geeignet für: Apple iPad, Android Tablet PC's Online-Lesen PC, MAC, Laptop


 

eBook anfordern

Mehr zum Inhalt

Shell-Programmierung



  Liebe Leserin, lieber Leser, 3  
  Auf einen Blick 4  
  Inhalt 6  
  Vorwort des Autors 20  
     Übersicht 21  
     Danksagung 21  
  Vorwort des Gutachters – die Shell: Fluch oder Segen? 24  
  1 Einführung 28  
     1.1 Voraussetzungen an den Leser 28  
        1.1.1 Zielgruppe 29  
        1.1.2 Notation 30  
     1.2 Was ist eine Shell? 31  
     1.3 Hauptanwendungsgebiet 33  
        1.3.1 Was ist ein Shellscript? 33  
        1.3.2 Vergleich mit anderen Sprachen 35  
     1.4 Kommando, Programm oder Shellscript? 36  
        1.4.1 Shell-eigene Kommandos (Builtin-Kommando) 37  
        1.4.2 Aliase in der Shell 37  
        1.4.3 Funktionen in der Shell 38  
        1.4.4 Shellscripts (Shell-Prozeduren) 38  
        1.4.5 Programme (binär) 38  
     1.5 Die Shell- Vielfalt 38  
        1.5.1 ksh (Korn-Shell) 39  
        1.5.2 Bash (Bourne-Again-Shell) 39  
        1.5.3 zsh (Z-Shell) 39  
        1.5.4 ash (A-Shell) 39  
        1.5.5 rbash, rzsh (Restricted Shell) 40  
        1.5.6 tcsh ( TC-Shell) 40  
        1.5.7 Welche Shell- Variante wird in diesem Buch verwendet? 40  
        1.5.8 rsh und ssh 41  
     1.6 Betriebssysteme 41  
     1.7 Crashkurs: einfacher Umgang mit der Kommandozeile 42  
        1.7.1 Grundlegende Befehle 42  
        1.7.2 Der Umgang mit Dateien 43  
        1.7.3 Der Umgang mit Verzeichnissen 47  
        1.7.4 Datei- und Verzeichnisnamen 51  
        1.7.5 Gerätenamen 51  
        1.7.6 Dateiattribute 52  
     1.8 Shellscripts schreiben und ausführen 55  
        1.8.1 Der Editor 55  
        1.8.2 Der Name des Shellscripts 55  
        1.8.3 Ausführen 56  
        1.8.4 Hintergrundprozess starten 59  
        1.8.5 Ausführende Shell festlegen 60  
        1.8.6 Kommentare 63  
        1.8.7 Stil 63  
        1.8.8 Ein Shellscript beenden 64  
        1.8.9 Testen und Debuggen von Shellscripts 66  
        1.8.10 Shellscript, das ein Shellscript erstellt und ausführt 67  
     1.9 Vom Shellscript zum Prozess 69  
        1.9.1 Ist das Shellscript ein Prozess? 70  
        1.9.2 Echte Login-Shell? 71  
     1.10 Datenstrom 72  
        1.10.1 Ausgabe umleiten 72  
        1.10.2 Standardfehlerausgabe umleiten 75  
        1.10.3 Eingabe umleiten 78  
        1.10.4 Pipes 81  
        1.10.5 Ein T-Stück mit tee 82  
        1.10.6 Ersatzmuster (Wildcards) 83  
        1.10.7 Brace Extension (Bash und Korn-Shell only) 88  
        1.10.8 Muster-Alternativen (Bash und Korn-Shell only) 89  
        1.10.9 Tilde-Expansion (Bash und Korn-Shell only) 90  
     1.11 Empfehlung 91  
  2 Variablen 94  
     2.1 Grundlagen 94  
        2.1.1 Zugriff auf den Wert einer Variablen 94  
        2.1.2 Variablen-Interpolation 95  
     2.2 Zahlen 99  
        2.2.1 Integer-Arithmetik (Bourne-Shell, Bash und Korn-Shell) 100  
        2.2.2 Integer-Arithmetik (Bash und Korn-Shell only) 102  
        2.2.3 bc – Rechnen mit Fließkommazahlen und mathematische 105  
        Funktionen 105  
     2.3 Zeichenketten 108  
        2.3.1 Stringverarbeitung 109  
        2.3.2 Erweiterte Funktionen für Bash und Korn-Shell 116  
     2.4 Quotings und Kommando-Substitution 119  
        2.4.1 Single und Double Quotings 120  
        2.4.2 Kommando-Substitution – Back Quotes 122  
     2.5 Arrays (Bash und Korn-Shell only) 125  
        2.5.1 Werte an Arrays zuweisen 126  
        2.5.2 Eine Liste von Werten an ein Array zuweisen (Bash) 127  
        2.5.3 Eine Liste von Werten an ein Array zuweisen (Korn-Shell) 127  
        2.5.4 Zugreifen auf die einzelnen Elemente eines Arrays 127  
     2.6 Variablen exportieren 131  
     2.7 Umgebungsvariablen eines Prozesses 137  
     2.8 Shell- Variablen 138  
     2.9 Automatische Variablen der Shell 143  
        2.9.1 Der Name des Shellscripts – $0 143  
        2.9.2 Die Prozessnummer des Shellscripts – $$ 144  
        2.9.3 Der Beendigungsstatus eines Shellscripts – $? 145  
        2.9.4 Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses – $! 145  
        2.9.5 Weitere vordefinierte Variablen der Shell 145  
        2.9.6 Weitere automatische Variablen für Bash und Korn-Shell 146  
  3 Parameter und Argumente 152  
     3.1 Einführung 152  
     3.2 Kommandozeilenparameter $1 bis $9 152  
     3.3 Besondere Parameter 153  
        3.3.1 Die Variable $* 154  
        3.3.2 Die Variable $@ 155  
        3.3.3 Die Variable $# 156  
     3.4 Der Befehl shift 157  
     3.5 Argumente und Leerzeichen 159  
     3.6 Argumente jenseits von $9 159  
        3.6.1 Beliebig viele Argumente (Bash und Korn-Shell only) 161  
     3.7 Argumente setzen mit set und Kommando- Substitution 161  
     3.8 getopts – Kommandozeilenoptionen auswerten 164  
     3.9 Vorgabewerte für Variablen 168  
  4 Kontrollstrukturen 174  
     4.1 Bedingte Anweisung mit if 174  
        4.1.1 Kommandos testen mit if 176  
        4.1.2 Kommandoverkettung über Pipes mit if 178  
     4.2 Die else-Alternative für eine if- Verzweigung 182  
     4.3 Mehrfache Alternative mit elif 184  
     4.4 Das Kommando test 186  
        4.4.1 Ganze Zahlen vergleichen 187  
        4.4.2 Ganze Zahlen vergleichen mit let (Bash und Korn-Shell only) 190  
        4.4.3 Zeichenketten vergleichen 191  
        4.4.4 Zeichenketten vergleichen (Bash und Korn-Shell only) 196  
     4.5 Status von Dateien erfragen 198  
     4.6 Logische Verknüpfung von Ausdrücken 202  
        4.6.1 Negationsoperator ! 203  
        4.6.2 Die UND- Verknüpfung (-a und &&) 204  
        4.6.3 Die ODER- Verknüpfung (-o und ||) 205  
        4.6.4 Klammerung und mehrere logische Verknüpfungen 206  
     4.7 Short Circuit- Tests – ergebnisabhängige Befehlsausführung 208  
     4.8 Die Anweisung case 211  
        4.8.1 Alternative Vergleichsmuster 213  
        4.8.2 case und Wildcards 215  
        4.8.3 case und Optionen 217  
     4.9 Schleifen 218  
     4.10 for-Schleife 218  
        4.10.1 Argumente bearbeiten mit for 219  
        4.10.2 for und die Dateinamen-Substitution 220  
        4.10.3 for und die Kommando-Substitution 222  
        4.10.4 for und Array (Bash und Korn Shell only) 225  
        4.10.5 for-Schleife mit Schleifenzähler (Bash only) 226  
     4.11 Die while-Schleife 228  
     4.12 Die until-Schleife 231  
     4.13 Kontrollierte Sprünge 233  
        4.13.1 Der Befehl continue 234  
        4.13.2 Der Befehl break 236  
     4.14 Endlosschleifen 237  
  5 Terminal-Ein- und Ausgabe 242  
     5.1 Von Terminals zu Pseudo- Terminals 242  
     5.2 Ausgabe 244  
        5.2.1 Der echo-Befehl 244  
        5.2.2 print (Korn-Shell only) 249  
        5.2.3 Der Befehl printf 249  
        5.2.4 Der Befehl tput – Terminalsteuerung 253  
     5.3 Eingabe 258  
        5.3.1 Der Befehl read 258  
        5.3.2 (Zeilenweise) Lesen einer Datei mit read 260  
        5.3.3 Zeilenweise mit einer Pipe aus einem Kommando lesen (read) 261  
        5.3.4 Here-Dokumente (Inline-Eingabeumleitung) 262  
        5.3.5 Here-Dokumente mit read verwenden 265  
        5.3.6 Die Variable IFS 267  
        5.3.7 Arrays einlesen mit read (Bash und Korn-Shell only) 272  
        5.3.8 Shell-abhängige Anmerkungen zu read 274  
        5.3.9 Einzelnes Zeichen abfragen 275  
        5.3.10 Einzelne Zeichen mit Escape-Sequenzen abfragen 276  
        5.3.11 Passworteingabe 283  
     5.4 Umlenken mit dem Befehl exec 284  
     5.5 Filedeskriptoren 287  
        5.5.1 Einen neuen Filedeskriptor verwenden 288  
        5.5.2 Die Umlenkung <> 291  
     5.6 Named Pipes 292  
     5.7 Menüs mit select (Bash und Korn-Shell only) 294  
     5.8 dialog und Xdialog 299  
        5.8.1 Entscheidungsfrage --yesno 301  
        5.8.2 Nachrichtenbox mit Bestätigung --msgbox 302  
        5.8.3 Hinweisfenster ohne Bestätigung --infobox 303  
        5.8.4 Text-Eingabezeile --inputbox 304  
        5.8.5 Ein einfacher Dateibetrachter --textbox 305  
        5.8.6 Ein Menü --menu 305  
        5.8.7 Auswahlliste zum Ankreuzen --checklist 306  
        5.8.8 Radiobuttons zum Auswählen --radiolist 307  
        5.8.9 Fortschrittszustand anzeigen --gauge 308  
        5.8.10 Verändern von Aussehen und Ausgabe 309  
        5.8.11 Kleines Beispiel 310  
        5.8.12 Zusammenfassung 311  
     5.9 gnuplot – Visualisierung von Messdaten 312  
        5.9.1 Wozu wird gnuplot eingesetzt? 313  
        5.9.2 gnuplot starten 313  
        5.9.3 Das Kommando zum Plotten 314  
        5.9.4 Variablen und Parameter für gnuplot 314  
        5.9.5 Ausgabe von gnuplot umleiten 316  
        5.9.6 Variablen und eigene Funktionen definieren 318  
        5.9.7 Interpretation von Daten aus einer Datei 319  
        5.9.8 Alles bitte nochmals zeichnen (oder besser speichern und laden) 322  
        5.9.9 gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb) 323  
        5.9.10 Plot-Styles und andere Ausgaben festlegen 325  
        5.9.11 Tricks für die Achsen 330  
        5.9.12 Die dritte Dimension 334  
        5.9.13 Zusammenfassung 337  
  6 Funktionen 340  
     6.1 Definition 340  
        6.1.1 Definition (Bash und Korn-Shell only) 341  
        6.1.2 Funktionsaufruf 341  
        6.1.3 Funktionen exportieren 343  
        6.1.4 Aufrufreihenfolge 345  
        6.1.5 Who is who 345  
        6.1.6 Aufruf selbst bestimmen 346  
        6.1.7 Funktionen auflisten 347  
     6.2 Funktionen, die Funktionen aufrufen 347  
     6.3 Parameterübergabe 349  
        6.3.1 FUNCNAME (Bash only) 352  
     6.4 Rückgabewert aus einer Funktion 353  
        6.4.1 Rückgabewert mit return 353  
        6.4.2 Rückgabewert mit echo und einer Kommando-Substitution 354  
        6.4.3 Rückgabewert ohne eine echte Rückgabe (lokale Variable) 356  
        6.4.4 Funktionen und exit 357  
     6.5 Lokale contra globale Variablen 358  
        6.5.1 Lokale Variablen (Bash und Korn-Shell only) 360  
     6.6 alias und unalias 362  
     6.7 Autoload (Korn-Shell only) 364  
  7 Signale 368  
     7.1 Grundlagen zu den Signalen 368  
     7.2 Signale senden – kill 372  
     7.3 Eine Fallgrube für Signale – trap 372  
        7.3.1 Einen Signalhandler (Funktion) einrichten 375  
        7.3.2 Mit Signalen Schleifendurchläufe abbrechen 379  
        7.3.3 Mit Signalen das Script beenden 379  
        7.3.4 Das Beenden der Shell (oder eines Scripts) abfangen 380  
        7.3.5 Signale ignorieren 381  
        7.3.6 Signale zurücksetzen 382  
  8 Rund um die Ausführung von Scripts und Prozessen 386  
     8.1 Prozessprioritäten 386  
     8.2 Warten auf andere Prozesse 387  
     8.3 Hintergrundprozess wieder hervorholen 387  
     8.4 Hintergrundprozess schützen 388  
     8.5 Subshells 390  
     8.6 Mehrere Scripts verbinden und ausführen ( Kommunikation zwischen Scripts) 392  
        8.6.1 Datenübergabe zwischen Scripts 392  
        8.6.2 Rückgabe von Daten an andere Scripts 394  
        8.6.3 Scripts synchronisieren 396  
     8.7 Jobverwaltung 399  
     8.8 Shellscripts zeitgesteuert ausführen 402  
     8.9 Startprozess- und Profildaten der Shell 407  
        8.9.1 Arten von Initialisierungsdateien 408  
        8.9.2 Ausführen von Profildateien beim Start einer Login-Shell 408  
        8.9.3 Ausführen von Profildateien beim Start einer Nicht-Login- 411  
        Shell (Bash und Korn-Shell) 411  
        8.9.4 Zusammenfassung alle Profil- und Startup-Dateien 413  
     8.10 Ein Shellscript bei der Ausführung 414  
        8.10.1 Syntaxüberprüfung 414  
        8.10.2 Expansionen 414  
        8.10.3 Kommandos 415  
     8.11 Shellscripts optimieren 416  
  9 Nützliche Funktionen 420  
     9.1 Der Befehl eval 420  
     9.2 xargs 423  
     9.3 dirname und basename 425  
     9.4 umask 426  
     9.5 ulimit (Builtin) 427  
     9.6 time 429  
     9.7 typeset 430  
  10 Fehlersuche und Debugging 434  
     10.1 Strategien zum Vermeiden von Fehlern 434  
        10.1.1 Planen Sie Ihr Script 434  
        10.1.2 Testsystem bereitstellen 435  
        10.1.3 Ordnung ist das halbe Leben 435  
     10.2 Fehlerarten 438  
     10.3 Fehlersuche 439  
        10.3.1 Tracen mit set -x 439  
        10.3.2 DEBUG und ERR-Signal 442  
        10.3.3 Variablen und Syntax überprüfen 447  
        10.3.4 Eine Debug-Ausgabe hinzufügen 447  
        10.3.5 Debugging- Tools 448  
  11 Reguläre Ausdrücke und grep 452  
     11.1 Reguläre Ausdrücke – die Theorie 452  
        11.1.1 Elemente für reguläre Ausdrücke (POSIX-RE) 453  
     11.2 grep 456  
        11.2.1 Wie arbeitet grep? 457  
        11.2.2 grep mit regulären Ausdrücken 458  
        11.2.3 grep mit Pipes 463  
        11.2.4 grep mit Optionen 464  
        11.2.5 egrep (extended grep) 467  
        11.2.6 fgrep (fixed oder fast grep) 468  
        11.2.7 rgrep 468  
  12 Der Stream-Editor sed 472  
     12.1 Funktions- und Anwendungsweise von sed 472  
        12.1.1 Wohin mit der Ausgabe? 474  
     12.2 Der sed-Befehl 476  
     12.3 Adressen 476  
     12.4 Kommandos, Substitutionsflags und Optionen von sed 478  
        12.4.1 Das a-Kommando – Zeile(n) anfügen 482  
        12.4.2 Das c-Kommando – Zeilen ersetzen 483  
        12.4.3 Das d-Kommando – Zeilen löschen 483  
        12.4.4 Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern 484  
        12.4.5 Das Kommando i – Einfügen von Zeilen 486  
        12.4.6 Das p-Kommando – Patternspace ausgeben 486  
        12.4.7 Das Kommando q – Beenden 488  
        12.4.8 Die Kommandos r und w 488  
        12.4.9 Das Kommando s – substitute 489  
        12.4.10 Das Kommando y 494  
     12.5 sed-Scripts 495  
  13 awk-Programmierung 500  
     13.1 Einführung und Grundlagen von awk 500  
        13.1.1 History und Versionen von awk 501  
        13.1.2 Die Funktionsweise von awk 502  
     13.2 Aufruf von awk-Programmen 503  
        13.2.1 Grundlegender Aufbau eines awk-Kommandos 503  
        13.2.2 Die Kommandozeilen-Optionen von awk 505  
        13.2.3 awk aus der Kommandozeile aufrufen 506  
        13.2.4 awk in Shellscripts aufrufen 506  
        13.2.5 awk als eigenes Script ausführen 507  
     13.3 Grundlegende awk-Programme und -Elemente 508  
        13.3.1 Ausgabe von Zeilen und Zeilennummern 508  
        13.3.2 Felder 510  
     13.4 Muster (bzw. Adressen) von awk-Scripts 514  
        13.4.1 Zeichenkettenvergleiche 515  
        13.4.2 Vergleichsausdrücke 515  
        13.4.3 Reguläre Ausdrücke 518  
        13.4.4 Zusammengesetzte Ausdrücke 520  
        13.4.5 BEGIN und END 521  
     13.5 Die Komponenten von awk-Scripts 522  
        13.5.1 Variablen 524  
        13.5.2 Arrays 528  
        13.5.3 Operatoren 531  
        13.5.4 Kontrollstrukturen 538  
     13.6 Funktionen 544  
        13.6.1 Mathematische Funktionen 544  
        13.6.2 Funktionen für Zeichenketten 545  
        13.6.3 Funktionen für die Zeit 549  
        13.6.4 Systemfunktionen 552  
        13.6.5 Ausgabefunktionen 552  
        13.6.6 Eingabefunktion 552  
        13.6.7 Benutzerdefinierte Funktionen 556  
     13.7 Empfehlung 558  
  14 Linux-UNIX-Kommandoreferenz 562  
     14.1 Kurzübersicht 562  
     14.2 Dateiorientierte Kommandos 571  
     14.3 Verzeichnisorientierte Kommandos 591  
     14.4 Verwaltung von Benutzern und Gruppe 593  
     14.5 Programm- und Prozessverwaltung 597  
     14.6 Speicherplatzinformationen 604  
     14.7 Dateisystem-Kommandos 606  
     14.8 Archivierung und Backup 617  
     14.9 Systeminformationen 632  
     14.10 System-Kommandos 634  
     14.11 Druckeradministration 636  
     14.12 Netzwerkbefehle 636  
     14.13 Benutzerkommunikation 654  
     14.14 Bildschirm- und Terminalkommandos 655  
     14.15 Online-Hilfen 658  
     14.16 Alles rund um PostScript-Kommandos 660  
     14.17 Gemischte Kommandos 661  
  15 Die Praxis 664  
     15.1 Alltägliche Lösungen 664  
        15.1.1 Auf alphabetische und numerische Zeichen prüfen 664  
        15.1.2 Auf Integer überprüfen 666  
        15.1.3 echo mit oder ohne -n 668  
     15.2 Datei-Utilities 669  
        15.2.1 Leerzeichen im Dateinamen ersetzen 669  
        15.2.2 Dateiendungen verändern 670  
        15.2.3 Nach veränderten Dateien in zwei Verzeichnissen 672  
        vergleichen 672  
     15.3 Systemadministration 673  
        15.3.1 Benutzerverwaltung 674  
        15.3.2 Systemüberwachung 693  
     15.4 Backup-Strategien 700  
        15.4.1 Warum ein Backup? 700  
        15.4.2 Sicherungsmedien 701  
        15.4.3 Varianten der Sicherungen 702  
        15.4.4 Bestimmte Bereiche sichern 702  
        15.4.5 Backup über ssh mit tar 703  
        15.4.6 Daten mit rsync synchronisieren 710  
        15.4.7 Dateien und Verzeichnisse per E-Mail versenden 714  
        15.4.8 Startup-Scripts 716  
     15.5 World Wide Web und HTML 723  
        15.5.1 Analysieren von access_log (Apache) 724  
        15.5.2 Analysieren von error_log (Apache) 728  
     15.6 CGI (Common Gateway Interface) 731  
        15.6.1 CGI-Scripts ausführen 732  
        15.6.2 CGI-Environment ausgeben 733  
        15.6.3 Einfache Ausgabe als Text 734  
        15.6.4 Ausgabe als HTML formatieren 737  
        15.6.5 Systeminformationen ausgeben 739  
        15.6.6 Kontaktformular 741  
        15.6.7 Noch ein Tipp 745  
  A Anhang 746  
     A. 1 Shell-Builtin-Befehle 746  
     A.2 Externe Kommandos 748  
     A.3 Shell-Optionen 749  
     A.4 Shell- Variablen 751  
     A.5 Kommandozeile editieren 755  
     A.6 Wichtige Tastenkürzel (Kontrolltasten) 757  
     A.7 Initialisierungsdateien der Shells 758  
     A.8 Signale 759  
     A.9 Sonderzeichen und Zeichenklassen 761  
  B Die Buch-CD (Inhalte auf Anfrage) 764  
  Index 766  
  Mehr eBooks bei www.ciando.com 0  

Kategorien

Service

Info/Kontakt