Shell-Programmierung

Das umfassende Handbuch
Buch | Hardcover
799 Seiten | Ausstattung: mit DVD
2013 | 4., aktualisierte Auflage
Galileo Press (Verlag)
978-3-8362-2310-2 (ISBN)

Lese- und Medienproben

Shell-Programmierung - Jürgen Wolf, Stefan Kania
39,90 inkl. MwSt
zur Neuauflage
  • Titel erscheint in neuer Auflage
  • Artikel merken
Zu diesem Artikel existiert eine Nachauflage
  • Einführung, Praxis, Referenz mit Übungen inkl. Lösungen
  • Bourne-, Korn- und Bourne-Again-Shell (Bash)
  • Inkl. grep, sed und awk und GUIs mit dialog, Xdialog und gnuplot
Dieses umfassende Handbuch bietet alles, was Sie zur Shell-Programmierung wissen müssen. Behandelt werden: Variablen, Parameter und Argumente, Kontrollstrukturen, Terminal-Ein- und -ausgabe, Funktionen, Signale, Scripts und Prozesse, Fehlersuche und Debugging. Weiter geht's mit den wertvollen Helfern grep, sed und awk. Eine umfangreiche Linux-UNIX-Referenz bietet alle grundlegenden Kommandos in übersichtlicher Form.

Das komplette Werk enthält zahlreiche Praxisbeispiele, ist modular zu lesen und hervorragend als Nachschlagewerk geeignet. Die aktuelle Auflage wurde um zahlreiche Übungsaufgaben mit Lösungen erweitert: Damit eignet sich das Buch bestens zur Prüfungsvorbereitung und zum Selbststudium!
Shell-Programmierung von A bis Z: Gut strukturiert und auch für Shell-Einsteiger geeignet, stellt dieses Handbuch das gesamte Grundlagenwissen zur Shell-Programmierung vor. Behandelt werden die Standardshells: Bourne-Shell, Korn-Shell und Bourne-Again-Shell (bash). Mit ausführlicher Linux-UNIX-Kommandoreferenz.
Einführung in die Shell-Programmierung
Von den Sprachgrundlagen bis zu den Tools grep, sed und awk lernen Sie alles zur Shell-Programmierung. Übungsaufgaben helfen Ihnen dabei, sich schnell und sicher auf der Shell zu bewegen.
Praxiswissen zum Lernen und Nachschlagen
Das Buch ist modular aufgebaut, sodass Sie einsteigen können, wo Sie wollen. Für häufig anfallende Aufgaben wie Backups und Systemadministration werden fertige Shell-Scripts vorgestellt.
Die Linux-UNIX-Referenz
Eine umfangreiche Linux-UNIX-Referenz bietet alle grundlegenden Kommandos zum schnellen Nachschlagen.
GUIs und Messdatenauswertung
Erstellen Sie grafische Oberflächen mithilfe von dialog/Xdialog und nutzen Sie gnuplot zur grafischen Auswertung Ihrer Messdaten.
Themen sind insbesondere:
  • Einführung in die Shell-Programmierung
  • Standardshells: Bourne-Shell, Korn-Shell und Bourne-Again-Shell (Bash)
  • GUIs mit Shellscripts erstellen
  • Umfangreiche Linux-UNIX-Referenz mit allen grundlegenden Kommandos


Die CD-ROM enthält den Code der Beispiele und die vollständige HTML-Version des Handbuchs „C von A bis Z“.

Jürgen Wolf ist Softwareentwickler, Digitalfotograf und Autor aus Leidenschaft. C/C++, Perl, Linux und die Bildbearbeitung mit Photoshop Elements und GIMP sind seine Themen. Sein Traum: ein ruhiges Leben im Westen Kanadas. Und Bücher auf der Veranda schreiben. Besuchen Sie seine umfangreiche Website www.pronix.de.

Stefan Kania, Jahrgang 1961, hatte seinen ersten Kontakt mit Linux im Jahr 1993 während seiner Ausbildung zum Informatiker am b.i.b E.V. in Paderborn. Seit 1997 ist er freiberuflich als Consultant und Trainer tätig. Seine Schwerpunkte liegen in der Implementierung von Samba und LDAP sowie in Schulungen zu beiden Themen. In seiner Freizeit ist er als Tauchlehrer tätig. Zusammen mit seiner Frau und seiner Tochter lebt er Münster.

.. Vorwort ... 23
... Vorwort des Gutachters – die Shell: Fluch oder Segen? ... 27
1 ... Einführung ... 29
1.1 ... Was sollten Sie als Leser wissen? ... 29
1.1.1 ... Zielgruppe ... 30
1.1.2 ... Notation ... 31
1.2 ... Was ist eine Shell? ... 32
1.3 ... Hauptanwendungsgebiet ... 35
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-Kommandos) ... 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) ... 40
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) ... 41
1.5.7 ... Welche Shell-Variante wird in diesem Buch verwendet? ... 42
1.5.8 ... rsh und ssh ... 42
1.6 ... Betriebssysteme ... 43
1.7 ... Crashkurs: einfacher Umgang mit der Kommandozeile ... 43
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 ... 58
1.8.3 ... Ausführen ... 58
1.8.4 ... Hintergrundprozess starten ... 62
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 ... Ein 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 ... 76
1.10.3 ... Eingabe umleiten ... 79
1.10.4 ... Pipes ... 82
1.10.5 ... Ein T-Stück mit tee ... 84
1.10.6 ... Ersatzmuster (Wildcards) ... 85
1.10.7 ... Brace Extension (Bash und Korn-Shell only) ... 89
1.10.8 ... Muster-Alternativen (Bash und Korn-Shell only) ... 90
1.10.9 ... Tilde-Expansion (Bash und Korn-Shell only) ... 91
1.11 ... Empfehlung ... 92
1.12 ... Übungen ... 92
2 ... Variablen ... 95
2.1 ... Grundlagen ... 95
2.1.1 ... Zugriff auf den Wert einer Variablen ... 95
2.1.2 ... Variablen-Interpolation ... 96
2.2 ... Zahlen ... 100
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 mathematischen Funktionen ... 106
2.3 ... Zeichenketten ... 109
2.3.1 ... Stringverarbeitung ... 109
2.3.2 ... Erweiterte Funktionen für Bash und Korn-Shell ... 117
2.4 ... Quotings und Kommando-Substitution ... 120
2.4.1 ... Single und Double Quotings ... 120
2.4.2 ... Kommando-Substitution – Back Quotes ... 123
2.5 ... Arrays (Bash und Korn-Shell only) ... 126
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 ... 128
2.6 ... Variablen exportieren ... 131
2.7 ... Umgebungsvariablen eines Prozesses ... 136
2.8 ... Shell-Variablen ... 137
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
2.10 ... Übungen ... 148
3 ... Parameter und Argumente ... 151
3.1 ... Einführung ... 151
3.2 ... Kommandozeilenparameter $1 bis $9 ... 151
3.3 ... Besondere Parameter ... 152
3.3.1 ... Die Variable $* ... 153
3.3.2 ... Die Variable $@ ... 154
3.3.3 ... Die Variable $# ... 155
3.4 ... Der Befehl shift ... 156
3.5 ... Argumente und Leerzeichen ... 158
3.6 ... Argumente jenseits von $9 ... 158
3.7 ... Argumente setzen mit set und Kommando-Substitution ... 160
3.8 ... getopts – Kommandozeilenoptionen auswerten ... 163
3.9 ... Vorgabewerte für Variablen ... 166
3.10 ... Aufgaben ... 170
4 ... Kontrollstrukturen ... 171
4.1 ... Bedingte Anweisung mit if ... 171
4.1.1 ... Kommandos testen mit if ... 173
4.1.2 ... Kommandoverkettung über Pipes mit if ... 175
4.2 ... Die else-Alternative für eine if-Verzweigung ... 179
4.3 ... Mehrfache Alternative mit elif ... 181
4.4 ... Das Kommando test ... 183
4.4.1 ... Ganze Zahlen vergleichen ... 184
4.4.2 ... Ganze Zahlen vergleichen mit let (Bash und Korn-Shell only) ... 187
4.4.3 ... Zeichenketten vergleichen ... 188
4.4.4 ... Zeichenketten vergleichen (Bash und Korn-Shell only) ... 192
4.5 ... Status von Dateien erfragen ... 195
4.6 ... Logische Verknüpfung von Ausdrücken ... 199
4.6.1 ... Negationsoperator ! ... 200
4.6.2 ... Die UND-Verknüpfung (-a und &&) ... 201
4.6.3 ... Die ODER-Verknüpfung (-o und ||) ... 202
4.6.4 ... Klammerung und mehrere logische Verknüpfungen ... 203
4.7 ... Short Circuit-Tests – ergebnisabhängige Befehlsausführung ... 205
4.8 ... Die Anweisung case ... 208
4.8.1 ... Alternative Vergleichsmuster ... 210
4.8.2 ... case und Wildcards ... 212
4.8.3 ... case und Optionen ... 213
4.9 ... Schleifen ... 214
4.10 ... Die for-Schleife ... 215
4.10.1 ... Argumente bearbeiten mit for ... 216
4.10.2 ... for und die Dateinamen-Substitution ... 217
4.10.3 ... for und die Kommando-Substitution ... 219
4.10.4 ... for und Arrays (Bash und Korn Shell only) ... 222
4.10.5 ... for-Schleife mit Schleifenzähler (Bash only) ... 223
4.11 ... Die while-Schleife ... 225
4.12 ... Die until-Schleife ... 227
4.13 ... Kontrollierte Sprünge ... 229
4.13.1 ... Der Befehl continue ... 230
4.13.2 ... Der Befehl break ... 232
4.14 ... Endlosschleifen ... 233
4.15 ... Aufgaben ... 235
5 ... Terminal-Ein- und -Ausgabe ... 237
5.1 ... Von Terminals zu Pseudo-Terminals ... 237
5.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 ... 248
5.3 ... Eingabe ... 253
5.3.1 ... Der Befehl read ... 253
5.3.2 ... (Zeilenweises) 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 ... 271
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 ... Aufgaben ... 294
6 ... Funktionen ... 295
6.1 ... Definition ... 295
6.1.1 ... Definition (Bash und Korn-Shell only) ... 296
6.1.2 ... Funktionsaufruf ... 296
6.1.3 ... Funktionen exportieren ... 298
6.1.4 ... Aufrufreihenfolge ... 300
6.1.5 ... Who is who ... 300
6.1.6 ... Aufruf selbst bestimmen ... 301
6.1.7 ... Funktionen auflisten ... 302
6.2 ... Funktionen, die Funktionen aufrufen ... 302
6.3 ... Parameterübergabe ... 304
6.4 ... Rückgabewert aus einer Funktion ... 308
6.4.1 ... Rückgabewert mit return ... 308
6.4.2 ... Rückgabewert mit echo und einer Kommando-Substitution ... 309
6.4.3 ... Rückgabewert ohne eine echte Rückgabe (lokale Variable) ... 311
6.4.4 ... Funktionen und exit ... 312
6.5 ... Lokale contra globale Variablen ... 313
6.5.1 ... Lokale Variablen (Bash und Korn-Shell only) ... 315
6.6 ... alias und unalias ... 317
6.7 ... Autoload (Korn-Shell only) ... 319
6.8 ... Aufgaben ... 320
7 ... Signale ... 321
7.1 ... Grundlagen zu den Signalen ... 321
7.2 ... Signale senden – kill ... 325
7.3 ... Eine Fallgrube für Signale – trap ... 326
7.3.1 ... Einen Signalhandler (Funktion) einrichten ... 329
7.3.2 ... Mit Signalen Schleifendurchläufe abbrechen ... 332
7.3.3 ... Mit Signalen das Script beenden ... 333
7.3.4 ... Das Beenden der Shell (oder eines Scripts) abfangen ... 333
7.3.5 ... Signale ignorieren ... 335
7.3.6 ... Signale zurücksetzen ... 335
7.4 ... Aufgabe ... 337
8 ... Rund um die Ausführung von Scripts und Prozessen ... 339
8.1 ... Prozessprioritäten ... 339
8.2 ... Warten auf andere Prozesse ... 340
8.3 ... Hintergrundprozess wieder hervorholen ... 341
8.4 ... Hintergrundprozess schützen ... 342
8.5 ... Subshells ... 343
8.6 ... Mehrere Scripts verbinden und ausführen (Kommunikation zwischen Scripts) ... 345
8.6.1 ... Datenübergabe zwischen Scripts ... 345
8.6.2 ... Rückgabe von Daten an andere Scripts ... 347
8.6.3 ... Scripts synchronisieren ... 349
8.7 ... Jobverwaltung ... 352
8.8 ... Shellscripts zeitgesteuert ausführen ... 355
8.9 ... Startprozess- und Profildaten der Shell ... 360
8.9.1 ... Arten von Initialisierungsdateien ... 361
8.9.2 ... Ausführen von Profildateien beim Start einer Login-Shell ... 361
8.9.3 ... Ausführen von Profildateien beim Start einer Nicht-Login-Shell (Bash und Korn-Shell) ... 364
8.9.4 ... Zusammenfassung alle Profil- und Startup-Dateien ... 365
8.10 ... Ein Shellscript bei der Ausführung ... 367
8.10.1 ... Syntaxüberprüfung ... 368
8.10.2 ... Expansionen ... 368
8.10.3 ... Kommandos ... 368
8.11 ... Shellscripts optimieren ... 368
8.12 ... Aufgaben ... 371
9 ... Nützliche Funktionen ... 373
9.1 ... Der Befehl eval ... 373
9.2 ... xargs ... 376
9.3 ... dirname und basename ... 378
9.4 ... umask ... 379
9.5 ... ulimit (Builtin) ... 380
9.6 ... time ... 382
9.7 ... typeset ... 383
9.8 ... Aufgabe ... 384
10 ... Fehlersuche und Debugging ... 385
10.1 ... Strategien zum Vermeiden von Fehlern ... 385
10.1.1 ... Planen Sie Ihr Script ... 385
10.1.2 ... Testsystem bereitstellen ... 386
10.1.3 ... Ordnung ist das halbe Leben ... 386
10.2 ... Fehlerarten ... 389
10.3 ... Fehlersuche ... 390
10.3.1 ... Tracen mit set -x ... 390
10.3.2 ... Das DEBUG- und das ERR-Signal ... 393
10.3.3 ... Variablen und Syntax überprüfen ... 397
10.3.4 ... Eine Debug-Ausgabe hinzufügen ... 398
10.3.5 ... Debugging-Tools ... 398
11 ... Reguläre Ausdrücke und grep ... 399
11.1 ... Reguläre Ausdrücke – die Theorie ... 399
11.1.1 ... Elemente für reguläre Ausdrücke (POSIX-RE) ... 400
11.1.2 ... Zusammenfassung ... 403
11.2 ... grep ... 403
11.2.1 ... Wie arbeitet grep? ... 404
11.2.2 ... grep mit regulären Ausdrücken ... 405
11.2.3 ... grep mit Pipes ... 411
11.2.4 ... grep mit Optionen ... 412
11.2.5 ... egrep (extended grep) ... 414
11.2.6 ... fgrep (fixed oder fast grep) ... 416
11.2.7 ... rgrep ... 416
11.3 ... Aufgaben ... 416
12 ... Der Stream-Editor sed ... 417
12.1 ... Funktions- und Anwendungsweise von sed ... 417
12.1.1 ... Grundlegende Funktionsweise ... 417
12.1.2 ... Wohin mit der Ausgabe? ... 419
12.2 ... Der sed-Befehl ... 421
12.3 ... Adressen ... 421
12.4 ... Kommandos, Substitutionsflags und Optionen von sed ... 423
12.4.1 ... Das a-Kommando – Zeile(n) anfügen ... 428
12.4.2 ... Das c-Kommando – Zeilen ersetzen ... 429
12.4.3 ... Das d-Kommando – Zeilen löschen ... 429
12.4.4 ... Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern ... 430
12.4.5 ... Das Kommando i – Einfügen von Zeilen ... 432
12.4.6 ... Das p-Kommando – Patternspace ausgeben ... 432
12.4.7 ... Das Kommando q – Beenden ... 433
12.4.8 ... Die Kommandos r und w ... 434
12.4.9 ... Das Kommando s – substitute ... 435
12.4.10 ... Das Kommando y ... 440
12.5 ... sed-Scripts ... 441
12.6 ... Aufgaben ... 444
13 ... awk-Programmierung ... 445
13.1 ... Einführung und Grundlagen von awk ... 445
13.1.1 ... History und Versionen von awk ... 446
13.1.2 ... Die Funktionsweise von awk ... 447
13.2 ... Aufruf von awk-Programmen ... 448
13.2.1 ... Grundlegender Aufbau eines awk-Kommandos ... 448
13.2.2 ... Die Kommandozeilen-Optionen von awk ... 450
13.2.3 ... awk aus der Kommandozeile aufrufen ... 451
13.2.4 ... awk in Shellscripts aufrufen ... 451
13.2.5 ... awk als eigenes Script ausführen ... 452
13.3 ... Grundlegende awk-Programme und -Elemente ... 453
13.3.1 ... Ausgabe von Zeilen und Zeilennummern ... 453
13.3.2 ... Felder ... 455
13.4 ... Muster (bzw. Adressen) von awk-Scripts ... 459
13.4.1 ... Zeichenkettenvergleiche ... 459
13.4.2 ... Vergleichsausdrücke ... 460
13.4.3 ... Reguläre Ausdrücke ... 462
13.4.4 ... Zusammengesetzte Ausdrücke ... 465
13.4.5 ... BEGIN und END ... 465
13.5 ... Die Komponenten von awk-Scripts ... 467
13.5.1 ... Variablen ... 468
13.5.2 ... Arrays ... 473
13.5.3 ... Operatoren ... 476
13.5.4 ... Kontrollstrukturen ... 483
13.6 ... Funktionen ... 488
13.6.1 ... Mathematische Funktionen ... 488
13.6.2 ... Funktionen für Zeichenketten ... 490
13.6.3 ... Funktionen für die Zeit ... 494
13.6.4 ... Systemfunktionen ... 496
13.6.5 ... Ausgabefunktionen ... 497
13.6.6 ... Eingabefunktion ... 497
13.6.7 ... Benutzerdefinierte Funktionen ... 501
13.7 ... Empfehlung ... 503
13.8 ... Aufgaben ... 503
14 ... Linux/UNIX-Kommandoreferenz ... 505
14.1 ... Kurzübersicht ... 506
14.2 ... Dateiorientierte Kommandos ... 515
14.2.1 ... bzcat – Ausgabe von bzip2-komprimierten Dateien ... 515
14.2.2 ... cat – Datei(en) nacheinander ausgeben ... 516
14.2.3 ... chgrp – Gruppe von Dateien oder Verzeichnissen ändern ... 516
14.2.4 ... cksum/md5sum/sum – eine Prüfsumme für eine Datei ermitteln ... 516
14.2.5 ... chmod – Zugriffsrechte von Dateien oder Verzeichnissen ändern ... 518
14.2.6 ... chown – Eigentümer von Dateien oder Verzeichnissen ändern ... 519
14.2.7 ... cmp – Dateien miteinander vergleichen ... 519
14.2.8 ... comm – zwei sortierte Textdateien miteinander vergleichen ... 519
14.2.9 ... cp – Dateien kopieren ... 520
14.2.10 ... csplit – Zerteilen von Dateien (kontextabhängig) ... 521
14.2.11 ... cut – Zeichen oder Felder aus Dateien herausschneiden ... 522
14.2.12 ... diff – Vergleichen zweier Dateien ... 522
14.2.13 ... diff3 – Vergleich von drei Dateien ... 523
14.2.14 ... dos2unix – Dateien vom DOS- in UNIX-Format umwandeln ... 523
14.2.15 ... expand – Tabulatoren in Leerzeichen umwandeln ... 523
14.2.16 ... file – den Inhalt von Dateien analysieren ... 524
14.2.17 ... find – Suchen nach Dateien ... 525
14.2.18 ... fold – einfaches Formatieren von Dateien ... 525
14.2.19 ... head – Anfang einer Datei ausgeben ... 526
14.2.20 ... less – Datei(en) seitenweise ausgeben ... 526
14.2.21 ... ln – Links auf eine Datei erzeugen ... 527
14.2.22 ... ls – Verzeichnisinhalt auflisten ... 527
14.2.23 ... more – Datei(en) seitenweise ausgeben ... 528
14.2.24 ... mv – Datei(en) und Verzeichnisse verschieben oder umbenennen ... 528
14.2.25 ... nl – Datei mit Zeilennummer ausgeben ... 528
14.2.26 ... od – Datei(en) hexadezimal bzw. oktal ausgeben ... 529
14.2.27 ... paste – Dateien spaltenweise verknüpfen ... 529
14.2.28 ... pcat – Ausgabe von pack-komprimierten Dateien ... 529
14.2.29 ... rm – Dateien und Verzeichnisse löschen ... 530
14.2.30 ... sort – Dateien sortieren ... 530
14.2.31 ... split – Dateien in mehrere Teile zerlegen ... 531
14.2.32 ... tac – Dateien rückwärts ausgeben ... 532
14.2.33 ... tail – Ende einer Datei ausgeben ... 532
14.2.34 ... tee – Ausgabe duplizieren ... 533
14.2.35 ... touch – Anlegen von Dateien oder Zeitstempel verändern ... 533
14.2.36 ... tr – Zeichen ersetzen bzw. Umformen von Dateien ... 533
14.2.37 ... type – Kommandos klassifizieren ... 533
14.2.38 ... umask – Dateierstellungsmaske ändern bzw. ausgeben ... 534
14.2.39 ... uniq – doppelte Zeilen nur einmal ausgeben ... 534
14.2.40 ... unix2dos – Dateien vom UNIX- in DOS-Format umwandeln ... 534
14.2.41 ... wc – Zeilen, Wörter und Zeichen einer Datei zählen ... 535
14.2.42 ... whereis – Suche nach Dateien ... 535
14.2.43 ... zcat, zless, zmore – (seitenweise) Ausgabe von gunzip-komprimierten Dateien ... 535
14.3 ... Verzeichnisorientierte Kommandos ... 536
14.3.1 ... basename – gibt den Dateianteil eines Pfadnamens zurück ... 536
14.3.2 ... cd – Verzeichnis wechseln ... 536
14.3.3 ... dircmp – Verzeichnisse rekursiv vergleichen ... 536
14.3.4 ... dirname – Verzeichnisanteil eines Pfadnamens zurückgeben ... 536
14.3.5 ... mkdir – ein Verzeichnis anlegen ... 536
14.3.6 ... pwd – Ausgeben des aktuellen Arbeitsverzeichnisses ... 537
14.3.7 ... rmdir – ein leeres Verzeichnis löschen ... 537
14.4 ... Verwaltung von Benutzern und Gruppen ... 537
14.4.1 ... exit, logout – eine Session (Sitzung) beenden ... 537
14.4.2 ... finger – Informationen zu anderen Benutzern abfragen ... 538
14.4.3 ... groupadd, groupmod, groupdel – Gruppenverwaltung (distributionsabhängig) ... 538
14.4.4 ... groups – Gruppenzugehörigkeit ausgeben ... 538
14.4.5 ... id – eigene Benutzer- und Gruppen-ID ermitteln ... 539
14.4.6 ... last – An- und Abmeldezeit eines Benutzers ermitteln ... 539
14.4.7 ... logname – Name des aktuellen Benutzers anzeigen ... 539
14.4.8 ... newgrp – Gruppenzugehörigkeit kurzzeitig wechseln (betriebssystemspezifisch) ... 539
14.4.9 ... passwd – Passwort ändern bzw. vergeben ... 539
14.4.10 ... useradd/adduser, userdel, usermod – Benutzerverwaltung (distributionsabhängig) ... 540
14.4.11 ... who – eingeloggte Benutzer anzeigen ... 541
14.4.12 ... whoami – Name des aktuellen Benutzers anzeigen ... 541
14.5 ... Programm- und Prozessverwaltung ... 542
14.5.1 ... at – Kommando zu einem bestimmten Zeitpunkt ausführen lassen ... 542
14.5.2 ... batch – Kommando irgendwann später ausführen lassen ... 542
14.5.3 ... bg – einen angehaltenen Prozess im Hintergrund fortsetzen ... 543
14.5.4 ... cron/crontab – Programme in bestimmten Zeitintervallen ausführen lassen ... 543
14.5.5 ... fg – einen angehaltenen Prozess im Vordergrund fortsetzen ... 543
14.5.6 ... jobs – Anzeigen angehaltener bzw. im Hintergrund laufender Prozesse ... 543
14.5.7 ... kill – Signale an Prozesse mit einer Prozessnummer senden ... 543
14.5.8 ... killall – Signale an Prozesse mit einem Prozessnamen senden ... 543
14.5.9 ... nice – Prozesse mit anderer Priorität ausführen lassen ... 544
14.5.10 ... nohup – Prozesse beim Beenden einer Sitzung weiterlaufen lassen ... 544
14.5.11 ... ps – Prozessinformationen anzeigen ... 545
14.5.12 ... pgrep – Prozesse über ihren Namen finden ... 546
14.5.13 ... pstree – Prozesshierarchie in Baumform ausgeben ... 546
14.5.14 ... renice – Priorität laufender Prozesse verändern ... 546
14.5.15 ... sleep – Prozesse suspendieren (schlafen legen) ... 546
14.5.16 ... su – Ändern der Benutzerkennung (ohne Neuanmeldung) ... 547
14.5.17 ... sudo – ein Programm als anderer Benutzer ausführen ... 547
14.5.18 ... time – Zeitmessung für Prozesse ... 548
14.5.19 ... top – Prozesse nach CPU-Auslastung anzeigen (betriebssystemspezifisch) ... 548
14.6 ... Speicherplatzinformationen ... 549
14.6.1 ... df – Abfrage des benötigten Speicherplatzes für die Dateisysteme ... 549
14.6.2 ... du – Größe eines Verzeichnisbaums ermitteln ... 549
14.6.3 ... free – verfügbaren Speicherplatz (RAM und Swap) anzeigen (betriebssystemabhängig) ... 550
14.6.4 ... swap – Swap-Space anzeigen (nicht Linux) ... 550
14.7 ... Dateisystem-Kommandos ... 550
14.7.1 ... badblocks – überprüft, ob ein Datenträger defekte Sektoren hat ... 551
14.7.2 ... cfdisk – Partitionieren von Festplatten ... 551
14.7.3 ... dd – Datenblöcke zwischen Devices (Low Level) kopieren (und konvertieren) ... 552
14.7.4 ... dd_rescue – fehlertolerantes Kopieren von Dateiblöcken ... 554
14.7.5 ... dumpe2fs – zeigt Informationen über ein ext2/ext3-Dateisystem an ... 554
14.7.6 ... e2fsck – repariert ein ext2/ext3-Dateisystem ... 555
14.7.7 ... fdformat – formatiert eine Diskette ... 556
14.7.8 ... fdisk – Partitionieren von Speichermedien ... 556
14.7.9 ... fsck – Reparieren und Überprüfen von Dateisystemen ... 558
14.7.10 ... mkfs – Dateisystem einrichten ... 559
14.7.11 ... mkswap – eine Swap-Partition einrichten ... 559
14.7.12 ... mount, umount – An- bzw. Abhängen eines Dateisystems ... 560
14.7.13 ... parted – Partitionen anlegen, verschieben, vergrößern oder verkleinern ... 561
14.7.14 ... prtvtoc – Partitionstabellen ausgeben ... 561
14.7.15 ... swapon, swapoff – Swap-Datei oder Partition (de)aktivieren ... 561
14.7.16 ... sync – alle gepufferten Schreiboperationen ausführen ... 562
14.8 ... Archivierung und Backup ... 562
14.8.1 ... bzip2/bunzip2 – (De-)Komprimieren von Dateien ... 562
14.8.2 ... compress/uncompress – (De-)Komprimieren von Dateien ... 563
14.8.3 ... cpio, afio – Dateien und Verzeichnisse archivieren ... 563
14.8.4 ... crypt – Dateien verschlüsseln ... 566
14.8.5 ... dump/restore bzw. ufsdump/ufsrestore – Vollsicherung bzw. Wiederherstellen eines Dateisystems ... 567
14.8.6 ... gzip/gunzip – (De-)Komprimieren von Dateien ... 569
14.8.7 ... mt – Streamer steuern ... 570
14.8.8 ... pack/unpack – (De-)Komprimieren von Dateien ... 571
14.8.9 ... tar – Dateien und Verzeichnisse archivieren ... 571
14.8.10 ... zip/unzip – (De-)Komprimieren von Dateien ... 575
14.8.11 ... Übersicht über Dateiendungen und über die Pack-Programme ... 576
14.9 ... Systeminformationen ... 577
14.9.1 ... cal – zeigt einen Kalender an ... 577
14.9.2 ... date – Datum und Uhrzeit ... 578
14.9.3 ... uname – Rechnername, Architektur und OS ausgeben ... 578
14.9.4 ... uptime – Laufzeit des Rechners ... 578
14.10 ... System-Kommandos ... 579
14.10.1 ... dmesg – letzte Boot-Meldung des Kernels anzeigen ... 579
14.10.2 ... halt – alle laufenden Prozesse beenden ... 579
14.10.3 ... reboot – alle laufenden Prozesse beenden und System neu starten ... 579
14.10.4 ... shutdown – System herunterfahren ... 579
14.11 ... Druckeradministration ... 580
14.12 ... Netzwerkbefehle ... 581
14.12.1 ... arp – Ausgeben von MAC-Adressen ... 581
14.12.2 ... ftp – Dateien zu einem anderen Rechner übertragen ... 582
14.12.3 ... hostname – Rechnername ermitteln ... 587
14.12.4 ... ifconfig – Netzwerkzugang konfigurieren ... 587
14.12.5 ... mail/mailx – E-Mails schreiben und empfangen (und auswerten) ... 589
14.12.6 ... uuencode/uudecode – Text- bzw. Binärdateien codieren ... 590
14.12.7 ... netstat – Statusinformationen über das Netzwerk ... 591
14.12.8 ... nslookup (host/dig) – DNS-Server abfragen ... 591
14.12.9 ... ping – die Verbindung zu anderem Rechner testen ... 592
14.12.10 ... Die r-Kommandos von Berkeley (rcp, rlogin, rsh, rwho) ... 593
14.12.11 ... ssh – sichere Shell auf anderem Rechner starten ... 593
14.12.12 ... scp – Dateien kopieren zwischen unterschiedlichen Rechnern ... 594
14.12.13 ... rsync – Replizieren von Dateien und Verzeichnissen ... 596
14.12.14 ... traceroute – Route zu einem Rechner verfolgen ... 598
14.13 ... Benutzerkommunikation ... 598
14.13.1 ... wall – Nachrichten an alle Benutzer verschicken ... 598
14.13.2 ... write – Nachrichten an andere Benutzer verschicken ... 598
14.13.3 ... mesg – Nachrichten auf die Dialogstation zulassen oder unterbinden ... 599
14.14 ... Bildschirm- und Terminalkommandos ... 599
14.14.1 ... clear – Löschen des Bildschirms ... 599
14.14.2 ... reset – Zeichensatz für ein Terminal wiederherstellen ... 600
14.14.3 ... setterm – Terminal-Einstellung verändern ... 600
14.14.4 ... stty – Terminal-Einstellung abfragen oder setzen ... 600
14.14.5 ... tty – Terminal-Name erfragen ... 601
14.14.6 ... tput – Terminal- und Cursorsteuerung ... 602
14.15 ... Online-Hilfen ... 602
14.15.1 ... apropos – nach Schlüsselwörtern in Manpages suchen ... 602
14.15.2 ... info – GNU-Online-Manual ... 602
14.15.3 ... man – die traditionelle Online-Hilfe ... 603
14.15.4 ... whatis – Kurzbeschreibung zu einem Kommando ... 604
14.16 ... Alles rund um PostScript-Kommandos ... 604
14.17 ... Gemischte Kommandos ... 605
14.17.1 ... alias/unalias – Kurznamen für Kommandos vergeben bzw. löschen ... 605
14.17.2 ... bc – Taschenrechner ... 605
14.17.3 ... printenv bzw. env – Umgebungsvariablen anzeigen ... 605
15 ... Die Praxis ... 607
15.1 ... Alltägliche Lösungen ... 608
15.1.1 ... Auf alphabetische und numerische Zeichen prüfen ... 608
15.1.2 ... Auf Integer überprüfen ... 609
15.1.3 ... echo mit oder ohne -n ... 611
15.2 ... Datei-Utilitys ... 612
15.2.1 ... Leerzeichen im Dateinamen ersetzen ... 612
15.2.2 ... Dateiendungen verändern ... 613
15.2.3 ... Veränderte Dateien in zwei Verzeichnissen vergleichen ... 614
15.2.4 ... Dateien in mehreren Verzeichnissen ändern ... 616
15.3 ... Systemadministration ... 625
15.3.1 ... Benutzerverwaltung ... 625
15.3.2 ... Systemüberwachung ... 644
15.4 ... Backup-Strategien ... 650
15.4.1 ... Warum ein Backup? ... 650
15.4.2 ... Sicherungsmedien ... 651
15.4.3 ... Varianten der Sicherungen ... 652
15.4.4 ... Bestimmte Bereiche sichern ... 652
15.4.5 ... Backup über ssh mit tar ... 653
15.4.6 ... Daten mit rsync synchronisieren ... 660
15.4.7 ... Dateien und Verzeichnisse per E-Mail versenden ... 663
15.4.8 ... Startup-Scripts ... 666
15.5 ... Das World Wide Web und HTML ... 672
15.5.1 ... Analysieren von access_log (Apache) ... 673
15.5.2 ... Analysieren von error_log (Apache) ... 677
15.6 ... CGI (Common Gateway Interface) ... 680
15.6.1 ... CGI-Scripts ausführen ... 680
15.6.2 ... CGI-Environment ausgeben ... 682
15.6.3 ... Einfache Ausgabe als Text ... 683
15.6.4 ... Ausgabe als HTML formatieren ... 685
15.6.5 ... Systeminformationen ausgeben ... 688
15.6.6 ... Kontaktformular ... 690
15.6.7 ... Noch ein Tipp ... 694
16 ... GUIs und Grafiken ... 695
16.1 ... dialog und Xdialog ... 695
16.1.1 ... --yesno – Entscheidungsfrage ... 696
16.1.2 ... --msgbox – Nachrichtenbox mit Bestätigung ... 698
16.1.3 ... --infobox – Hinweisfenster ohne Bestätigung ... 699
16.1.4 ... --inputbox – Text-Eingabezeile ... 700
16.1.5 ... --textbox – ein einfacher Dateibetrachter ... 701
16.1.6 ... --menu – ein Menü erstellen ... 702
16.1.7 ... --checklist – Auswahlliste zum Ankreuzen ... 703
16.1.8 ... --radiolist – Radiobuttons zum Auswählen ... 704
16.1.9 ... --gauge – Fortschrittszustand anzeigen ... 705
16.1.10 ... Verändern von Aussehen und Ausgabe ... 707
16.1.11 ... Ein kleines Beispiel ... 707
16.1.12 ... Zusammenfassung ... 709
16.2 ... gnuplot – Visualisierung von Messdaten ... 709
16.2.1 ... Wozu wird gnuplot eingesetzt? ... 710
16.2.2 ... gnuplot starten ... 711
16.2.3 ... Das Kommando zum Plotten ... 711
16.2.4 ... Variablen und Parameter für gnuplot ... 713
16.2.5 ... Ausgabe von gnuplot umleiten ... 715
16.2.6 ... Variablen und eigene Funktionen definieren ... 716
16.2.7 ... Interpretation von Daten aus einer Datei ... 717
16.2.8 ... Alles bitte nochmals zeichnen (oder besser speichern und laden) ... 720
16.2.9 ... gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb) ... 721
16.2.10 ... Plot-Styles und andere Ausgaben festlegen ... 723
16.2.11 ... Tricks für die Achsen ... 729
16.2.12 ... Die dritte Dimension ... 734
16.2.13 ... Zusammenfassung ... 736
16.3 ... Aufgaben ... 736
... Anhang ... 737
A ... Befehle (Übersichtstabellen) ... 737
A.1 ... Shell-Builtin-Befehle ... 737
A.2 ... Externe Kommandos ... 740
A.3 ... Shell-Optionen ... 741
A.4 ... Shell-Variablen ... 743
A.5 ... Kommandozeile editieren ... 751
A.6 ... Wichtige Tastenkürzel (Kontrolltasten) ... 754
A.7 ... Initialisierungsdateien der Shells ... 755
A.8 ... Signale ... 756
A.9 ... Sonderzeichen und Zeichenklassen ... 759
B ... Lösungen der Übungsaufgaben ... 761
B.1 ... Kapitel 1 ... 761
B.2 ... Kapitel 2 ... 761
B.3 ... Kapitel 3 ... 762
B.4 ... Kapitel 4 ... 762
B.5 ... Kapitel 5 ... 765
B.6 ... Kapitel 6 ... 770
B.7 ... Kapitel 7 ... 774
B.8 ... Kapitel 8 ... 775
B.9 ... Kapitel 9 ... 776
B.10 ... Kapitel 11 ... 777
B.11 ... Kapitel 12 ... 777
B.12 ... Kapitel 13 ... 777
B.13 ... Kapitel 16 ... 779
C ... Trivia ... 781
C.1 ... Tastenunterschiede zwischen Mac- und PC-Tastaturen ... 781
C.2 ... Die Buch-CD ... 782
... Index ... 783

»›Shell-Programmierung‹ lässt beim Einstieg in die Materie kaum Wünsche offen.« Ubuntu User

Erscheint lt. Verlag 1.7.2013
Reihe/Serie Galileo Computing
Verlagsort Bonn
Sprache deutsch
Maße 168 x 240 mm
Gewicht 1645 g
Einbandart gebunden
Themenwelt Informatik Betriebssysteme / Server Unix / Linux
Schlagworte Bash • bash scripting • bash Shell • Bourne-Shell • Grep • GUI • Handbuch • Kommandozeile • Korn-Shell • Linux • Linux Programmierung • Linux; Programmierung • SED • Shell Programmierung • Shell Script • Shell Skripte • Übung • UNIX • UNIX-Shell
ISBN-10 3-8362-2310-4 / 3836223104
ISBN-13 978-3-8362-2310-2 / 9783836223102
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
Mehr entdecken
aus dem Bereich
das umfassende Handbuch

von Michael Kofler

Buch | Hardcover (2023)
Rheinwerk (Verlag)
49,90
das umfassende Handbuch

von Dirk Deimeke; Daniel van Soest; Stefan Kania

Buch | Hardcover (2023)
Rheinwerk (Verlag)
69,90