Markus Rathmann, Christa Wieskotten
Jetzt lerne ich Shell-Programmierung - Der effektive Umgang mit der Linus/Unix-Kommandozeile - leicht gemacht
2 Angebote ab € 5,00 €
Markus Rathmann, Christa Wieskotten
Jetzt lerne ich Shell-Programmierung - Der effektive Umgang mit der Linus/Unix-Kommandozeile - leicht gemacht
- Buch
Produktdetails
- Verlag: Markt & Technik ein Imprint von Pearson Deutschland
- ISBN-13: 9783827255518
- ISBN-10: 3827255511
- Artikelnr.: 26048536
- Herstellerkennzeichnung Die Herstellerinformationen sind derzeit nicht verfügbar.
Vorwort
Einleitung
1 Grundlagen
1.1 Was ist ein Shellskript?
1.2 Kommentarzeilen
1.3 Ein Skript beenden
1.4 Was sind Variablen?
1.5 Variablen referenzieren
1.6 Quoting
1.7 Parameter/Argumente
1.8 Aufgaben
1.9 Lösungen
2 Interaktion von Programmen
2.1 Ein-/Ausgabeumlenkung
2.1.1 Ausgabeumlenkung
2.1.2 Eingabeumlenkung
2.1.3 Standardfehler (Standarderror)
2.2 Pipes
2.3 Wildcards/Ersatzmuster
2.3.1 Allgemeines
2.3.2 Ein Zeichen ersetzen: "?"
2.3.3 Eine beliebige Anzahl an Zeichen ersetzen: "*"
2.3.4 Zeichenbereiche angeben
2.4 Brace Extension - Erweiterung durch Klammern
2.5 Aufgaben
2.6 Lösungen
3 Abfragen und Schleifen
3.1 Der test-Befehl
3.2 Die if-Abfrage
3.3 Die case-Anweisung
3.4 Die while-Schleife
3.5 Die until-Schleife
3.6 Die for-Schleife
3.7 Die Befehle break und continue
3.7.1 break
3.7.2 continue
3.8 Aufgaben
3.9 Lösungen
4 Terminal-Ein-/Ausgabe
4.1 Der echo-Befehl
4.2 Der Befehl printf
4.3 Der Befehl tput
4.4 Der Befehl read
4.5 Eingabe mit select
4.6 Die Anwort auf die unausweichliche Frage: Tastatur und ihre Abfrage
4.7 Ein-/Ausgabeumlenkung für Experten
4.7.1 Eingabeumlenkung durch Kanalduplizierung
4.7.2 Here-Documents
4.8 Aufgaben
4.9 Lösungen
5 Parameter zum Zweiten
5.1 Der Stand der Dinge
5.2 Parameter jenseits $9
5.3 Spezielle Parameter
5.4 Parameter trickreich genutzt
5.4.1 Vorgabewerte nutzen (Use Default Value)
5.4.2 Vorgabewerte setzen (Assign Default Value)
5.4.3 Fehlerausgabe ausgeben, falls Variablen leer sind
5.4.4 Alternative Werte setzen
5.5 Bash und Kornshellvarianten
5.5.1 Variablenlänge ermitteln
5.5.2 Suffix entfernen
5.5.3 Präfix entfernen
5.5.4 Bereiche eines Parameters
5.6 Parameter neu setzen
5.7 getopts für Positionsparameter
5.8 getopts für eigene Parameter
5.9 Aufgaben
5.10 Lösungen
6 Variablen und andere Mysterien
6.1 Typen setzen für Benutzervariablen
6.2 Arithmetische Ausdrücke
6.3 Feldvariablen/Arrays
6.4 Variablen löschen
6.5 Umgebung/Environment
6.6 Shellvariablen
6.6.1 RANDOM
6.6.2 SHLVL
6.6.3 PIPESTATUS
6.6.4 IFS
6.6.5 PS1, PS2, PS3 und PS4
6.6.6 HOME
6.6.7 PATH
6.6.8 TERM
6.6.9 Sonstige Variablen
6.7 Variablen indirekt
6.8 Aufgaben
6.9 Lösungen
7 Funktionen
7.1 Gruppenbefehl
7.2 Funktionen
7.2.1 return
7.3 Lokale Variablen
7.4 Aufgaben
7.5 Lösungen
8 Prozesse und Signale
8.1 Prozesse: ein wenig Theorie
8.2 Signale: noch ein wenig mehr Theorie
8.2.1 kill oder: Wink mit dem Zaunpfahl
8.2.2 trap
8.3 Programme im Hintergrund: &
8.4 wait - Warten auf Godot?
8.5 Prioritäten
8.5.1 Seid nett zueinander: nice
8.5.2 Lynchjustiz verhindern: nohup
8.6 Subshells
8.7 Skript im Skript einlesen: . oder source
8.8 Jobverwaltung
8.9 Aufgaben
8.10 Lösungen
9 Befehlslisten und sonstiger Kleinkram
9.1 Befehlslisten
9.2 UND-Listen
9.3 ODER-Listen
9.4 Rückgabewert negieren
9.5 Arithmetische Auswertung mittels let
9.6 $() anstelle von `
9.7 Aufgaben
9.8 Lösungen
10 sed
10.1 sed - Stream Editor
10.1.1 sed-Befehle
10.1.2 Reguläre Ausdrücke
10.1.3 Funktionen
10.1.4 Die Substitute-Funktion
10.2 Einige Beispiele
10.2.1 Text mit Rand versehen
10.2.2 Textbereich aus Datei ausgeben
10.2.3 Suchen ohne Beachtung der Groß-/Kleinschreibung
10.2.4 Wörter in Anführungszeichen setzen
10.2.5 Funktionen zusammenfassen
10.2.6 Ersetzungen
10.2.7 Daten in eine Datei schreiben
10.3 Aufgaben
10.4 Lösungen
11 Reste und Sonderangebote
11.1 Zeitgesteuertes Starten von Skripten
11.1.1 at
11.1.2 cron
11.2 Tildeexpansion
11.3 eval
11.4 dirname/basename
11.5 umask/ulimit
11.6 Prompts
11.7 alias/unalias
11.8 Startvorgang
11.9 Aufgaben
11.10 Lösungen
12 Die Kornshell und Portabilität
12.1 Kornshell
12.1.1 Parameter jenseits $9
12.1.2 Weitere Ersatzmuster in der ksh
12.1.3 [[ - Bedingte Ausdrücke/Conditional Expressions
12.1.4 $(< ...)-Umlenkung
12.1.5 Co-Prozesse: &
12.1.6 Eingabe-Prompt:
12.1.7 Variablen
12.2 Portabilität
12.3 Aufgaben
12.4 Lösung
13 Debugging/Fehlersuche
13.1 Planung
13.2 Variablen und Konstanten benennen
13.3 Kodieren
13.3.1 Ordnung ins Skript
13.4 Syntaxfehler entfernen
13.5 Logische Fehler
13.5.1 Tracen
13.5.2 DEBUG- und ERR-Signale
13.6 Sonstige Methoden
13.6.1 Abbruch forcieren
13.6.2 EXIT-Signal nutzen
13.6.3 Debugausgaben einbauen
13.6.4 Zugriffe auf Variablen prüfen
13.6.5 Die Shell und nicht existente Befehle
13.7 Sonstige Tips
13.8 Beispiel
13.8.1 Planung
13.8.2 Namensvergabe
13.8.3 Kodierung
13.9 Aufgaben
13.10 Lösungen
Anhang A: sh, ksh und bash
Anhang B: Das letzte Skript
Anhang C: Taste abfragen in C
Anhang D: Ressourcen im Netz
Stichwortverzeichnis
Einleitung
1 Grundlagen
1.1 Was ist ein Shellskript?
1.2 Kommentarzeilen
1.3 Ein Skript beenden
1.4 Was sind Variablen?
1.5 Variablen referenzieren
1.6 Quoting
1.7 Parameter/Argumente
1.8 Aufgaben
1.9 Lösungen
2 Interaktion von Programmen
2.1 Ein-/Ausgabeumlenkung
2.1.1 Ausgabeumlenkung
2.1.2 Eingabeumlenkung
2.1.3 Standardfehler (Standarderror)
2.2 Pipes
2.3 Wildcards/Ersatzmuster
2.3.1 Allgemeines
2.3.2 Ein Zeichen ersetzen: "?"
2.3.3 Eine beliebige Anzahl an Zeichen ersetzen: "*"
2.3.4 Zeichenbereiche angeben
2.4 Brace Extension - Erweiterung durch Klammern
2.5 Aufgaben
2.6 Lösungen
3 Abfragen und Schleifen
3.1 Der test-Befehl
3.2 Die if-Abfrage
3.3 Die case-Anweisung
3.4 Die while-Schleife
3.5 Die until-Schleife
3.6 Die for-Schleife
3.7 Die Befehle break und continue
3.7.1 break
3.7.2 continue
3.8 Aufgaben
3.9 Lösungen
4 Terminal-Ein-/Ausgabe
4.1 Der echo-Befehl
4.2 Der Befehl printf
4.3 Der Befehl tput
4.4 Der Befehl read
4.5 Eingabe mit select
4.6 Die Anwort auf die unausweichliche Frage: Tastatur und ihre Abfrage
4.7 Ein-/Ausgabeumlenkung für Experten
4.7.1 Eingabeumlenkung durch Kanalduplizierung
4.7.2 Here-Documents
4.8 Aufgaben
4.9 Lösungen
5 Parameter zum Zweiten
5.1 Der Stand der Dinge
5.2 Parameter jenseits $9
5.3 Spezielle Parameter
5.4 Parameter trickreich genutzt
5.4.1 Vorgabewerte nutzen (Use Default Value)
5.4.2 Vorgabewerte setzen (Assign Default Value)
5.4.3 Fehlerausgabe ausgeben, falls Variablen leer sind
5.4.4 Alternative Werte setzen
5.5 Bash und Kornshellvarianten
5.5.1 Variablenlänge ermitteln
5.5.2 Suffix entfernen
5.5.3 Präfix entfernen
5.5.4 Bereiche eines Parameters
5.6 Parameter neu setzen
5.7 getopts für Positionsparameter
5.8 getopts für eigene Parameter
5.9 Aufgaben
5.10 Lösungen
6 Variablen und andere Mysterien
6.1 Typen setzen für Benutzervariablen
6.2 Arithmetische Ausdrücke
6.3 Feldvariablen/Arrays
6.4 Variablen löschen
6.5 Umgebung/Environment
6.6 Shellvariablen
6.6.1 RANDOM
6.6.2 SHLVL
6.6.3 PIPESTATUS
6.6.4 IFS
6.6.5 PS1, PS2, PS3 und PS4
6.6.6 HOME
6.6.7 PATH
6.6.8 TERM
6.6.9 Sonstige Variablen
6.7 Variablen indirekt
6.8 Aufgaben
6.9 Lösungen
7 Funktionen
7.1 Gruppenbefehl
7.2 Funktionen
7.2.1 return
7.3 Lokale Variablen
7.4 Aufgaben
7.5 Lösungen
8 Prozesse und Signale
8.1 Prozesse: ein wenig Theorie
8.2 Signale: noch ein wenig mehr Theorie
8.2.1 kill oder: Wink mit dem Zaunpfahl
8.2.2 trap
8.3 Programme im Hintergrund: &
8.4 wait - Warten auf Godot?
8.5 Prioritäten
8.5.1 Seid nett zueinander: nice
8.5.2 Lynchjustiz verhindern: nohup
8.6 Subshells
8.7 Skript im Skript einlesen: . oder source
8.8 Jobverwaltung
8.9 Aufgaben
8.10 Lösungen
9 Befehlslisten und sonstiger Kleinkram
9.1 Befehlslisten
9.2 UND-Listen
9.3 ODER-Listen
9.4 Rückgabewert negieren
9.5 Arithmetische Auswertung mittels let
9.6 $() anstelle von `
9.7 Aufgaben
9.8 Lösungen
10 sed
10.1 sed - Stream Editor
10.1.1 sed-Befehle
10.1.2 Reguläre Ausdrücke
10.1.3 Funktionen
10.1.4 Die Substitute-Funktion
10.2 Einige Beispiele
10.2.1 Text mit Rand versehen
10.2.2 Textbereich aus Datei ausgeben
10.2.3 Suchen ohne Beachtung der Groß-/Kleinschreibung
10.2.4 Wörter in Anführungszeichen setzen
10.2.5 Funktionen zusammenfassen
10.2.6 Ersetzungen
10.2.7 Daten in eine Datei schreiben
10.3 Aufgaben
10.4 Lösungen
11 Reste und Sonderangebote
11.1 Zeitgesteuertes Starten von Skripten
11.1.1 at
11.1.2 cron
11.2 Tildeexpansion
11.3 eval
11.4 dirname/basename
11.5 umask/ulimit
11.6 Prompts
11.7 alias/unalias
11.8 Startvorgang
11.9 Aufgaben
11.10 Lösungen
12 Die Kornshell und Portabilität
12.1 Kornshell
12.1.1 Parameter jenseits $9
12.1.2 Weitere Ersatzmuster in der ksh
12.1.3 [[ - Bedingte Ausdrücke/Conditional Expressions
12.1.4 $(< ...)-Umlenkung
12.1.5 Co-Prozesse: &
12.1.6 Eingabe-Prompt:
12.1.7 Variablen
12.2 Portabilität
12.3 Aufgaben
12.4 Lösung
13 Debugging/Fehlersuche
13.1 Planung
13.2 Variablen und Konstanten benennen
13.3 Kodieren
13.3.1 Ordnung ins Skript
13.4 Syntaxfehler entfernen
13.5 Logische Fehler
13.5.1 Tracen
13.5.2 DEBUG- und ERR-Signale
13.6 Sonstige Methoden
13.6.1 Abbruch forcieren
13.6.2 EXIT-Signal nutzen
13.6.3 Debugausgaben einbauen
13.6.4 Zugriffe auf Variablen prüfen
13.6.5 Die Shell und nicht existente Befehle
13.7 Sonstige Tips
13.8 Beispiel
13.8.1 Planung
13.8.2 Namensvergabe
13.8.3 Kodierung
13.9 Aufgaben
13.10 Lösungen
Anhang A: sh, ksh und bash
Anhang B: Das letzte Skript
Anhang C: Taste abfragen in C
Anhang D: Ressourcen im Netz
Stichwortverzeichnis
Vorwort
Einleitung
1 Grundlagen
1.1 Was ist ein Shellskript?
1.2 Kommentarzeilen
1.3 Ein Skript beenden
1.4 Was sind Variablen?
1.5 Variablen referenzieren
1.6 Quoting
1.7 Parameter/Argumente
1.8 Aufgaben
1.9 Lösungen
2 Interaktion von Programmen
2.1 Ein-/Ausgabeumlenkung
2.1.1 Ausgabeumlenkung
2.1.2 Eingabeumlenkung
2.1.3 Standardfehler (Standarderror)
2.2 Pipes
2.3 Wildcards/Ersatzmuster
2.3.1 Allgemeines
2.3.2 Ein Zeichen ersetzen: "?"
2.3.3 Eine beliebige Anzahl an Zeichen ersetzen: "*"
2.3.4 Zeichenbereiche angeben
2.4 Brace Extension - Erweiterung durch Klammern
2.5 Aufgaben
2.6 Lösungen
3 Abfragen und Schleifen
3.1 Der test-Befehl
3.2 Die if-Abfrage
3.3 Die case-Anweisung
3.4 Die while-Schleife
3.5 Die until-Schleife
3.6 Die for-Schleife
3.7 Die Befehle break und continue
3.7.1 break
3.7.2 continue
3.8 Aufgaben
3.9 Lösungen
4 Terminal-Ein-/Ausgabe
4.1 Der echo-Befehl
4.2 Der Befehl printf
4.3 Der Befehl tput
4.4 Der Befehl read
4.5 Eingabe mit select
4.6 Die Anwort auf die unausweichliche Frage: Tastatur und ihre Abfrage
4.7 Ein-/Ausgabeumlenkung für Experten
4.7.1 Eingabeumlenkung durch Kanalduplizierung
4.7.2 Here-Documents
4.8 Aufgaben
4.9 Lösungen
5 Parameter zum Zweiten
5.1 Der Stand der Dinge
5.2 Parameter jenseits $9
5.3 Spezielle Parameter
5.4 Parameter trickreich genutzt
5.4.1 Vorgabewerte nutzen (Use Default Value)
5.4.2 Vorgabewerte setzen (Assign Default Value)
5.4.3 Fehlerausgabe ausgeben, falls Variablen leer sind
5.4.4 Alternative Werte setzen
5.5 Bash und Kornshellvarianten
5.5.1 Variablenlänge ermitteln
5.5.2 Suffix entfernen
5.5.3 Präfix entfernen
5.5.4 Bereiche eines Parameters
5.6 Parameter neu setzen
5.7 getopts für Positionsparameter
5.8 getopts für eigene Parameter
5.9 Aufgaben
5.10 Lösungen
6 Variablen und andere Mysterien
6.1 Typen setzen für Benutzervariablen
6.2 Arithmetische Ausdrücke
6.3 Feldvariablen/Arrays
6.4 Variablen löschen
6.5 Umgebung/Environment
6.6 Shellvariablen
6.6.1 RANDOM
6.6.2 SHLVL
6.6.3 PIPESTATUS
6.6.4 IFS
6.6.5 PS1, PS2, PS3 und PS4
6.6.6 HOME
6.6.7 PATH
6.6.8 TERM
6.6.9 Sonstige Variablen
6.7 Variablen indirekt
6.8 Aufgaben
6.9 Lösungen
7 Funktionen
7.1 Gruppenbefehl
7.2 Funktionen
7.2.1 return
7.3 Lokale Variablen
7.4 Aufgaben
7.5 Lösungen
8 Prozesse und Signale
8.1 Prozesse: ein wenig Theorie
8.2 Signale: noch ein wenig mehr Theorie
8.2.1 kill oder: Wink mit dem Zaunpfahl
8.2.2 trap
8.3 Programme im Hintergrund: &
8.4 wait - Warten auf Godot?
8.5 Prioritäten
8.5.1 Seid nett zueinander: nice
8.5.2 Lynchjustiz verhindern: nohup
8.6 Subshells
8.7 Skript im Skript einlesen: . oder source
8.8 Jobverwaltung
8.9 Aufgaben
8.10 Lösungen
9 Befehlslisten und sonstiger Kleinkram
9.1 Befehlslisten
9.2 UND-Listen
9.3 ODER-Listen
9.4 Rückgabewert negieren
9.5 Arithmetische Auswertung mittels let
9.6 $() anstelle von `
9.7 Aufgaben
9.8 Lösungen
10 sed
10.1 sed - Stream Editor
10.1.1 sed-Befehle
10.1.2 Reguläre Ausdrücke
10.1.3 Funktionen
10.1.4 Die Substitute-Funktion
10.2 Einige Beispiele
10.2.1 Text mit Rand versehen
10.2.2 Textbereich aus Datei ausgeben
10.2.3 Suchen ohne Beachtung der Groß-/Kleinschreibung
10.2.4 Wörter in Anführungszeichen setzen
10.2.5 Funktionen zusammenfassen
10.2.6 Ersetzungen
10.2.7 Daten in eine Datei schreiben
10.3 Aufgaben
10.4 Lösungen
11 Reste und Sonderangebote
11.1 Zeitgesteuertes Starten von Skripten
11.1.1 at
11.1.2 cron
11.2 Tildeexpansion
11.3 eval
11.4 dirname/basename
11.5 umask/ulimit
11.6 Prompts
11.7 alias/unalias
11.8 Startvorgang
11.9 Aufgaben
11.10 Lösungen
12 Die Kornshell und Portabilität
12.1 Kornshell
12.1.1 Parameter jenseits $9
12.1.2 Weitere Ersatzmuster in der ksh
12.1.3 [[ - Bedingte Ausdrücke/Conditional Expressions
12.1.4 $(< ...)-Umlenkung
12.1.5 Co-Prozesse: &
12.1.6 Eingabe-Prompt:
12.1.7 Variablen
12.2 Portabilität
12.3 Aufgaben
12.4 Lösung
13 Debugging/Fehlersuche
13.1 Planung
13.2 Variablen und Konstanten benennen
13.3 Kodieren
13.3.1 Ordnung ins Skript
13.4 Syntaxfehler entfernen
13.5 Logische Fehler
13.5.1 Tracen
13.5.2 DEBUG- und ERR-Signale
13.6 Sonstige Methoden
13.6.1 Abbruch forcieren
13.6.2 EXIT-Signal nutzen
13.6.3 Debugausgaben einbauen
13.6.4 Zugriffe auf Variablen prüfen
13.6.5 Die Shell und nicht existente Befehle
13.7 Sonstige Tips
13.8 Beispiel
13.8.1 Planung
13.8.2 Namensvergabe
13.8.3 Kodierung
13.9 Aufgaben
13.10 Lösungen
Anhang A: sh, ksh und bash
Anhang B: Das letzte Skript
Anhang C: Taste abfragen in C
Anhang D: Ressourcen im Netz
Stichwortverzeichnis
Einleitung
1 Grundlagen
1.1 Was ist ein Shellskript?
1.2 Kommentarzeilen
1.3 Ein Skript beenden
1.4 Was sind Variablen?
1.5 Variablen referenzieren
1.6 Quoting
1.7 Parameter/Argumente
1.8 Aufgaben
1.9 Lösungen
2 Interaktion von Programmen
2.1 Ein-/Ausgabeumlenkung
2.1.1 Ausgabeumlenkung
2.1.2 Eingabeumlenkung
2.1.3 Standardfehler (Standarderror)
2.2 Pipes
2.3 Wildcards/Ersatzmuster
2.3.1 Allgemeines
2.3.2 Ein Zeichen ersetzen: "?"
2.3.3 Eine beliebige Anzahl an Zeichen ersetzen: "*"
2.3.4 Zeichenbereiche angeben
2.4 Brace Extension - Erweiterung durch Klammern
2.5 Aufgaben
2.6 Lösungen
3 Abfragen und Schleifen
3.1 Der test-Befehl
3.2 Die if-Abfrage
3.3 Die case-Anweisung
3.4 Die while-Schleife
3.5 Die until-Schleife
3.6 Die for-Schleife
3.7 Die Befehle break und continue
3.7.1 break
3.7.2 continue
3.8 Aufgaben
3.9 Lösungen
4 Terminal-Ein-/Ausgabe
4.1 Der echo-Befehl
4.2 Der Befehl printf
4.3 Der Befehl tput
4.4 Der Befehl read
4.5 Eingabe mit select
4.6 Die Anwort auf die unausweichliche Frage: Tastatur und ihre Abfrage
4.7 Ein-/Ausgabeumlenkung für Experten
4.7.1 Eingabeumlenkung durch Kanalduplizierung
4.7.2 Here-Documents
4.8 Aufgaben
4.9 Lösungen
5 Parameter zum Zweiten
5.1 Der Stand der Dinge
5.2 Parameter jenseits $9
5.3 Spezielle Parameter
5.4 Parameter trickreich genutzt
5.4.1 Vorgabewerte nutzen (Use Default Value)
5.4.2 Vorgabewerte setzen (Assign Default Value)
5.4.3 Fehlerausgabe ausgeben, falls Variablen leer sind
5.4.4 Alternative Werte setzen
5.5 Bash und Kornshellvarianten
5.5.1 Variablenlänge ermitteln
5.5.2 Suffix entfernen
5.5.3 Präfix entfernen
5.5.4 Bereiche eines Parameters
5.6 Parameter neu setzen
5.7 getopts für Positionsparameter
5.8 getopts für eigene Parameter
5.9 Aufgaben
5.10 Lösungen
6 Variablen und andere Mysterien
6.1 Typen setzen für Benutzervariablen
6.2 Arithmetische Ausdrücke
6.3 Feldvariablen/Arrays
6.4 Variablen löschen
6.5 Umgebung/Environment
6.6 Shellvariablen
6.6.1 RANDOM
6.6.2 SHLVL
6.6.3 PIPESTATUS
6.6.4 IFS
6.6.5 PS1, PS2, PS3 und PS4
6.6.6 HOME
6.6.7 PATH
6.6.8 TERM
6.6.9 Sonstige Variablen
6.7 Variablen indirekt
6.8 Aufgaben
6.9 Lösungen
7 Funktionen
7.1 Gruppenbefehl
7.2 Funktionen
7.2.1 return
7.3 Lokale Variablen
7.4 Aufgaben
7.5 Lösungen
8 Prozesse und Signale
8.1 Prozesse: ein wenig Theorie
8.2 Signale: noch ein wenig mehr Theorie
8.2.1 kill oder: Wink mit dem Zaunpfahl
8.2.2 trap
8.3 Programme im Hintergrund: &
8.4 wait - Warten auf Godot?
8.5 Prioritäten
8.5.1 Seid nett zueinander: nice
8.5.2 Lynchjustiz verhindern: nohup
8.6 Subshells
8.7 Skript im Skript einlesen: . oder source
8.8 Jobverwaltung
8.9 Aufgaben
8.10 Lösungen
9 Befehlslisten und sonstiger Kleinkram
9.1 Befehlslisten
9.2 UND-Listen
9.3 ODER-Listen
9.4 Rückgabewert negieren
9.5 Arithmetische Auswertung mittels let
9.6 $() anstelle von `
9.7 Aufgaben
9.8 Lösungen
10 sed
10.1 sed - Stream Editor
10.1.1 sed-Befehle
10.1.2 Reguläre Ausdrücke
10.1.3 Funktionen
10.1.4 Die Substitute-Funktion
10.2 Einige Beispiele
10.2.1 Text mit Rand versehen
10.2.2 Textbereich aus Datei ausgeben
10.2.3 Suchen ohne Beachtung der Groß-/Kleinschreibung
10.2.4 Wörter in Anführungszeichen setzen
10.2.5 Funktionen zusammenfassen
10.2.6 Ersetzungen
10.2.7 Daten in eine Datei schreiben
10.3 Aufgaben
10.4 Lösungen
11 Reste und Sonderangebote
11.1 Zeitgesteuertes Starten von Skripten
11.1.1 at
11.1.2 cron
11.2 Tildeexpansion
11.3 eval
11.4 dirname/basename
11.5 umask/ulimit
11.6 Prompts
11.7 alias/unalias
11.8 Startvorgang
11.9 Aufgaben
11.10 Lösungen
12 Die Kornshell und Portabilität
12.1 Kornshell
12.1.1 Parameter jenseits $9
12.1.2 Weitere Ersatzmuster in der ksh
12.1.3 [[ - Bedingte Ausdrücke/Conditional Expressions
12.1.4 $(< ...)-Umlenkung
12.1.5 Co-Prozesse: &
12.1.6 Eingabe-Prompt:
12.1.7 Variablen
12.2 Portabilität
12.3 Aufgaben
12.4 Lösung
13 Debugging/Fehlersuche
13.1 Planung
13.2 Variablen und Konstanten benennen
13.3 Kodieren
13.3.1 Ordnung ins Skript
13.4 Syntaxfehler entfernen
13.5 Logische Fehler
13.5.1 Tracen
13.5.2 DEBUG- und ERR-Signale
13.6 Sonstige Methoden
13.6.1 Abbruch forcieren
13.6.2 EXIT-Signal nutzen
13.6.3 Debugausgaben einbauen
13.6.4 Zugriffe auf Variablen prüfen
13.6.5 Die Shell und nicht existente Befehle
13.7 Sonstige Tips
13.8 Beispiel
13.8.1 Planung
13.8.2 Namensvergabe
13.8.3 Kodierung
13.9 Aufgaben
13.10 Lösungen
Anhang A: sh, ksh und bash
Anhang B: Das letzte Skript
Anhang C: Taste abfragen in C
Anhang D: Ressourcen im Netz
Stichwortverzeichnis