Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
23
Vorwort
25
Vorwort des Gutachters: Die Shell - Fluch oder Segen?
29
1 Einführung
31
1.1 Was sollten Sie als Leser wissen?
31
1.1.1 Zielgruppe
32
1.1.2 Notation
33
1.2 Was ist eine Shell?
34
1.3 Hauptanwendungsgebiet
37
1.3.1 Was ist ein Shellscript?
37
1.3.2 Vergleich mit anderen Sprachen
38
1.4 Kommando, Programm oder Shellscript?
40
1.4.1 Shell-eigene Kommandos (Builtin-Kommandos)
40
1.4.2 Aliasse in der Shell
41
1.4.3 Funktionen in der Shell
41
1.4.4 Shellscripts (Shell-Prozeduren)
41
1.4.5 Programme (binär)
42
1.5 Die Shell-Vielfalt
42
1.5.1 ksh (Korn-Shell)
42
1.5.2 Bash (Bourne-Again-Shell)
43
1.5.3 zsh (Z-Shell)
43
1.5.4 ash (A-Shell)
43
1.5.5 rbash, rzsh (Restricted Shell)
44
1.5.6 tcsh (TC-Shell)
44
1.5.7 Welche Shell-Variante wird in diesem Buch verwendet?
44
1.5.8 rsh (Remote Shell) und ssh (Secure Shell)
46
1.6 Betriebssysteme
47
1.7 Crashkurs: einfacher Umgang mit der Kommandozeile
47
1.7.1 Grundlegende Befehle
48
1.7.2 Der Umgang mit Dateien
49
1.7.3 Der Umgang mit Verzeichnissen
53
1.7.4 Datei- und Verzeichnisnamen
57
1.7.5 Gerätenamen
58
1.7.6 Dateiattribute
58
1.8 Shellscripts schreiben und ausführen
61
1.8.1 Der Editor
61
1.8.2 Der Name des Shellscripts
62
1.8.3 Ausführen
63
1.8.4 Hintergrundprozess starten
66
1.8.5 Ausführende Shell festlegen
66
1.8.6 Kommentare
69
1.8.7 Stil
70
1.8.8 Ein Shellscript beenden
71
1.8.9 Testen und Debuggen von Shellscripts
72
1.8.10 Ein Shellscript, das ein Shellscript erstellt und ausführt
74
1.9 Vom Shellscript zum Prozess
75
1.9.1 Ist das Shellscript ein Prozess?
77
1.9.2 Echte Login-Shell?
78
1.10 Datenstrom
78
1.10.1 Ausgabe umleiten
79
1.10.2 Standardfehlerausgabe umleiten
81
1.10.3 Eingabe umleiten
84
1.10.4 Pipes
87
1.10.5 Ein T-Stück mit tee
89
1.10.6 Ersatzmuster (Wildcards)
91
1.10.7 Brace Extension
96
1.10.8 Muster-Alternativen
97
1.10.9 Tilde-Expansion
97
1.11 Die Z-Shell
99
1.11.1 Nach der Installation
99
1.11.2 Die erste Anmeldung
100
1.11.3 Arbeiten mit der zsh
103
1.11.4 History
105
1.11.5 Interaktive Kommandoexpansion
109
1.12 Empfehlung
109
1.13 Übungen
110
2 Variablen
111
2.1 Grundlagen
111
2.1.1 Zugriff auf den Wert einer Variablen
111
2.1.2 Variablen-Interpolation
112
2.2 Zahlen
117
2.2.1 Integer-Arithmetik auf die alte Art
117
2.2.2 Integer-Arithmetik
119
2.2.3 bc - Rechnen mit Fließkommazahlen und mathematischen Funktionen
124
2.3 Zeichenketten
127
2.3.1 Stringverarbeitung
127
2.3.2 Erweiterte Funktionen für Bash, Korn-Shell und Z-Shell
135
2.4 Quotings und Kommando-Substitution
139
2.4.1 Single und Double Quotings
140
2.4.2 Kommando-Substitution - Back Quotes
142
2.5 Arrays
145
2.5.1 Werte an Arrays zuweisen
146
2.5.2 Eine Liste von Werten an ein Array zuweisen (Bash und Z-Shell)
146
2.5.3 Eine Liste von Werten an ein Array zuweisen (Korn-Shell)
147
2.5.4 Auf die einzelnen Elemente eines Arrays zugreifen
147
2.5.5 Assoziative Arrays
151
2.5.6 Besonderheiten bei Arrays auf der Z-Shell
153
2.6 Variablen exportieren
154
2.7 Umgebungsvariablen eines Prozesses
159
2.8 Shell-Variablen
160
2.9 Automatische Variablen der Shell
166
2.9.1 Der Name des Shellscripts - $0
166
2.9.2 Die Prozessnummer des Shellscripts - $$
167
2.9.3 Der Beendigungsstatus eines Shellscripts - $?
167
2.9.4 Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses - $!
168
2.9.5 Weitere vordefinierte Variablen der Shell
168
2.9.6 Weitere automatische Variablen für Bash, Korn-Shell und Z-Shell
168
2.10 Übungen
171
3 Parameter und Argumente
173
3.1 Einführung
173
3.2 Kommandozeilenparameter $1 bis $9
173
3.3 Besondere Parameter
174
3.3.1 Die Variable $*
175
3.3.2 Die Variable $@
176
3.3.3 Die Variable $#
177
3.4 Der Befehl shift
178
3.5 Argumente und Leerzeichen
180
3.6 Argumente jenseits von $9
180
3.7 Argumente setzen mit set und Kommando-Substitution
182
3.8 getopts - Kommandozeilenoptionen auswerten
186
3.9 Vorgabewerte für Variablen
188
3.10 Aufgaben
192
4 Kontrollstrukturen
193
4.1 Bedingte Anweisung mit if
193
4.1.1 Kommandos testen mit if
195
4.1.2 Kommandoverkettung über Pipes mit if
198
4.2 Die else-Alternative für eine if-Verzweigung
201
4.3 Mehrfache Alternative mit elif
203
4.4 Das Kommando test
206
4.4.1 Ganze Zahlen vergleichen
206
4.4.2 Ganze Zahlen vergleichen mit let
209
4.4.3 Zeichenketten vergleichen
210
4.4.4 Alternative Möglichkeiten des Zeichenkettenvergleichs
215
4.5 Status von Dateien erfragen
217
4.6 Logische Verknüpfung von Ausdrücken
221
4.6.1 Der Negationsoperator !
222
4.6.2 Die UND-Verknüpfung (-a und &&)
223
4.6.3 Die ODER-Verknüpfung (-o und ||)
224
4.6.4 Klammerung und mehrere logische Verknüpfungen
225
4.7 Short Circuit-Tests - ergebnisabhängige Befehlsausführung
227
4.8 Die Anweisung case
230
4.8.1 Alternative Vergleichsmuster
233
4.8.2 case und Wildcards
234
4.8.3 case und Optionen
236
4.8.4 Neuerungen in der Bash 4.x
237
4.9 Schleifen
239
4.9.1 Die for-Schleife
239
4.9.2 Die while-Schleife
249
4.9.3 Die until-Schleife
253
4.10 Kontrollierte Sprünge
256
4.10.1 Der Befehl continue
256
4.10.2 Der Befehl break
258
4.11 Endlosschleifen
260
4.12 Aufgaben
261
5 Terminal-Ein- und -Ausgabe
263
5.1 Von Terminals zu Pseudo-Terminals
263
5.2 Ausgabe
265
5.2.1 Der echo-Befehl
266
5.2.2 print (Korn-Shell und Z-Shell)
271
5.2.3 Der Befehl printf
271
5.2.4 Der Befehl tput - Terminalsteuerung
275
5.3 Eingabe
280
5.3.1 Der Befehl read
280
5.3.2 (Zeilenweises) Lesen einer Datei mit read
282
5.3.3 Zeilenweise mit einer Pipe aus einem Kommando lesen (read)
284
5.3.4 Here-Dokumente (Inline-Eingabeumleitung)
285
5.3.5 Here-Dokumente mit read verwenden
288
5.3.6 Die Variable IFS
289
5.3.7 Arrays einlesen mit read
295
5.3.8 Shell-abhängige Anmerkungen zu read
296
5.3.9 Ein einzelnes Zeichen abfragen
297
5.3.10 Einzelne Zeichen mit Escape-Sequenzen abfragen
298
5.3.11 Passworteingabe
305
5.4 Umlenken mit dem Befehl exec
306
5.5 Filedescriptoren
309
5.5.1 Einen neuen Filedescriptor verwenden
310
5.5.2 Die Umlenkung <>
315
5.6 Named Pipes
316
5.7 Menüs mit select
318
5.8 Aufgaben
323
6 Funktionen
325
6.1 Allgemeine Definition
325
6.1.1 Definition
326
6.1.2 Funktionsaufruf
326
6.1.3 Funktionen exportieren
328
6.1.4 Aufrufreihenfolge
330
6.1.5 Who is who
330
6.1.6 Aufruf selbst bestimmen
331
6.1.7 Funktionen auflisten
332
6.2 Funktionen, die Funktionen aufrufen
332
6.3 Parameterübergabe
334
6.3.1 FUNCNAME (Bash only)
336
6.4 Rückgabewert aus einer Funktion
337
6.4.1 Rückgabewert mit return
337
6.4.2 Rückgabewert mit echo und einer Kommando-Substitution
339
6.4.3 Rückgabewert ohne eine echte Rückgabe (lokale Variable)
341
6.4.4 Funktionen und exit
341
6.5 Lokale contra globale Variablen
342
6.5.1 Lokale Variablen
344
6.6 alias und unalias
346
6.7 Autoload (Korn-Shell und Z-Shell)
349
6.8 Besonderheiten bei der Z-Shell
350
6.8.1 Chpwd
350
6.8.2 Precmd
350
6.8.3 Preexec
350
6.8.4 Zshexit
351
6.9 Aufgaben
351
7 Signale
353
7.1 Grundlagen zu den Signalen
353
7.2 Signale senden - kill
357
7.3 Eine Fallgrube für Signale - trap
358
7.3.1 Einen Signalhandler (Funktion) einrichten
361
7.3.2 Mit Signalen Schleifendurchläufe abbrechen
364
7.3.3 Mit Signalen das Script beenden
365
7.3.4 Das Beenden der Shell (oder eines Scripts) abfangen
365
7.3.5 Signale ignorieren
367
7.3.6 Signale zurücksetzen
367
7.4 Aufgabe
368
8 Rund um die Ausführung von Scripts und Prozessen
371
8.1 Prozessprioritäten
371
8.2 Warten auf andere Prozesse
372
8.3 Hintergrundprozess wieder hervorholen
373
8.4 Hintergrundprozess schützen
374
8.5 Subshells
375
8.6 Mehrere Scripts verbinden und ausführen (Kommunikation zwischen Scripts)
377
8.6.1 Datenübergabe zwischen Scripts
377
8.6.2 Rückgabe von Daten an andere Scripts
379
8.6.3 Scripts synchronisieren
382
8.7 Jobverwaltung
384
8.8 Shellscripts zeitgesteuert ausführen
387
8.9 Startprozess- und Profildaten der Shell
392
8.9.1 Arten von Initialisierungsdateien
393
8.9.2 Ausführen von Profildateien beim Start einer Login-Shell
393
8.9.3 Ausführen von Profildateien beim Start einer Nicht-Login-Shell
396
8.9.4 Zusammenfassung aller Profil- und Startup-Dateien
398
8.10 Ein Shellscript bei der Ausführung
399
8.10.1 Syntaxüberprüfung
399
8.10.2 Expansionen
400
8.10.3 Kommandos
401
8.11 Shellscripts optimieren
401
8.12 Aufgaben
403
9 Nützliche Funktionen
405
9.1 Der Befehl eval
405
9.2 xargs
408
9.3 dirname und basename
410
9.4 umask
411
9.5 ulimit (Builtin)
412
9.6 time
414
9.7 typeset
415
9.8 Aufgabe
416
10 Fehlersuche und Debugging
417
10.1 Strategien zum Vermeiden von Fehlern
417
10.1.1 Planen Sie Ihr Script
417
10.1.2 Testsystem bereitstellen
418
10.1.3 Ordnung ist das halbe Leben
418
10.2 Fehlerarten
421
10.3 Fehlersuche
422
10.3.1 Tracen mit set -x
422
10.3.2 Das DEBUG- und das ERR-Signal
425
10.3.3 Variablen und Syntax überprüfen
429
10.3.4 Eine Debug-Ausgabe hinzufügen
430
10.3.5 Debugging-Tools
430
11 Reguläre Ausdrücke und grep
431
11.1 Reguläre Ausdrücke - die Theorie
431
11.1.1 Elemente für reguläre Ausdrücke (POSIX-RE)
432
11.1.2 Zusammenfassung
435
11.2 grep
435
11.2.1 Wie arbeitet grep?
436
11.2.2 grep mit regulären Ausdrücken
437
11.2.3 grep mit Pipes
442
11.2.4 grep mit Optionen
443
11.2.5 egrep (extended grep)
446
11.2.6 fgrep (fixed oder fast grep)
447
11.2.7 rgrep
447
11.3 Aufgaben
448
12 Der Stream-Editor sed
449
12.1 Funktions- und Anwendungsweise von sed
449
12.1.1 Grundlegende Funktionsweise
449
12.1.2 Wohin mit der Ausgabe?
451
12.2 Der sed-Befehl
453
12.3 Adressen
453
12.4 Kommandos, Substitutionsflags und Optionen von sed
455
12.4.1 Das a-Kommando - Zeile(n) anfügen
459
12.4.2 Das c-Kommando - Zeilen ersetzen
460
12.4.3 Das d-Kommando - Zeilen löschen
461
12.4.4 Die Kommandos h, H, g, G und x - Arbeiten mit den Puffern
461
12.4.5 Das Kommando i - Einfügen von Zeilen
463
12.4.6 Das p-Kommando - Patternspace ausgeben
463
12.4.7 Das Kommando q - Beenden
464
12.4.8 Die Kommandos r und w
465
12.4.9 Das Kommando s - substitute
466
12.4.10 Das Kommando y
471
12.5 sed-Scripts
471
12.6 Aufgaben
474
13 awk-Programmierung
475
13.1 Einführung und Grundlagen von awk
475
13.1.1 History und Versionen von awk
476
13.1.2 Die Funktionsweise von awk
477
13.2 Aufruf von awk-Programmen
478
13.2.1 Grundlegender Aufbau eines awk-Kommandos
478
13.2.2 Die Kommandozeilen-Optionen von awk
480
13.2.3 awk aus der Kommandozeile aufrufen
481
13.2.4 awk in Shellscripts aufrufen
481
13.2.5 awk als eigenes Script ausführen
482
13.3 Grundlegende awk-Programme und -Elemente
483
13.3.1 Ausgabe von Zeilen und Zeilennummern
483
13.3.2 Felder
485
13.4 Muster (bzw. Adressen) von awk-Scripts
489
13.4.1 Zeichenkettenvergleiche
490
13.4.2 Vergleichsausdrücke
490
13.4.3 Reguläre Ausdrücke
493
13.4.4 Zusammengesetzte Ausdrücke
495
13.4.5 BEGIN und END
496
13.5 Die Komponenten von awk-Scripts
497
13.5.1 Variablen
498
13.5.2 Arrays
503
13.5.3 Operatoren
506
13.5.4 Kontrollstrukturen
513
13.6 Funktionen
518
13.6.1 Mathematische Funktionen
518
13.6.2 Funktionen für Zeichenketten
520
13.6.3 Funktionen für die Zeit
524
13.6.4 Systemfunktionen
526
13.6.5 Ausgabefunktionen
527
13.6.6 Eingabefunktion
527
13.6.7 Benutzerdefinierte Funktionen
531
13.7 Empfehlung
533
13.8 Aufgaben
533
14 Linux/UNIX-Kommandoreferenz
535
14.1 Kurzübersicht
536
14.2 Dateiorientierte Kommandos
545
14.2.1 bzcat - Ausgabe von bzip2-komprimierten Dateien
545
14.2.2 cat - Datei(en) nacheinander ausgeben
545
14.2.3 chgrp - Gruppe von Dateien oder Verzeichnissen ändern
546
14.2.4 cksum/md5sum/sum - eine Prüfsumme für eine Datei ermitteln
546
14.2.5 chmod - Zugriffsrechte von Dateien oder Verzeichnissen ändern
547
14.2.6 chown - Eigentümer von Dateien oder Verzeichnissen ändern
548
14.2.7 cmp - Dateien miteinander vergleichen
548
14.2.8 comm - zwei sortierte Textdateien miteinander vergleichen
549
14.2.9 cp - Dateien kopieren
550
14.2.10 csplit - Zerteilen von Dateien (kontextabhängig)
550
14.2.11 cut - Zeichen oder Felder aus Dateien herausschneiden
551
14.2.12 diff - Vergleichen zweier Dateien
551
14.2.13 diff3 - Vergleich von drei Dateien
552
14.2.14 dos2unix - Dateien vom DOS- ins UNIX-Format umwandeln
552
14.2.15 expand - Tabulatoren in Leerzeichen umwandeln
553
14.2.16 file - den Inhalt von Dateien analysieren
553
14.2.17 find - Suchen nach Dateien
554
14.2.18 fold - einfaches Formatieren von Dateien
555
14.2.19 head - Anfang einer Datei ausgeben
556
14.2.20 less - Datei(en) seitenweise ausgeben
556
14.2.21 ln - Links auf eine Datei erzeugen
556
14.2.22 ls - Verzeichnisinhalt auflisten
557
14.2.23 more - Datei(en) seitenweise ausgeben
557
14.2.24 mv - Datei(en) und Verzeichnisse verschieben oder umbenennen
557
14.2.25 nl - Datei mit Zeilennummer ausgeben
557
14.2.26 od - Datei(en) hexadezimal bzw. oktal ausgeben
558
14.2.27 paste - Dateien spaltenweise verknüpfen
558
14.2.28 pcat - Ausgabe von pack-komprimierten Dateien
559
14.2.29 rm - Dateien und Verzeichnisse löschen
559
14.2.30 sort - Dateien sortieren
559
14.2.31 split - Dateien in mehrere Teile zerlegen
560
14.2.32 tac - Dateien rückwärts ausgeben
561
14.2.33 tail - Das Ende einer Datei ausgeben
561
14.2.34 tee - Ausgabe duplizieren
562
14.2.35 touch - Dateien anlegen oder Zeitstempel verändern
562
14.2.36 tr - Zeichen ersetzen bzw. Dateien umformen
562
14.2.37 type - Kommandos klassifizieren
562
14.2.38 umask - Dateierstellungsmaske ändern bzw. ausgeben
563
14.2.39 uniq - doppelte Zeilen nur einmal ausgeben
563
14.2.40 unix2dos - Dateien vom UNIX- ins DOS-Format umwandeln
563
14.2.41 uuencode/uudecode - Text- bzw. Binärdateien codieren
563
14.2.42 wc - Zeilen, Wörter und Zeichen einer Datei zählen
564
14.2.43 whereis - Suche nach Dateien
564
14.2.44 zcat, zless, zmore - (seitenweise) Ausgabe von gunzip-komprimierten Dateien
565
14.3 Verzeichnisorientierte Kommandos
565
14.3.1 basename - gibt den Dateianteil eines Pfadnamens zurück
565
14.3.2 cd - Verzeichnis wechseln
565
14.3.3 dircmp - Verzeichnisse rekursiv vergleichen
565
14.3.4 dirname - Verzeichnisanteil eines Pfadnamens zurückgeben
566
14.3.5 mkdir - ein Verzeichnis anlegen
566
14.3.6 pwd - Ausgeben des aktuellen Arbeitsverzeichnisses
566
14.3.7 rmdir - ein leeres Verzeichnis löschen
566
14.4 Verwaltung von Benutzern und Gruppen
567
14.4.1 exit, logout - eine Session (Sitzung) beenden
567
14.4.2 finger - Informationen zu anderen Benutzern abfragen
567
14.4.3 groupadd, groupmod, groupdel - Gruppenverwaltung (distributionsabhängig)
567
14.4.4 groups - Gruppenzugehörigkeit ausgeben
568
14.4.5 id - eigene Benutzer- und Gruppen-ID ermitteln
568
14.4.6 last - An- und Abmeldezeit eines Benutzers ermitteln
568
14.4.7 logname - Name des aktuellen Benutzers anzeigen
568
14.4.8 newgrp - Gruppenzugehörigkeit kurzzeitig wechseln (betriebssystemspezifisch)
569
14.4.9 passwd - Passwort ändern bzw. vergeben
569
14.4.10 useradd/adduser, userdel, usermod - Benutzerverwaltung (distributionsabhängig)
570
14.4.11 who - eingeloggte Benutzer anzeigen
570
14.4.12 whoami - Name des aktuellen Benutzers anzeigen
570
14.5 Programm- und Prozessverwaltung
571
14.5.1 at - Kommando zu einem bestimmten Zeitpunkt ausführen lassen
571
14.5.2 batch - Kommando irgendwann später ausführen lassen
571
14.5.3 bg - einen angehaltenen Prozess im Hintergrund fortsetzen
572
14.5.4 cron/crontab - Programme in bestimmten Zeitintervallen ausführen lassen
572
14.5.5 fg - einen angehaltenen Prozess im Vordergrund fortsetzen
572
14.5.6 jobs - Anzeigen angehaltener bzw. im Hintergrund laufender Prozesse
572
14.5.7 kill - Signale an Prozesse mit einer Prozessnummer senden
572
14.5.8 killall - Signale an Prozesse mit einem Prozessnamen senden
573
14.5.9 nice - Prozesse mit anderer Priorität ausführen lassen
573
14.5.10 nohup - Prozesse beim Beenden einer Sitzung weiterlaufen lassen
573
14.5.11 ps - Prozessinformationen anzeigen
574
14.5.12 pgrep - Prozesse über ihren Namen finden
575
14.5.13 pstree - Prozesshierarchie in Baumform ausgeben
575
14.5.14 renice - Priorität laufender Prozesse verändern
575
14.5.15 sleep - Prozesse suspendieren (schlafen legen)
575
14.5.16 su - Ändern der Benutzerkennung (ohne Neuanmeldung)
576
14.5.17 sudo - ein Programm als anderer Benutzer ausführen
576
14.5.18 time - Zeitmessung für Prozesse
577
14.5.19 top - Prozesse nach CPU-Auslastung anzeigen (betriebssystemspezifisch)
577
14.6 Speicherplatzinformationen
578
14.6.1 df - Abfrage des benötigten Speicherplatzes für die Dateisysteme
578
14.6.2 du - Größe eines Verzeichnisbaums ermitteln
578
14.6.3 free - verfügbaren Speicherplatz (RAM und Swap) anzeigen (betriebssystemabhängig)
579
14.6.4 swap - Swap-Space anzeigen (nicht Linux)
579
14.7 Dateisystem-Kommandos
579
14.7.1 badblocks - überprüft, ob ein Datenträger defekte Sektoren hat
579
14.7.2 cfdisk - Festplatten partitionieren
580
14.7.3 dd - Datenblöcke zwischen Devices (Low Level) kopieren (und konvertieren)
580
14.7.4 dd_rescue - fehlertolerantes Kopieren von Dateiblöcken
583
14.7.5 dumpe2fs - zeigt Informationen über ein ext2/ext3-Dateisystem an
583
14.7.6 e2fsck - repariert ein ext2/ext3-Dateisystem
583
14.7.7 fdformat - formatiert eine Diskette
585
14.7.8 fdisk - Partitionieren von Speichermedien
585
14.7.9 fsck - Reparieren und Überprüfen von Dateisystemen
586
14.7.10 mkfs - Dateisystem einrichten
587
14.7.11 mkswap - eine Swap-Partition einrichten
588
14.7.12 mount, umount - An- bzw. Abhängen eines Dateisystems
589
14.7.13 parted - Partitionen anlegen, verschieben, vergrößern oder verkleinern
590
14.7.14 prtvtoc - Partitionstabellen ausgeben
590
14.7.15 swapon, swapoff - Swap-Datei oder Partition (de)aktivieren
590
14.7.16 sync - alle gepufferten Schreiboperationen ausführen
590
14.8 Archivierung und Backup
591
14.8.1 bzip2/bunzip2 - (De-)Komprimieren von Dateien
591
14.8.2 compress/uncompress - (De-)Komprimieren von Dateien
591
14.8.3 cpio, afio - Dateien und Verzeichnisse archivieren
592
14.8.4 crypt - Dateien verschlüsseln
594
14.8.5 dump/restore bzw. ufsdump/ufsrestore - Vollsicherung bzw. Wiederherstellen eines Dateisystems
595
14.8.6 gzip/gunzip - (De-)Komprimieren von Dateien
597
14.8.7 mt - Streamer steuern
598
14.8.8 pack/unpack - (De-)Komprimieren von Dateien
599
14.8.9 tar - Dateien und Verzeichnisse archivieren
599
14.8.10 zip/unzip - (De-)Komprimieren von Dateien
604
14.8.11 Übersicht über Dateiendungen und über die Pack-Programme
604
14.9 Systeminformationen
605
14.9.1 cal - zeigt einen Kalender an
605
14.9.2 date - Datum und Uhrzeit
606
14.9.3 uname - Rechnername, Architektur und OS ausgeben
606
14.9.4 uptime - Laufzeit des Rechners
607
14.10 System-Kommandos
607
14.10.1 dmesg - letzte Boot-Meldung des Kernels anzeigen
607
14.10.2 halt - alle laufenden Prozesse beenden
607
14.10.3 reboot - alle laufenden Prozesse beenden und System neu starten
607
14.10.4 shutdown - System herunterfahren
607
14.11 Druckeradministration
609
14.12 Netzwerkbefehle
609
14.12.1 arp - Ausgeben von MAC-Adressen
610
14.12.2 ftp - Dateien zu einem anderen Rechner übertragen
610
14.12.3 hostname - Rechnername ermitteln
615
14.12.4 ifconfig - Netzwerkzugang konfigurieren
615
14.12.5 mail/mailx - E-Mails schreiben und empfangen (und auswerten)
617
14.12.6 netstat - Statusinformationen über das Netzwerk
618
14.12.7 nslookup (host/dig) - DNS-Server abfragen
619
14.12.8 ping - die Verbindung zu einem anderen Rechner testen
619
14.12.9 Die r-Kommandos von Berkeley (rcp, rlogin, rsh, rwho)
620
14.12.10 ssh - sichere Shell auf anderem Rechner starten
621
14.12.11 scp - Dateien zwischen unterschiedlichen Rechnern kopieren
622
14.12.12 rsync - Replizieren von Dateien und Verzeichnissen
623
14.12.13 traceroute - Route zu einem Rechner verfolgen
625
14.13 Benutzerkommunikation
626
14.13.1 wall - Nachrichten an alle Benutzer verschicken
626
14.13.2 write - Nachrichten an andere Benutzer verschicken
626
14.13.3 mesg - Nachrichten auf die Dialogstation zulassen oder unterbinden
626
14.14 Bildschirm- und Terminalkommandos
627
14.14.1 clear - Löschen des Bildschirms
627
14.14.2 reset - Zeichensatz für ein Terminal wiederherstellen
627
14.14.3 setterm - Terminal-Einstellung verändern
627
14.14.4 stty - Terminal-Einstellung abfragen oder setzen
628
14.14.5 tty - Terminal-Name erfragen
629
14.14.6 tput - Terminal- und Cursorsteuerung
629
14.15 Online-Hilfen
629
14.15.1 apropos - nach Schlüsselwörtern in Manpages suchen
629
14.15.2 info - GNU-Online-Manual
630
14.15.3 man - die traditionelle Online-Hilfe
630
14.15.4 whatis - Kurzbeschreibung zu einem Kommando
631
14.16 Alles rund um PostScript-Kommandos
631
14.17 Gemischte Kommandos
632
14.17.1 alias/unalias - Kurznamen für Kommandos vergeben bzw. löschen
632
14.17.2 bc - Taschenrechner
632
14.17.3 printenv bzw. env - Umgebungsvariablen anzeigen
632
15 Die Praxis
633
15.1 Alltägliche Lösungen
634
15.1.1 Auf alphabetische und numerische Zeichen prüfen
634
15.1.2 Auf Integer überprüfen
635
15.1.3 echo mit oder ohne -n
637
15.2 Datei-Utilitys
638
15.2.1 Leerzeichen im Dateinamen ersetzen
638
15.2.2 Dateiendungen verändern
639
15.2.3 Veränderte Dateien in zwei Verzeichnissen vergleichen
641
15.2.4 Dateien in mehreren Verzeichnissen ändern
642
15.3 Systemadministration
651
15.3.1 Benutzerverwaltung
652
15.3.2 Systemüberwachung
670
15.4 Backup-Strategien
676
15.4.1 Warum ein Backup?
676
15.4.2 Sicherungsmedien
677
15.4.3 Varianten der Sicherungen
677
15.4.4 Bestimmte Bereiche sichern
678
15.4.5 Backup über ssh mit tar
679
15.4.6 Daten mit rsync synchronisieren
685
15.4.7 Dateien und Verzeichnisse per E-Mail versenden
689
15.4.8 Startup-Scripts
692
15.5 Das World Wide Web und HTML
698
15.5.1 Analysieren von access_log (Apache)
699
15.5.2 Analysieren von error_log (Apache)
703
15.6 CGI (Common Gateway Interface)
705
15.6.1 CGI-Scripts ausführen
706
15.6.2 CGI-Environment ausgeben
707
15.6.3 Einfache Ausgabe als Text
708
15.6.4 Ausgabe als HTML formatieren
711
15.6.5 Systeminformationen ausgeben
713
15.6.6 Kontaktformular
716
16 GUIs und Grafiken
721
16.1 dialog, Zenity und YAD
721
16.2 Alles zu dialog
722
16.2.1 –yesno - Entscheidungsfrage
722
16.2.2 –msgbox - Nachrichtenbox mit Bestätigung
723
16.2.3 –infobox - Hinweisfenster ohne Bestätigung
725
16.2.4 –inputbox - Text-Eingabezeile
725
16.2.5 –textbox - ein einfacher Dateibetrachter
726
16.2.6 –menu - ein Menü erstellen
727
16.2.7 –checklist - Auswahlliste zum Ankreuzen
728
16.2.8 –radiolist - Radiobuttons zum Auswählen
730
16.2.9 –gauge - Fortschrittszustand anzeigen
731
16.2.10 Verändern von Aussehen und Ausgabe
732
16.2.11 Ein kleines Beispiel
732
16.2.12 Zusammenfassung
734
16.3 Zenity
734
16.3.1 Beispiele zu Zenity
734
16.4 YAD
739
16.4.1 Beispiele zu YAD
739
16.5 gnuplot - Visualisierung von Messdaten
747
16.5.1 Wozu wird gnuplot eingesetzt?
748
16.5.2 gnuplot starten
749
16.5.3 Das Kommando zum Plotten
749
16.5.4 Variablen und Parameter für gnuplot
751
16.5.5 Ausgabe von gnuplot umleiten
752
16.5.6 Variablen und eigene Funktionen definieren
754
16.5.7 Interpretation von Daten aus einer Datei
755
16.5.8 Alles bitte nochmals zeichnen (oder besser speichern und laden)
757
16.5.9 gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb)
758
16.5.10 Plot-Styles und andere Ausgaben festlegen
760
16.5.11 Tricks für die Achsen
766
16.5.12 Die dritte Dimension
771
16.5.13 Zusammenfassung
773
16.6 Aufgaben
773
Anahng
775
A Befehle (Übersichtstabellen)
777
A.1 Shell-Builtin-Befehle
777
A.2 Externe Kommandos
780
A.3 Shell-Optionen
781
A.4 Shell-Variablen
783
A.5 Kommandozeile editieren
790
A.6 Wichtige Tastenkürzel (Kontrolltasten)
792
A.7 Initialisierungsdateien der Shells
793
A.8 Signale
794
A.9 Sonderzeichen und Zeichenklassen
797
B Lösungen der Übungsaufgaben
799
B.1 Kapitel 1
799
B.2 Kapitel 2
799
B.3 Kapitel 3
800
B.4 Kapitel 4
801
B.5 Kapitel 5
803
B.6 Kapitel 6
808
B.7 Kapitel 7
812
B.8 Kapitel 8
814
B.9 Kapitel 9
814
B.10 Kapitel 11
815
B.11 Kapitel 12
816
B.12 Kapitel 13
816
B.13 Kapitel 16
817
C Trivia
819
C.1 Tastenunterschiede zwischen Mac- und PC-Tastaturen
819
C.2 Zusatzmaterial
820
Index
821