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 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
39
1.4 Kommando, Programm oder Shellscript?
40
1.4.1 Shell-eigene Kommandos (Builtin-Kommandos)
41
1.4.2 Aliasse in der Shell
41
1.4.3 Funktionen in der Shell
42
1.4.4 Shellscripts (Shell-Prozeduren)
42
1.4.5 Programme (binär)
42
1.4.6 History
42
1.5 Die Shell-Vielfalt
43
1.5.1 ksh (Korn-Shell)
43
1.5.2 Bash (Bourne-Again-Shell)
43
1.5.3 zsh (Z-Shell)
44
1.5.4 ash (A-Shell)
44
1.5.5 rbash, rzsh (Restricted Shell)
44
1.5.6 tcsh (TC-Shell)
45
1.5.7 Welche Shell-Variante wird in diesem Buch verwendet?
45
1.5.8 Welche Shell steht zur Verfügung?
45
1.5.9 rsh (Remote Shell) und ssh (Secure Shell)
48
1.6 Betriebssysteme
48
1.7 Crashkurs: einfacher Umgang mit der Kommandozeile
49
1.7.1 Grundlegende Befehle
49
1.7.2 Der Umgang mit Dateien
51
1.7.3 Der Umgang mit Verzeichnissen
54
1.7.4 Datei- und Verzeichnisnamen
59
1.7.5 Gerätenamen
60
1.7.6 Dateiattribute
60
1.8 Shellscripts schreiben und ausführen
63
1.8.1 Der Editor
63
1.8.2 Entwicklungswerkzeuge
64
1.8.3 Der Name des Shellscripts
69
1.8.4 Ausführen
70
1.8.5 Hintergrundprozess starten
73
1.8.6 Ausführende Shell festlegen
74
1.8.7 Kommentare
77
1.8.8 Stil
77
1.8.9 Ein Shellscript beenden
78
1.8.10 Testen und Debuggen von Shellscripts
80
1.8.11 Ein Shellscript, das ein Shellscript erstellt und ausführt
81
1.9 Vom Shellscript zum Prozess
83
1.9.1 Ist das Shellscript ein Prozess?
84
1.9.2 Echte Login-Shell?
85
1.10 Datenstrom
86
1.10.1 Ausgabe umleiten
87
1.10.2 Standardfehlerausgabe umleiten
88
1.10.3 Eingabe umleiten
91
1.10.4 Pipes
94
1.10.5 Ein T-Stück mit tee
95
1.10.6 Ersatzmuster (Wildcards)
97
1.10.7 Brace Extension
102
1.10.8 Musteralternativen
103
1.10.9 Tilde-Expansion
104
1.11 Die Z-Shell
105
1.11.1 Nach der Installation
105
1.11.2 Die erste Anmeldung
106
1.11.3 Arbeiten mit der zsh
110
1.11.4 History
112
1.11.5 Interaktive Kommando-Expansion
116
1.11.6 Befehle wiederholt ausführen
116
1.12 Empfehlung
117
1.13 Übungen
117
2 Variablen
119
2.1 Grundlagen
119
2.1.1 Zugriff auf den Wert einer Variablen
119
2.1.2 Variablen-Interpolation
120
2.1.3 Neue Variablen in der Bash 5.0
125
2.2 Zahlen
125
2.2.1 Integer-Arithmetik auf die alte Art
126
2.2.2 Integer-Arithmetik
128
2.2.3 bc – Rechnen mit Fließkommazahlen und mathematischen Funktionen
133
2.3 Zeichenketten
136
2.3.1 Stringverarbeitung
136
2.3.2 Erweiterte Funktionen für Bash, Korn-Shell und Z-Shell
143
2.4 Quotings und Kommando-Substitution
148
2.4.1 Single und Double Quotings
148
2.4.2 Kommando-Substitution – Back Quotes
151
2.5 Arrays
154
2.5.1 Werte an Arrays zuweisen
154
2.5.2 Eine Liste von Werten an ein Array zuweisen (Bash und Z-Shell)
155
2.5.3 Eine Liste von Werten an ein Array zuweisen (Korn-Shell)
156
2.5.4 Auf die einzelnen Elemente eines Arrays zugreifen
156
2.5.5 Assoziative Arrays
160
2.5.6 Besonderheiten bei Arrays auf der Z-Shell
162
2.6 Variablen exportieren
163
2.7 Umgebungsvariablen eines Prozesses
168
2.8 Shell-Variablen
169
2.9 Automatische Variablen der Shell
175
2.9.1 Der Name des Shellscripts – $0
175
2.9.2 Die Prozessnummer des Shellscripts – $$
176
2.9.3 Der Beendigungsstatus eines Shellscripts – $?
177
2.9.4 Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses – $!
177
2.9.5 Weitere vordefinierte Variablen der Shell
177
2.9.6 Weitere automatische Variablen für Bash, Korn-Shell und Z-Shell
178
2.10 Übungen
180
3 Parameter und Argumente
183
3.1 Einführung
183
3.2 Kommandozeilenparameter $1 bis $9
183
3.3 Besondere Parameter
184
3.3.1 Die Variable $*
185
3.3.2 Die Variable $@
186
3.3.3 Die Variable $#
187
3.4 Der Befehl shift
188
3.5 Argumente und Leerzeichen
190
3.6 Argumente jenseits von $9
190
3.7 Argumente setzen mit set und Kommando-Substitution
192
3.8 getopts – Kommandozeilenoptionen auswerten
196
3.9 Vorgabewerte für Variablen (Parameter-Expansion)
198
3.10 Substring-Expansion
202
3.11 Aufgaben
202
4 Kontrollstrukturen
203
4.1 Bedingte Anweisung mit if
203
4.1.1 Kommandos testen mit if
205
4.1.2 Kommandoverkettung über Pipes mit if
208
4.2 Die else-Alternative für eine if-Verzweigung
212
4.3 Mehrfache Alternative mit elif
214
4.4 Das Kommando test
216
4.4.1 Ganze Zahlen vergleichen
217
4.4.2 Ganze Zahlen vergleichen mit let
219
4.4.3 Zeichenketten vergleichen
220
4.4.4 Alternative Möglichkeiten des Zeichenkettenvergleichs
225
4.5 Status von Dateien erfragen
228
4.6 Logische Verknüpfung von Ausdrücken
232
4.6.1 Der Negationsoperator !
232
4.6.2 Die UND-Verknüpfung (-a und &&)
233
4.6.3 Die ODER-Verknüpfung (-o und ||)
235
4.6.4 Klammerung und mehrere logische Verknüpfungen
236
4.7 Short-Circuit-Tests – ergebnisabhängige Befehlsausführung
237
4.8 Die Anweisung case
241
4.8.1 Alternative Vergleichsmuster
243
4.8.2 case und Wildcards
245
4.8.3 case und Optionen
246
4.8.4 Neuerungen in der Bash 4.x
247
4.9 Schleifen
249
4.9.1 Die for-Schleife
250
4.9.2 Die while-Schleife
260
4.9.3 Die until-Schleife
264
4.10 Kontrollierte Sprünge
266
4.10.1 Der Befehl continue
267
4.10.2 Der Befehl break
268
4.11 Endlosschleifen
270
4.12 Aufgaben
272
5 Terminal-Ein- und -Ausgabe
273
5.1 Von Terminals zu Pseudo-Terminals
273
5.1.1 Terminalprogramme
276
5.2 Ausgabe
276
5.2.1 Der echo-Befehl
276
5.2.2 print (Korn-Shell und Z-Shell)
282
5.2.3 Der Befehl printf
282
5.2.4 Der Befehl tput – Terminalsteuerung
285
5.3 Eingabe
291
5.3.1 Der Befehl read
291
5.3.2 (Zeilenweises) Lesen einer Datei mit read
293
5.3.3 Zeilenweise mit einer Pipe aus einem Kommando lesen (read)
295
5.3.4 Here-Dokumente (Inline-Eingabeumleitung)
296
5.3.5 Here-Dokumente mit read verwenden
299
5.3.6 Die Variable IFS
300
5.3.7 Arrays einlesen mit read
306
5.3.8 Shell-abhängige Anmerkungen zu read
307
5.3.9 Ein einzelnes Zeichen abfragen
308
5.3.10 Einzelne Zeichen mit Escape-Sequenzen abfragen
310
5.3.11 Passworteingabe
316
5.4 Umlenken mit dem Befehl exec
317
5.5 Filedescriptoren
320
5.5.1 Einen neuen Filedescriptor verwenden
321
5.5.2 Die Umlenkung <>
326
5.6 Named Pipes
327
5.7 Menüs mit select
329
5.8 Aufgaben
334
6 Funktionen
337
6.1 Allgemeine Definition
337
6.1.1 Definition
338
6.1.2 Funktionsaufruf
338
6.1.3 Funktionen exportieren
340
6.1.4 Aufrufreihenfolge
342
6.1.5 Who is who
342
6.1.6 Aufruf selbst bestimmen
343
6.1.7 Funktionen auflisten
344
6.2 Funktionen, die Funktionen aufrufen
344
6.3 Parameterübergabe
347
6.3.1 FUNCNAME (Bash only)
350
6.4 Rückgabewert aus einer Funktion
350
6.4.1 Rückgabewert mit return
351
6.4.2 Rückgabewert mit echo und einer Kommando-Substitution
352
6.4.3 Rückgabewert ohne eine echte Rückgabe (lokale Variable)
354
6.4.4 Funktionen und exit
355
6.5 Lokale kontra globale Variablen
355
6.5.1 Lokale Variablen
357
6.6 alias und unalias
359
6.7 Autoload (Korn-Shell und Z-Shell)
362
6.8 Besonderheiten bei der Z-Shell
363
6.8.1 Chpwd
363
6.8.2 Precmd
363
6.8.3 Preexec
363
6.8.4 Zshexit
364
6.9 Aufgaben
364
7 Signale
365
7.1 Grundlagen zu den Signalen
365
7.2 Signale senden – kill
370
7.3 Eine Fallgrube für Signale – trap
371
7.3.1 Einen Signalhandler (Funktion) einrichten
374
7.3.2 Mit Signalen Schleifendurchläufe abbrechen
377
7.3.3 Mit Signalen das Script beenden
377
7.3.4 Das Beenden der Shell (oder eines Scripts) abfangen
378
7.3.5 Signale ignorieren
379
7.3.6 Signale zurücksetzen
380
7.4 Aufgabe
381
8 Rund um die Ausführung von Scripts und Prozessen
383
8.1 Prozessprioritäten
383
8.2 Warten auf andere Prozesse
384
8.3 Hintergrundprozess wieder hervorholen
385
8.4 Hintergrundprozess schützen
386
8.5 Subshells
387
8.6 Mehrere Scripts verbinden und ausführen (Kommunikation zwischen Scripts)
389
8.6.1 Datenübergabe zwischen Scripts
389
8.6.2 Rückgabe von Daten an andere Scripts
391
8.6.3 Scripts synchronisieren
394
8.7 Jobverwaltung
396
8.8 Shellscripts zeitgesteuert ausführen
399
8.8.1 cron
399
8.8.2 anacron
404
8.9 Startprozess- und Profildaten der Shell
404
8.9.1 Arten von Initialisierungsdateien
405
8.9.2 Ausführen von Profildateien beim Start einer Login-Shell
405
8.9.3 Ausführen von Profildateien beim Start einer Nicht-Login-Shell
409
8.9.4 Zusammenfassung aller Profil- und Startup-Dateien
410
8.10 Ein Shellscript bei der Ausführung
411
8.10.1 Syntaxüberprüfung
412
8.10.2 Expansionen
413
8.10.3 Kommandos
413
8.11 Shellscripts optimieren
413
8.12 Aufgaben
415
9 Nützliche Funktionen
417
9.1 Der Befehl eval
417
9.2 xargs
420
9.3 dirname und basename
422
9.4 umask
423
9.5 ulimit (Builtin)
424
9.6 time
426
9.7 typeset
427
9.8 Aufgabe
428
10 Fehlersuche und Debugging
429
10.1 Strategien zum Vermeiden von Fehlern
429
10.1.1 Planen Sie Ihr Script
429
10.1.2 Testsystem bereitstellen
430
10.1.3 Ordnung ist das halbe Leben
431
10.2 Fehlerarten
433
10.3 Fehlersuche
434
10.3.1 Tracen mit set -x
435
10.3.2 Das DEBUG- und das ERR-Signal
437
10.3.3 Variablen und Syntax überprüfen
441
10.3.4 Eine Debug-Ausgabe hinzufügen
442
10.3.5 Debugging-Tools
443
10.4 Fehlerbehandlung
443
11 Reguläre Ausdrücke und grep
445
11.1 Reguläre Ausdrücke – die Theorie
445
11.1.1 Elemente für reguläre Ausdrücke (POSIX-RE)
446
11.1.2 Zusammenfassung
449
11.2 grep
449
11.2.1 Wie arbeitet grep?
450
11.2.2 grep mit regulären Ausdrücken
451
11.2.3 grep mit Pipes
457
11.2.4 grep mit Optionen
458
11.2.5 grep in Kombination mit anderen Programmen
460
11.2.6 egrep (extended grep)
461
11.2.7 fgrep (fixed oder fast grep)
462
11.2.8 rgrep
462
11.3 Aufgaben
462
12 Der Stream-Editor sed
463
12.1 Funktions- und Anwendungsweise von sed
463
12.1.1 Grundlegende Funktionsweise
463
12.1.2 Wohin mit der Ausgabe?
465
12.2 Der sed-Befehl
467
12.3 Adressen
468
12.4 Kommandos, Substitutionsflags und Optionen von sed
469
12.4.1 Das a-Kommando – Zeile(n) anfügen
474
12.4.2 Das c-Kommando – Zeilen ersetzen
475
12.4.3 Das d-Kommando – Zeilen löschen
475
12.4.4 Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern
476
12.4.5 Das Kommando i – Einfügen von Zeilen
477
12.4.6 Das p-Kommando – Patternspace ausgeben
478
12.4.7 Das Kommando q – Beenden
479
12.4.8 Die Kommandos r und w
479
12.4.9 Das Kommando s – substitute
481
12.4.10 Das Kommando y
486
12.5 sed-Scripts
487
12.6 Aufgaben
489
13 awk-Programmierung
491
13.1 Einführung und Grundlagen von awk
491
13.1.1 History und Versionen von awk
492
13.1.2 Die Funktionsweise von awk
493
13.2 Aufruf von awk-Programmen
494
13.2.1 Grundlegender Aufbau eines awk-Kommandos
494
13.2.2 Die Kommandozeilenoptionen von awk
496
13.2.3 awk aus der Kommandozeile aufrufen
497
13.2.4 awk in Shellscripts aufrufen
497
13.2.5 awk als eigenes Script ausführen
498
13.3 Grundlegende awk-Programme und -Elemente
499
13.3.1 Ausgabe von Zeilen und Zeilennummern
499
13.3.2 Felder
501
13.4 Muster (bzw. Adressen) von awk-Scripts
505
13.4.1 Zeichenkettenvergleiche
506
13.4.2 Vergleichsausdrücke
506
13.4.3 Reguläre Ausdrücke
509
13.4.4 Zusammengesetzte Ausdrücke
511
13.4.5 BEGIN und END
512
13.5 Die Komponenten von awk-Scripts
513
13.5.1 Variablen
514
13.5.2 Arrays
519
13.5.3 Operatoren
522
13.5.4 Kontrollstrukturen
529
13.6 Funktionen
534
13.6.1 Mathematische Funktionen
534
13.6.2 Funktionen für Zeichenketten
536
13.6.3 Funktionen für die Zeit
540
13.6.4 Systemfunktionen
542
13.6.5 Ausgabefunktionen
543
13.6.6 Eingabefunktion
543
13.6.7 Benutzerdefinierte Funktionen
547
13.7 Empfehlung
549
13.8 Aufgaben
549
14 Linux/UNIX-Kommandoreferenz
551
14.1 Kurzübersicht
552
14.2 Dateiorientierte Kommandos
561
14.2.1 bzcat – Ausgabe von bzip2-komprimierten Dateien
561
14.2.2 cat – Datei(en) nacheinander ausgeben
562
14.2.3 chgrp – Gruppenzugehörigkeit ändern
562
14.2.4 cksum/md5sum/sum – eine Prüfsumme für eine Datei ermitteln
562
14.2.5 chmod – Zugriffsrechte von Dateien oder Verzeichnissen ändern
564
14.2.6 chown – Eigentümer von Dateien oder Verzeichnissen ändern
565
14.2.7 cmp – Dateien miteinander vergleichen
565
14.2.8 comm – zwei sortierte Textdateien miteinander vergleichen
565
14.2.9 cp – Dateien kopieren
566
14.2.10 csplit – Zerteilen von Dateien (kontextabhängig)
567
14.2.11 cut – Zeichen oder Felder aus Dateien herausschneiden
568
14.2.12 diff – Vergleichen zweier Dateien
568
14.2.13 diff3 – Vergleich von drei Dateien
569
14.2.14 dos2unix – Dateien vom DOS- ins UNIX-Format umwandeln
570
14.2.15 expand – Tabulatoren in Leerzeichen umwandeln
570
14.2.16 file – den Inhalt von Dateien analysieren
570
14.2.17 find – Suchen nach Dateien
571
14.2.18 fold – einfaches Formatieren von Dateien
572
14.2.19 head – Anfang einer Datei ausgeben
573
14.2.20 less – Datei(en) seitenweise ausgeben
573
14.2.21 ln – Links auf eine Datei erzeugen
574
14.2.22 ls – Verzeichnisinhalt auflisten
574
14.2.23 more – Datei(en) seitenweise ausgeben
574
14.2.24 mv – Datei(en) und Verzeichnisse verschieben oder umbenennen
575
14.2.25 nl – Datei mit Zeilennummer ausgeben
575
14.2.26 od – Datei(en) hexadezimal bzw. oktal ausgeben
576
14.2.27 paste – Dateien spaltenweise verknüpfen
576
14.2.28 pcat – Ausgabe von pack-komprimierten Dateien
576
14.2.29 rm – Dateien und Verzeichnisse löschen
576
14.2.30 sort – Dateien sortieren
577
14.2.31 split – Dateien in mehrere Teile zerlegen
578
14.2.32 tac – Dateien rückwärts ausgeben
578
14.2.33 tail – Das Ende einer Datei ausgeben
579
14.2.34 tee – Ausgabe duplizieren
579
14.2.35 touch – Dateien anlegen oder Zeitstempel verändern
580
14.2.36 tr – Zeichen ersetzen bzw. Dateien umformen
580
14.2.37 type – Kommandos klassifizieren
580
14.2.38 umask – Dateierstellungsmaske ändern bzw. ausgeben
581
14.2.39 uniq – doppelte Zeilen nur einmal ausgeben
581
14.2.40 unix2dos – Dateien vom UNIX- ins DOS-Format umwandeln
581
14.2.41 uuencode/uudecode – Text- bzw. Binärdateien codieren
581
14.2.42 wc – Zeilen, Wörter und Zeichen einer Datei zählen
582
14.2.43 whereis – Suche nach Dateien
582
14.2.44 zcat, zless, zmore – (seitenweise) Ausgabe von gunzip-komprimierten Dateien
583
14.3 Verzeichnisorientierte Kommandos
583
14.3.1 basename – gibt den Dateianteil eines Pfadnamens zurück
583
14.3.2 cd – Verzeichnis wechseln
583
14.3.3 dirname – Verzeichnisanteil eines Pfadnamens zurückgeben
583
14.3.4 mkdir – ein Verzeichnis anlegen
583
14.3.5 pwd – Ausgeben des aktuellen Arbeitsverzeichnisses
584
14.3.6 rmdir – ein leeres Verzeichnis löschen
584
14.4 Verwaltung von Benutzern und Gruppen
584
14.4.1 exit, logout – eine Session (Sitzung) beenden
584
14.4.2 finger – Informationen zu anderen Benutzern abfragen
584
14.4.3 groupadd, groupmod, groupdel – Gruppenverwaltung (distributionsabhängig)
585
14.4.4 groups – Gruppenzugehörigkeit ausgeben
585
14.4.5 id – eigene Benutzer- und Gruppen-ID ermitteln
585
14.4.6 last – An- und Abmeldezeit eines Benutzers ermitteln
586
14.4.7 logname – Name des aktuellen Benutzers anzeigen
586
14.4.8 newgrp – Gruppenzugehörigkeit kurzzeitig wechseln (betriebssystemspezifisch)
586
14.4.9 passwd – Passwort ändern bzw. vergeben
586
14.4.10 useradd/adduser, userdel, usermod – Benutzerverwaltung (distributionsabhängig)
587
14.4.11 who – eingeloggte Benutzer anzeigen
588
14.4.12 whoami – Name des aktuellen Benutzers anzeigen
588
14.5 Programm- und Prozessverwaltung
588
14.5.1 at – Kommando zu einem bestimmten Zeitpunkt ausführen lassen
588
14.5.2 batch – Kommando irgendwann später ausführen lassen
589
14.5.3 bg – einen angehaltenen Prozess im Hintergrund fortsetzen
590
14.5.4 cron/crontab – Programme in bestimmten Zeitintervallen ausführen lassen
590
14.5.5 fg – einen angehaltenen Prozess im Vordergrund fortsetzen
590
14.5.6 jobs – Anzeigen angehaltener bzw. im Hintergrund laufender Prozesse
590
14.5.7 kill – Signale an Prozesse mit einer Prozessnummer senden
590
14.5.8 killall – Signale an Prozesse mit einem Prozessnamen senden
590
14.5.9 nice – Prozesse mit anderer Priorität ausführen lassen
591
14.5.10 nohup – Prozesse beim Beenden einer Sitzung weiterlaufen lassen
591
14.5.11 ps – Prozessinformationen anzeigen
591
14.5.12 pgrep – Prozesse über ihren Namen finden
592
14.5.13 pstree – Prozesshierarchie in Baumform ausgeben
593
14.5.14 renice – Priorität laufender Prozesse verändern
593
14.5.15 sleep – Prozesse suspendieren (schlafen legen)
593
14.5.16 su – Ändern der Benutzerkennung (ohne Neuanmeldung)
593
14.5.17 sudo – ein Programm als anderer Benutzer ausführen
594
14.5.18 time – Zeitmessung für Prozesse
595
14.5.19 top – Prozesse nach CPU-Auslastung anzeigen (betriebssystemspezifisch)
595
14.5.20 watch – Kommandos in regelmäßigen Abständen wiederholen
595
14.6 Speicherplatzinformationen
596
14.6.1 df – Abfrage des freien Speicherplatzes für die Dateisysteme
596
14.6.2 du – Größe eines Verzeichnisbaums ermitteln
596
14.6.3 free – verfügbaren Speicherplatz (RAM und Swap) anzeigen (betriebssystemabhängig)
597
14.6.4 swap – Swap-Space anzeigen (nicht Linux)
597
14.7 Dateisystemkommandos
598
14.7.1 badblocks – überprüft, ob ein Datenträger defekte Sektoren hat
598
14.7.2 cfdisk – Festplatten partitionieren
599
14.7.3 dd – Datenblöcke zwischen Devices (Low Level) kopieren (und konvertieren)
599
14.7.4 dd_rescue – fehlertolerantes Kopieren von Dateiblöcken
602
14.7.5 dumpe2fs – zeigt Informationen über ein ext2/ext3-Dateisystem an
602
14.7.6 e2fsck – repariert ein ext2/ext3-Dateisystem
602
14.7.7 fdisk – Partitionieren von Speichermedien
604
14.7.8 fsck – Reparieren und Überprüfen von Dateisystemen
605
14.7.9 mkfs – Dateisystem einrichten
606
14.7.10 mkswap – eine Swap-Partition einrichten
607
14.7.11 mount, umount – An- bzw. Abhängen eines Dateisystems
608
14.7.12 parted – Partitionen anlegen, verschieben, vergrößern oder verkleinern
609
14.7.13 prtvtoc – Partitionstabellen ausgeben
609
14.7.14 swapon, swapoff – Swap-Datei oder Partition (de)aktivieren
609
14.7.15 sync – alle gepufferten Schreiboperationen ausführen
609
14.8 Archivierung und Backup
610
14.8.1 bzip2/bunzip2 – (De-)Komprimieren von Dateien
610
14.8.2 compress/uncompress – (De-)Komprimieren von Dateien
611
14.8.3 cpio, afio – Dateien und Verzeichnisse archivieren
611
14.8.4 crypt – Dateien verschlüsseln
614
14.8.5 dump/restore bzw. ufsdump/ufsrestore – Vollsicherung bzw. Wiederherstellen eines Dateisystems
615
14.8.6 gzip/gunzip – (De-)Komprimieren von Dateien
617
14.8.7 mt – Streamer steuern
618
14.8.8 pack/unpack – (De-)Komprimieren von Dateien
618
14.8.9 tar – Dateien und Verzeichnisse archivieren
619
14.8.10 zip/unzip – (De-)Komprimieren von Dateien
623
14.8.11 Übersicht über Dateiendungen und über die Pack-Programme
624
14.9 Systeminformationen
625
14.9.1 cal – zeigt einen Kalender an
625
14.9.2 date – Datum und Uhrzeit
625
14.9.3 uname – Rechnername, Architektur und OS ausgeben
626
14.9.4 uptime – Laufzeit des Rechners
626
14.10 Systemkommandos
626
14.10.1 dmesg – letzte Boot-Meldung des Kernels anzeigen
626
14.10.2 halt – alle laufenden Prozesse beenden
627
14.10.3 reboot – alle laufenden Prozesse beenden und System neu starten
627
14.10.4 shutdown – System herunterfahren
627
14.11 Druckeradministration
628
14.12 Hardwareabfragen
629
14.12.1 lsblk – Anzeigen von Blockgeräten
629
14.12.2 lscpu – Prozessorinformationen
630
14.12.3 lshw – Hardware
630
14.12.4 lsusb – USB-Geräte- und Schnittstelleninformationen
631
14.12.5 lspci – Liste aller PCI-Geräte
631
14.13 Netzwerkbefehle
631
14.13.1 arp – Ausgeben von MAC-Adressen
631
14.13.2 cURL – Daten von oder zu einem Server übertragen
632
14.13.3 ftp – Dateien zu einem anderen Rechner übertragen
632
14.13.4 hostname – Rechnername ermitteln
637
14.13.5 ifconfig – Netzwerkzugang konfigurieren
637
14.13.6 ip – Netzwerk abfragen und konfigurieren
637
14.13.7 mail/mailx – E-Mails schreiben und empfangen (und auswerten)
640
14.13.8 netstat – Statusinformationen über das Netzwerk
641
14.13.9 nslookup (host/dig) – DNS-Server abfragen
642
14.13.10 ping – die Verbindung zu einem anderen Rechner testen
642
14.13.11 Die r-Kommandos von Berkeley (rcp, rlogin, rsh, rwho)
643
14.13.12 ssh – sichere Shell auf anderem Rechner starten
644
14.13.13 scp – Dateien zwischen unterschiedlichen Rechnern kopieren
645
14.13.14 rsync – Replizieren von Dateien und Verzeichnissen
646
14.13.15 traceroute – Route zu einem Rechner verfolgen
648
14.13.16 wget – Dateien direkt von Servern herunterladen
649
14.14 Benutzerkommunikation
649
14.14.1 wall – Nachrichten an alle Benutzer verschicken
649
14.14.2 write – Nachrichten an andere Benutzer verschicken
650
14.14.3 mesg – Nachrichten auf die Dialogstation zulassen oder unterbinden
650
14.15 Bildschirm- und Terminalkommandos
651
14.15.1 clear – Löschen des Bildschirms
651
14.15.2 reset – Zeichensatz für ein Terminal wiederherstellen
651
14.15.3 setterm – Terminaleinstellung verändern
651
14.15.4 stty – Terminaleinstellung abfragen oder setzen
651
14.15.5 tty – Terminalname erfragen
652
14.15.6 tput – Terminal- und Cursorsteuerung
653
14.16 Online-Hilfen
653
14.16.1 apropos – nach Schlüsselwörtern in Manpages suchen
653
14.16.2 info – GNU-Online-Manual
653
14.16.3 man – die traditionelle Online-Hilfe
654
14.16.4 whatis – Kurzbeschreibung zu einem Kommando
655
14.17 Alles rund um PostScript-Kommandos
655
14.18 Gemischte Kommandos
656
14.18.1 alias/unalias – Kurznamen für Kommandos vergeben bzw. löschen
656
14.18.2 bc – Taschenrechner
656
14.18.3 printenv bzw. env – Umgebungsvariablen anzeigen
656
15 Die Praxis
657
15.1 Alltägliche Lösungen
658
15.1.1 Auf alphabetische und numerische Zeichen prüfen
658
15.1.2 Auf Integer überprüfen
659
15.1.3 echo mit oder ohne -n
661
15.2 Datei-Utilitys
662
15.2.1 Leerzeichen im Dateinamen ersetzen
662
15.2.2 Dateiendungen verändern
663
15.2.3 Veränderte Dateien in zwei Verzeichnissen vergleichen
665
15.2.4 Dateien in mehreren Verzeichnissen ändern
666
15.3 Systemadministration
675
15.3.1 Benutzerverwaltung
676
15.3.2 Systemüberwachung
694
15.4 Backup-Strategien
701
15.4.1 Warum ein Backup?
701
15.4.2 Sicherungsmedien
702
15.4.3 Varianten der Sicherungen
703
15.4.4 Bestimmte Bereiche sichern
703
15.4.5 Backup über ssh mit tar
704
15.4.6 Daten mit rsync synchronisieren
711
15.4.7 Dateien und Verzeichnisse per E-Mail versenden
714
15.5 Systemstart – Init-System
717
15.5.1 Startup-Scripts
717
15.5.2 systemd-Units
724
15.6 Das World Wide Web und HTML
725
15.6.1 Analysieren von access_log (Apache)
726
15.6.2 Analysieren von error_log (Apache)
729
15.6.3 Interaktion mit Servern – cURL
732
15.7 CGI (Common Gateway Interface)
736
15.7.1 CGI-Scripts ausführen
737
15.7.2 CGI-Environment ausgeben
738
15.7.3 Einfache Ausgabe als Text
740
15.7.4 Ausgabe als HTML formatieren
742
15.7.5 Systeminformationen ausgeben
745
15.7.6 Kontaktformular
747
16 GUIs und Grafiken
751
16.1 dialog, Zenity und YAD
751
16.2 dialog – Abfragen und Informationen
752
16.2.1 –yesno – Entscheidungsfrage
752
16.2.2 –msgbox – Nachrichtenbox mit Bestätigung
753
16.2.3 –infobox – Hinweisfenster ohne Bestätigung
754
16.2.4 –inputbox – Text-Eingabezeile
755
16.2.5 –textbox – ein einfacher Dateibetrachter
756
16.2.6 –menu – ein Menü erstellen
757
16.2.7 –checklist – Auswahlliste zum Ankreuzen
758
16.2.8 –radiolist – Radiobuttons zum Auswählen
759
16.2.9 –gauge – Fortschrittszustand anzeigen
760
16.2.10 Verändern von Aussehen und Ausgabe
761
16.2.11 Ein kleines Beispiel
762
16.3 Zenity
763
16.4 YAD
768
16.5 gnuplot – Visualisierung von Messdaten
776
16.5.1 Wozu wird gnuplot eingesetzt?
777
16.5.2 gnuplot starten
778
16.5.3 Das Kommando zum Plotten
778
16.5.4 Variablen und Parameter für gnuplot
780
16.5.5 Ausgabe von gnuplot umleiten
781
16.5.6 Grafikausgabe im Terminal
783
16.5.7 Variablen und eigene Funktionen definieren
784
16.5.8 Interpretation von Daten aus einer Datei
785
16.5.9 Alles bitte nochmals zeichnen (oder besser speichern und laden)
787
16.5.10 gnuplot aus einem Shellscript heraus starten (der Batch-Betrieb)
788
16.5.11 Plot-Styles und andere Ausgaben festlegen
790
16.5.12 Tricks für die Achsen
796
16.5.13 Die dritte Dimension
800
16.5.14 Zusammenfassung
802
16.6 Aufgaben
803
Anhang
805
A Befehle (Übersichtstabellen)
805
B Lösungen der Übungsaufgaben
829
C Trivia
849
Index
851