Shell-Programmierung

Das umfassende Handbuch. Für Bourne-, Korn- und Bourne-Again-Shell (bash). Ideal für alle UNIX-Administratoren (Linux, macOS)
 
 
Rheinwerk (Verlag)
  • 6. Auflage
  • |
  • erschienen im April 2019
 
  • Buch
  • |
  • Hardcover
  • |
  • 838 Seiten
978-3-8362-6346-7 (ISBN)
 

Shell-Programmierung von A bis Z - bestens zur Prüfungsvorbereitung geeignet!

  • Einführung, Praxis, Musterlösungen, Kommandoreferenz
  • Anleitungen, Beispiele und Übungen für zsh, ksh und bash
  • Mit Shell-Werkzeugen: grep, sed, awk, zenity und mehr
Dieses umfassende Handbuch bietet Ihnen alles, was Sie über die Shell-Programmierung wissen müssen. Shell-Programmierung gehört zu den Grundlagen, die jeder Linux-Anwender und System-Administrator wissen muss. Hier finden Sie auf einen Blick und sauber sortiert alle grundlegenden Linux-Kommandos. Außerdem bietet das Buch eine umfassende Linux-UNIX-Referenz zahlreiche Praxisbeispiele und Übungen mit Lösungen und eignet sich daher hervorragend als Nachschlagewerk und zur Prüfungsvorbereitung.

Aus dem Inhalt:

  • Variablen, Parameter und Argumente
  • Kontrollstrukturen, Terminal-Eingabe und -Ausgabe
  • Funktionen und Signale
  • Fehlersuche und Debugging
  • Reguläre Ausdrücke und grep
  • Der Stream-Editor sed
  • awk-Programmierung
  • GUIs mit zenity
  • Auswertung von Messdaten mit gnuplot
  • Für die Praxis
  • Linux/UNIX-Kommandoreferenz
  • Shellbefehle und Builtins
  • Beispiele zur Systemadministration, Backup und CGI-Scripts
  • Übungsaufgaben und Lösungen


Die Fachpresse zur Vorauflage:

iX - Magazin für professionelle Informationstechnik: »Ein Must-have!«

6. Auflage
  • Deutsch
  • Bonn
  • |
  • Deutschland
Rheinwerk
  • Erweiterte Ausgabe
  • Höhe: 246 mm
  • |
  • Breite: 180 mm
  • |
  • Dicke: 53 mm
  • 1646 gr
978-3-8362-6346-7 (9783836263467)
weitere Ausgaben werden ermittelt
Stefan Kania ist seit 1997 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 übrigen Zeit ist er als Tauchlehrer tätig, läuft Marathon und seit einiger Zeit versucht er sich am Square Dance. Mit dem Motorrad und seiner großen Liebe erkundet er im Sommer seine neue Wahlheimat Schleswig-Holstein.

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


Sofort lieferbar

44,90 €
inkl. 7% MwSt.
in den Warenkorb