Suchen und Finden
Service
Infos und Kontakt
Auf einen Blick
4
Inhalt
6
Vorwort des Autors
24
Vorwort des Gutachters – die Shell: Fluch oder Segen?
28
1 Einführung
30
1.1 Voraussetzungen an den Leser
30
1.1.1 Zielgruppe
31
1.1.2 Notation
32
1.2 Was ist eine Shell?
34
1.3 Hauptanwendungsgebiet
36
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-Kommando)
40
1.4.2 Aliase in der Shell
40
1.4.3 Funktionen in der Shell
41
1.4.4 Shellscripts (Shell-Prozeduren)
41
1.4.5 Programme (binär)
41
1.5 Die Shell-Vielfalt
41
1.5.1 ksh (Korn-Shell)
42
1.5.2 Bash (Bourne-Again-Shell)
42
1.5.3 zsh (Z-Shell)
43
1.5.4 ash (A-Shell)
43
1.5.5 rbash, rzsh (Restricted Shell)
43
1.5.6 tcsh (TC-Shell)
43
1.5.7 Welche Shell-Variante wird in diesem Buch verwendet?
44
1.5.8 rsh und ssh
45
1.6 Betriebssysteme
45
1.7 Crashkurs: einfacher Umgang mit der Kommandozeile
46
1.7.1 Grundlegende Befehle
46
1.7.2 Der Umgang mit Dateien
48
1.7.3 Der Umgang mit Verzeichnissen
51
1.7.4 Datei- und Verzeichnisnamen
55
1.7.5 Gerätenamen
56
1.7.6 Dateiattribute
56
1.8 Shellscripts schreiben und ausführen
59
1.8.1 Der Editor
59
1.8.2 Der Name des Shellscripts
60
1.8.3 Ausführen
60
1.8.4 Hintergrundprozess starten
64
1.8.5 Ausführende Shell festlegen
64
1.8.6 Kommentare
67
1.8.7 Stil
68
1.8.8 Ein Shellscript beenden
69
1.8.9 Testen und Debuggen von Shellscripts
71
1.8.10 Shellscript, das ein Shellscript erstellt und ausführt
72
1.9 Vom Shellscript zum Prozess
74
1.9.1 Ist das Shellscript ein Prozess?
75
1.9.2 Echte Login-Shell?
76
1.10 Datenstrom
77
1.10.1 Ausgabe umleiten
78
1.10.2 Standardfehlerausgabe umleiten
80
1.10.3 Eingabe umleiten
83
1.10.4 Pipes
86
1.10.5 Ein T-Stück mit tee
87
1.10.6 Ersatzmuster (Wildcards)
88
1.10.7 Brace Extension (Bash und Korn-Shell only)
93
1.10.8 Muster-Alternativen (Bash und Korn-Shell only)
94
1.10.9 Tilde-Expansion (Bash und Korn-Shell only)
95
1.11 Empfehlung
96
2 Variablen
98
2.1 Grundlagen
98
2.1.1 Zugriff auf den Wert einer Variablen
98
2.1.2 Variablen-Interpolation
99
2.2 Zahlen
103
2.2.1 Integer-Arithmetik (Bourne-Shell, Bash und Korn-Shell)
104
2.2.2 Integer-Arithmetik (Bash und Korn-Shell only)
106
2.2.3 bc – Rechnen mit Fließkommazahlen und mathematische
109
2.3 Zeichenketten
112
2.3.1 Stringverarbeitung
113
2.3.2 Erweiterte Funktionen für Bash und Korn-Shell
120
2.4 Quotings und Kommando-Substitution
123
2.4.1 Single und Double Quotings
124
2.4.2 Kommando-Substitution – Back Quotes
126
2.5 Arrays (Bash und Korn-Shell only)
129
2.5.1 Werte an Arrays zuweisen
130
2.5.2 Eine Liste von Werten an ein Array zuweisen (Bash)
131
2.5.3 Eine Liste von Werten an ein Array zuweisen (Korn-Shell)
131
2.5.4 Zugreifen auf die einzelnen Elemente eines Arrays
132
2.6 Variablen exportieren
135
2.7 Umgebungsvariablen eines Prozesses
141
2.8 Shell-Variablen
142
2.9 Automatische Variablen der Shell
147
2.9.1 Der Name des Shellscripts – $0
147
2.9.2 Die Prozessnummer des Shellscripts – $$
148
2.9.3 Der Beendigungsstatus eines Shellscripts – $?
149
2.9.4 Die Prozessnummer des zuletzt gestarteten
149
2.9.5 Weitere vordefinierte Variablen der Shell
150
2.9.6 Weitere automatische Variablen für Bash und Korn-Shell
150
3 Parameter und Argumente
154
3.1 Einführung
154
3.2 Kommandozeilenparameter $1 bis $9
154
3.3 Besondere Parameter
155
3.3.1 Die Variable $*
156
3.3.2 Die Variable $@
158
3.3.3 Die Variable $#
158
3.4 Der Befehl »shift«
159
3.5 Argumente und Leerzeichen
161
3.6 Argumente jenseits von $9
162
3.7 Argumente setzen mit set und
163
3.8 getopts – Kommandozeilenoptionen auswerten
167
3.9 Vorgabewerte für Variablen
170
4 Kontrollstrukturen
174
4.1 Bedingte Anweisung mit if
174
4.1.1 Kommandos testen mit if
176
4.1.2 Kommandoverkettung über Pipes mit if
179
4.2 Die else-Alternative für eine if-Verzweigung
182
4.3 Mehrfache Alternative mit elif
184
4.4 Das Kommando »test«
187
4.4.1 Ganze Zahlen vergleichen
188
4.4.2 Ganze Zahlen vergleichen mit let (Bash und Korn-Shell only)
190
4.4.3 Zeichenketten vergleichen
191
4.4.4 Zeichenketten vergleichen (Bash und Korn-Shell only)
196
4.5 Status von Dateien erfragen
198
4.6 Logische Verknüpfung von Ausdrücken
202
4.6.1 Negationsoperator !
202
4.6.2 Die UND-Verknüpfung (-a und &&)
203
4.6.3 Die ODER-Verknüpfung (-o und ||)
205
4.6.4 Klammerung und mehrere logische Verknüpfungen
206
4.7 Short Circuit-Tests – ergebnisabhängige
208
4.8 Die Anweisung case
211
4.8.1 Alternative Vergleichsmuster
213
4.8.2 case und Wildcards
215
4.8.3 case und Optionen
217
4.9 Schleifen
218
4.10 for-Schleife
218
4.10.1 Argumente bearbeiten mit for
219
4.10.2 for und die Dateinamen-Substitution
220
4.10.3 for und die Kommando-Substitution
222
4.10.4 for und Array (Bash und Korn Shell only)
225
4.10.5 for-Schleife mit Schleifenzähler (Bash only)
226
4.11 Die while-Schleife
228
4.12 Die until-Schleife
230
4.13 Kontrollierte Sprünge
233
4.13.1 Der Befehl »continue«
234
4.13.2 Der Befehl »break«
235
4.14 Endlosschleifen
237
5 Terminal-Ein- und Ausgabe
240
5.1 Von Terminals zu Pseudo-Terminals
240
5.2 Ausgabe
243
5.2.1 Der echo-Befehl
243
5.2.2 print (Korn-Shell only)
247
5.2.3 Der Befehl »printf«
247
5.2.4 Der Befehl »tput« – Terminalsteuerung
251
5.3 Eingabe
256
5.3.1 Der Befehl »read«
256
5.3.2 (Zeilenweise) Lesen einer Datei mit read
258
5.3.3 Zeilenweise mit einer Pipe aus einem Kommando lesen (read)
259
5.3.4 Here-Dokumente (Inline-Eingabeumleitung)
260
5.3.5 Here-Dokumente mit read verwenden
263
5.3.6 Die Variable IFS
264
5.3.7 Arrays einlesen mit read (Bash und Korn-Shell only)
270
5.3.8 Shell-abhängige Anmerkungen zu read
271
5.3.9 Einzelnes Zeichen abfragen
272
5.3.10 Einzelne Zeichen mit Escape-Sequenzen abfragen
273
5.3.11 Passworteingabe
280
5.4 Umlenken mit dem Befehl »exec«
280
5.5 Filedeskriptoren
283
5.5.1 Einen neuen Filedeskriptor verwenden
285
5.5.2 Die Umlenkung < >
288
5.6 Named Pipes
289
5.7 Menüs mit select (Bash und Korn-Shell only)
291
5.8 dialog und Xdialog
296
5.8.1 Entscheidungsfrage --yesno
297
5.8.2 Nachrichtenbox mit Bestätigung --msgbox
299
5.8.3 Hinweisfenster ohne Bestätigung --infobox
300
5.8.4 Text-Eingabezeile --inputbox
300
5.8.5 Ein einfacher Dateibetrachter --textbox
301
5.8.6 Ein Menü --menu
302
5.8.7 Auswahlliste zum Ankreuzen --checklist
303
5.8.8 Radiobuttons zum Auswählen --radiolist
304
5.8.9 Fortschrittszustand anzeigen --gauge
305
5.8.10 Verändern von Aussehen und Ausgabe
307
5.8.11 Kleines Beispiel
307
5.8.12 Zusammenfassung
308
5.9 gnuplot – Visualisierung von Messdaten
309
5.9.1 Wozu wird gnuplot eingesetzt?
310
5.9.2 gnuplot starten
310
5.9.3 Das Kommando zum Plotten
311
5.9.4 Variablen und Parameter für gnuplot
312
5.9.5 Ausgabe von gnuplot umleiten
314
5.9.6 Variablen und eigene Funktionen definieren
315
5.9.7 Interpretation von Daten aus einer Datei
316
5.9.8 Alles bitte nochmals zeichnen (oder besser speichern
319
5.9.9 gnuplot aus einem Shellscript heraus starten
320
5.9.10 Plot-Styles und andere Ausgaben festlegen
322
5.9.11 Tricks für die Achsen
328
5.9.12 Die dritte Dimension
333
5.9.13 Zusammenfassung
335
6 Funktionen
336
6.1 Definition
336
6.1.1 Definition (Bash und Korn-Shell only)
337
6.1.2 Funktionsaufruf
337
6.1.3 Funktionen exportieren
339
6.1.4 Aufrufreihenfolge
341
6.1.5 Who is who
341
6.1.6 Aufruf selbst bestimmen
342
6.1.7 Funktionen auflisten
343
6.2 Funktionen, die Funktionen aufrufen
343
6.3 Parameterübergabe
345
6.4 Rückgabewert aus einer Funktion
348
6.4.1 Rückgabewert mit return
349
6.4.2 Rückgabewert mit echo und einer Kommando-Substitution
350
6.4.3 Rückgabewert ohne eine echte Rückgabe (lokale Variable)
352
6.4.4 Funktionen und exit
353
6.5 Lokale contra globale Variablen
353
6.5.1 Lokale Variablen (Bash und Korn-Shell only)
356
6.6 alias und unalias
357
6.7 Autoload (Korn-Shell only)
360
7 Signale
362
7.1 Grundlagen zu den Signalen
362
7.2 Signale senden – kill
366
7.3 Eine Fallgrube für Signale – trap
367
7.3.1 Einen Signalhandler (Funktion) einrichten
370
7.3.2 Mit Signalen Schleifendurchläufe abbrechen
373
7.3.3 Mit Signalen das Script beenden
373
7.3.4 Das Beenden der Shell (oder eines Scripts) abfangen
374
7.3.5 Signale ignorieren
375
7.3.6 Signale zurücksetzen
376
8 Rund um die Ausführung von Scripts
378
8.1 Prozessprioritäten
378
8.2 Warten auf andere Prozesse
379
8.3 Hintergrundprozess wieder hervorholen
380
8.4 Hintergrundprozess schützen
381
8.5 Subshells
382
8.6 Mehrere Scripts verbinden und ausführen
384
8.6.1 Datenübergabe zwischen Scripts
384
8.6.2 Rückgabe von Daten an andere Scripts
386
8.6.3 Scripts synchronisieren
389
8.7 Jobverwaltung
391
8.8 Shellscripts zeitgesteuert ausführen
394
8.9 Startprozess- und Profildaten der Shell
400
8.9.1 Arten von Initialisierungsdateien
400
8.9.2 Ausführen von Profildateien beim Start einer Login-Shell
401
8.9.3 Ausführen von Profildateien beim Start einer
404
8.9.4 Zusammenfassung alle Profil- und Startup-Dateien
406
8.10 Ein Shellscript bei der Ausführung
407
8.10.1 Syntaxüberprüfung
408
8.10.2 Expansionen
408
8.10.3 Kommandos
408
8.11 Shellscripts optimieren
410
9 Nützliche Funktionen
412
9.1 Der Befehl »eval«
412
9.2 xargs
415
9.3 dirname und basename
417
9.4 umask
418
9.5 ulimit (Builtin)
419
9.6 time
421
9.7 typeset
422
10 Fehlersuche und Debugging
424
10.1 Strategien zum Vermeiden von Fehlern
424
10.1.1 Planen Sie Ihr Script
424
10.1.2 Testsystem bereitstellen
425
10.1.3 Ordnung ist das halbe Leben
426
10.2 Fehlerarten
428
10.3 Fehlersuche
429
10.3.1 Tracen mit set -x
430
10.3.2 DEBUG und ERR-Signal
432
10.3.3 Variablen und Syntax überprüfen
436
10.3.4 Eine Debug-Ausgabe hinzufügen
437
10.3.5 Debugging-Tools
438
11 Reguläre Ausdrücke und grep
440
11.1 Reguläre Ausdrücke – die Theorie
440
11.1.1 Elemente für reguläre Ausdrücke (POSIX-RE)
441
11.1.2 Zusammenfassung
444
11.2 grep
444
11.2.1 Wie arbeitet grep?
445
11.2.2 grep mit regulären Ausdrücken
446
11.2.3 grep mit Pipes
451
11.2.4 grep mit Optionen
452
11.2.5 egrep (extended grep)
455
11.2.6 fgrep (fixed oder fast grep)
456
11.2.7 rgrep
457
12 Der Stream-Editor sed
458
12.1 Funktions- und Anwendungsweise von sed
458
12.1.1 Grundlegende Funktionsweise
458
12.1.2 Wohin mit der Ausgabe?
460
12.2 Der sed-Befehl
462
12.3 Adressen
463
12.4 Kommandos, Substitutionsflags und
465
12.4.1 Das a-Kommando – Zeile(n) anfügen
468
12.4.2 Das c-Kommando – Zeilen ersetzen
469
12.4.3 Das d-Kommando – Zeilen löschen
470
12.4.4 Die Kommandos h, H, g, G und x – Arbeiten mit den Puffern
470
12.4.5 Das Kommando i – Einfügen von Zeilen
472
12.4.6 Das p-Kommando – Patternspace ausgeben
473
12.4.7 Das Kommando q – Beenden
474
12.4.8 Die Kommandos r und w
474
12.4.9 Das Kommando s – substitute
476
12.4.10 Das Kommando y
480
12.5 sed-Scripts
481
13 awk-Programmierung
486
13.1 Einführung und Grundlagen von awk
486
13.1.1 History und Versionen von awk
487
13.1.2 Die Funktionsweise von awk
488
13.2 Aufruf von awk-Programmen
489
13.2.1 Grundlegender Aufbau eines awk-Kommandos
489
13.2.2 Die Kommandozeilen-Optionen von awk
491
13.2.3 awk aus der Kommandozeile aufrufen
492
13.2.4 awk in Shellscripts aufrufen
492
13.2.5 awk als eigenes Script ausführen
494
13.3 Grundlegende awk-Programme und -Elemente
494
13.3.1 Ausgabe von Zeilen und Zeilennummern
495
13.3.2 Felder
496
13.4 Muster (bzw. Adressen) von awk-Scripts
501
13.4.1 Zeichenkettenvergleiche
501
13.4.2 Vergleichsausdrücke
502
13.4.3 Reguläre Ausdrücke
504
13.4.4 Zusammengesetzte Ausdrücke
507
13.4.5 BEGIN und END
507
13.5 Die Komponenten von awk-Scripts
509
13.5.1 Variablen
510
13.5.2 Arrays
514
13.5.3 Operatoren
518
13.5.4 Kontrollstrukturen
524
13.6 Funktionen
530
13.6.1 Mathematische Funktionen
530
13.6.2 Funktionen für Zeichenketten
531
13.6.3 Funktionen für die Zeit
536
13.6.4 Systemfunktionen
538
13.6.5 Ausgabefunktionen
538
13.6.6 Eingabefunktion
539
13.6.7 Benutzerdefinierte Funktionen
542
13.7 Empfehlung
545
14 Linux-UNIX-Kommandoreferenz
546
14.1 Kurzübersicht
547
14.2 Dateiorientierte Kommandos
555
14.3 Verzeichnisorientierte Kommandos
575
14.4 Verwaltung von Benutzern und Gruppe
577
14.5 Programm- und Prozessverwaltung
581
14.6 Speicherplatzinformationen
589
14.7 Dateisystem-Kommandos
591
14.8 Archivierung und Backup
603
14.9 Systeminformationen
618
14.10 System-Kommandos
619
14.11 Druckeradministration
621
14.12 Netzwerkbefehle
622
14.13 Benutzerkommunikation
639
14.14 Bildschirm- und Terminalkommandos
641
14.15 Online-Hilfen
643
14.16 Alles rund um PostScript-Kommandos
645
14.17 Gemischte Kommandos
646
15 Die Praxis
648
15.1 Alltägliche Lösungen
649
15.1.1 Auf alphabetische und numerische Zeichen prüfen
649
15.1.2 Auf Integer überprüfen
650
15.1.3 echo mit oder ohne -n
652
15.2 Datei-Utilities
653
15.2.1 Leerzeichen im Dateinamen ersetzen
653
15.2.2 Dateiendungen verändern
654
15.2.3 Veränderte Dateien in zwei Verzeichnissen vergleichen
656
15.3 Systemadministration
657
15.3.1 Benutzerverwaltung
657
15.3.2 Systemüberwachung
676
15.4 Backup-Strategien
682
15.4.1 Warum ein Backup?
682
15.4.2 Sicherungsmedien
683
15.4.3 Varianten der Sicherungen
684
15.4.4 Bestimmte Bereiche sichern
684
15.4.5 Backup über ssh mit tar
685
15.4.6 Daten mit rsync synchronisieren
692
15.4.7 Dateien und Verzeichnisse per E-Mail versenden
695
15.4.8 Startup-Scripts
698
15.5 World Wide Web und HTML
705
15.5.1 Analysieren von access_log (Apache)
706
15.5.2 Analysieren von error_log (Apache)
710
15.6 CGI (Common Gateway Interface)
712
15.6.1 CGI-Scripts ausführen
713
15.6.2 CGI-Environment ausgeben
714
15.6.3 Einfache Ausgabe als Text
716
15.6.4 Ausgabe als HTML formatieren
718
15.6.5 Systeminformationen ausgeben
721
15.6.6 Kontaktformular
723
15.6.7 Noch ein Tipp
726
16 GUIs mit Tcl/Tk
728
16.1 Was ist und was kann Tcl/Tk?
728
16.2 Ein Tcl/Tk-Script starten
729
16.3 Variablen
731
16.4 Einfache Ausgabe
732
16.5 Substitutionsmechanismen
732
16.5.1 Variablensubstitution
732
16.5.2 Befehlssubstitution
733
16.5.3 Backslashsubstitution
733
16.6 Mathematische Ausdrücke
734
16.7 Programmstrukturen
734
16.7.1 Verzweigungen
735
16.7.2 Schleifen
736
16.7.3 Prozeduren (Funktionen)
738
16.8 Listen
739
16.9 Stringverarbeitung
739
16.10 Dateizugriff
739
16.10.1 open
739
16.10.2 puts
740
16.10.3 gets
741
16.10.4 read
741
16.11 Der Rest
742
16.12 Das Tk-Toolkit
742
16.13 Eine Einführung
742
16.14 Eine einfache Schaltfläche – button
744
16.15 Einzeiliges Textfeld – entry
745
16.16 Mehrzeiliger Text und ein Menü – text und menu
746
16.17 Mit Ereignissen verbinden – bind
750
16.18 Layoutmanager (Geometriemanager) – grid und pack
752
16.18.1 pack
752
16.18.2 grid
755
16.19 Eine Scrollleiste – scrollbar
757
16.20 Weitere Eingabe-Widgets – radiobutton,
758
16.20.1 radiobutton
758
16.20.2 checkbutton
759
16.20.3 scale
759
16.20.4 spinbox
760
16.20.5 Beispiel
761
16.21 frame und labelframe
763
16.22 Listen – listbox
763
16.23 Darstellen von Grafiken – canvas
765
16.24 Ein geteiltes Fenster – panedwindow
766
16.25 Widgetübersicht
767
16.26 Dialoge (tk_)
768
16.27 Tile-Erweiterung (ttk_)
768
16.28 Weitere Empfehlungen
769
Anhang
770
A.1 Shell-Builtin-Befehle
770
A.2 Externe Kommandos
772
A.3 Shell-Optionen
773
A.4 Shell-Variablen
775
A.5 Kommandozeile editieren
782
A.6 Wichtige Tastenkürzel (Kontrolltasten)
784
A.7 Initialisierungsdateien der Shells
785
A.8 Signale
786
A.9 Sonderzeichen und Zeichenklassen
788
A.10 Tastenunterschiede zwischen Mac- und
789
A.11 Die Buch-CD
791
Index
792
Mehr eBooks vom gleichen Verlag
Adobe Dreamweaver CS5 - Der praktische Einstieg, von: Hussein Morsy, Preis: 19,90 EUR
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion






















