Suchen und Finden

Titel

Autor/Verlag

Inhaltsverzeichnis

Nur eBooks für mein Endgerät anzeigen:

 

Newsletter

Shell-Programmierung - Das umfassende Handbuch

Shell-Programmierung - Das umfassende Handbuch

von: Jürgen Wolf

Galileo Press, 2010

ISBN: 9783836216500, 809 Seiten

3. Auflage

Format: PDF, OL

Mac OSX,Windows PC Apple iPad, Android Tablet PC's Online-Lesen für: Linux,Mac OSX,Windows PC

Preis: 34,90 EUR

Ersparnis: 5,00 EUR

  • Datawarehouse & Data Mining
    XML
    Makros in OpenOffice.org 3 - Basic/StarBasic - Einstieg, Praxis, Referenz
    PostgreSQL 8.4 - Das Praxisbuch
    VBA Programmierung fürs Büro
    Datenbankanwendungen entwerfen & programmieren - Von der objektorientierten Analyse bis zur SQL-Implementierung
    Nebenläufige & verteilte Programmierung
    Java 6: Anwendungen programmieren - Von der GUI-Programmierung bis zur Datenbank-Anbindung
  • Basiswissen Lineare Algebra
    Java: Der Einstieg in die Programmierung - Strukturiert und prozedural programmieren
    C++ Der Einstieg in die Programmierung
    Perl Best Practices - Standards für gute Perl-Code
    Der Perl Programmierer - Perl lernen - Professionell anwenden - Lösungen nutzen

     

     

     

     

 

Mehr zum Inhalt

Shell-Programmierung - Das umfassende Handbuch


 

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