Shell-Programmierung für Unix und Linux

Ähnliche Dokumente
Shell-Programmierung fur Unix und Linux

UNIX Shell-Programmierung

Arzu Sanli Ibrahim Canakci

Shell-Skripte in Unix

Arithmetik in der tcsh

Shell-Skript-Programmierung

Linux und Shell-Programmierung Teil 5

Patrick Ditchen 4. Auflage. Shell-Skript Programmierung. Inklusive CD-ROM

Unix/Linux Grundlagen für Einsteiger

Übung: Entwickeln eines Shell-Skripts

Shell-Programmierung. von Rolf Schmidt für. LUG Frankfurt

Computer & GNU/Linux Einführung Teil 4

Die Shell. Ein Vortrag von Frederik und Michael 1 / 35

15 Der AWK. (Aho, Weinberger, Kernighan)

Kommandozeilenverarbeitung durch die Unix-Shell (bash)

Grundlagen der Shellskript-Programmierung

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Shellprogrammierung. Einführung in Linux. Antonia Blanke. Operatoren Schleifen Case Funktionen Kommandos Signale Stringmanipulation

Der UNIX-Werkzeugkasten Programmieren mit UNIX

Keine Angst vor Linux/Unix

Korn-Shell: Einführung in Shellscripte 1. Übersicht: Einführung - 2. Die Kornshell im Detail - 3.Grundlagen der Programmierung

SelfLinux Was ist eine Shell?

Linux Prinzipien und Programmierung

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

Shellprogrammierung. Einführung in Linux. Antonia Blanke. Shellprogrammierung Die Linux Shell Besondere Zeichen Pipes Variablen Bedingungen und Tests

Technische Praxis der Computersysteme 1

I Grundlagen der System-Administration 8

Linux Tutorium. 12. Shellprogrammierung. Version vom :38:56

Unix-Shells. mehrere Befehle in einer Zeile. bash: Grundlagen. Ein- und Ausgaben umlenken. Befehle: Dateien und Verzeichnisse (1)

Programmieren lernen mit Perl

Übung 4: Schreiben eines Shell-Skripts

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Die drei Engel der Weihnacht

4 l Springer Vieweg. Keine Angst. vor Linux/Unix. Unix-Anwender. Ein Lehrbuch für Linux- und. Christine Wolfinger

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

Bash-Skripting Linux-Kurs der Unix-AG

Ein- und Ausgabeumlenkung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Technische Probleme lösen mit C/C++

Shell-Programmierung

VBA mit Microsoft Excel für Kids

Inhaltsverzeichnis. Wilhelm Haager. Computeralgebra mit Maxima. Grundlagen der Anwendung und Programmierung. ISBN (Buch):

Einführung Unix Shell

SHELL PROGRAMMIERUNG

Vorlesung Unix-Praktikum

UNIX-Benutzerumgebung und Shell. die Zuordnung der Zeichen zu den Sonderfunktionen kann durch ein UNIX-Kommando (stty(1)) verändert werden

Crashkurs Kommandozeile

ShellScripting : Shell Scripte

Objektorientierte Programmierung in Java

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona

Übersicht Shell-Scripten

Desktop ade: Me and my shell

Programmieren in. Brian W. Kernighan Dennis M. Ritchie ANSIC. Mit dem C-Reference Manual in deutscher Sprache. Zweite Ausgabe

Bash-Skripting Linux-Kurs der Unix-AG

Linux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting

Inhaltsverzeichnis. Vorwort.11

Systemverwaltung mittels Skripts

Linux und Shell-Programmierung Teil 6

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Alles, was man auf der Kommandozeile eingeben kann, kann man auch in einem Skript verwenden. Umgekehrt gilt das gleiche.

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

SelfLinux Shellprogrammierung

Werke der kompakt-reihe zu wichtigen Konzepten und Technologien der IT-Branche: ermöglichen einen raschen Einstieg, bieten einen fundierten

1.1 In diesem Kapitel Ein wenig C-Geschichte Warum in C programmieren? Die Struktur dieses Buches 19

Betriebssysteme I WS 2016/17. Prof. Dr. Dirk Müller. 5 Shell-Programmierung

C++ Einführung und professionelle Programmierung. von Ulrich Breymann. 8., erweiterte Auflage. Hanser München 2005

LINUX IN A NUTSHELL. 3. Auflage. Ellen Siever, Stephen Spainhour, Stephen Figgins & Jessica P. Hekman

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Okt 10, 16 17:29 UNIX/Linux Lösung

Perl Programmierung Grundlagen

Inhaltsverzeichnis. Ulrich Stein. Einstieg in das Programmieren mit MATLAB ISBN: Weitere Informationen oder Bestellungen unter

Transkript:

Shell-Programmierung für Unix und Linux Grundlagen, Werkzeuge und praktische Skripte von Rainer Krienke 3., erweiterte Auflage Hanser München 2006 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 40737 4 Zu Leseprobe schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Shell-Programmierung für Unix und Linux Rainer Krienke Grundlagen, Werkzeuge und praktische Skripte ISBN 3-446-40737-5 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40737-5 sowie im Buchhandel

Inhaltsverzeichnis Vorwort............................................................. 11 1 Einleitung....................................................... 15 1.1 Die Unix-Shell.................................................... 15 1.2 Shell-Varianten im Überblick......................................... 16 2 Die Shell als Kommandointerpreter.................................. 19 2.1 Grundlagen....................................................... 19 2.1.1 Kommandos................................................ 19 2.1.2 Metazeichen der Shell, Quoting................................. 20 2.1.3 Konzept der Ein- und Ausgabe.................................. 23 2.1.4 Konzept der Pipes............................................ 25 2.1.5 Konzept der Shell- und Environment-Variablen..................... 26 2.1.6 Bearbeitung der Kommandozeile................................ 28 2.1.7 Gruppieren von Kommandos................................... 29 2.1.8 Arbeiten mit Sub-shells........................................ 31 2.1.9 Kontrolle von Prozessen (Jobcontrol)............................. 32 2.2 Die Bourne-, Bourne-Again- und Korn-Shell............................ 33 2.2.1 Unterstützung der Kommandoeingabe............................ 33 Abkürzung eines Loginverzeichnisses mit ~....................... 34 Arbeiten mit der Kommando-History............................. 34 Editieren der Kommandozeile................................... 35 Vervollständigung von Datei- und Verzeichnisnamen................ 36 2.2.2 Arbeiten mit Shell- und Environment-Variablen.................... 37 Arrays in der Bourne-Again-Shell............................... 39 Arrays in der Korn-Shell....................................... 41 Häufig verwendete Variablen................................... 42 Metazeichen zur Dateinamenersetzung in der Korn-Shell............. 44 2.2.3 Konfigurationsoptionen der Shell................................ 45 2.2.4 Aliase...................................................... 47 2.2.5 Shellinterne Optimierung der Kommandoausführung................ 48 2.2.6 Startup-Dateien.............................................. 49 2.3 Die C-Shell und die TC-Shell......................................... 52 2.3.1 Unterstützung der Kommandoeingabe............................ 52 Abkürzung eines Loginverzeichnisses mit ~....................... 52

6 Inhalt Arbeiten mit der Kommando-History............................. 53 Editieren der Kommandozeile in der TC-Shell...................... 55 Vervollständigen von Dateinamen in der C-Shell.................... 56 Vervollständigen von Dateinamen in der TC-Shell................... 57 2.3.2 Arbeiten mit Shell- und Environment-Variablen..................... 58 Arrays in der C- und TC-Shell................................... 59 Häufig verwendete Variablen.................................... 60 Konfigurations-Optionen der Shell............................... 62 2.3.3 Aliase...................................................... 63 2.3.4 Shellinterne Optimierung der Kommandoausführung................. 64 2.3.5 Startup- und Shutdown-Dateien.................................. 65 2.4 Vergleich der Leistungsmerkmale der Shells............................. 66 3 Die Shell als Programminterpreter................................... 69 3.1 Grundlagen des Shell-Programmierens.................................. 69 3.1.1 Einführung.................................................. 69 3.1.2 Shell- versus C-Programmierung................................. 72 3.1.3 Built-In-Programme........................................... 76 3.1.4 Vergleichs- und Testoperationen................................. 78 3.1.5 Starten von Shell-Skripten...................................... 82 3.1.6 Schreibkonventionen.......................................... 84 3.2 Programmieren mit sh, ksh und bash................................. 85 3.2.1 Arbeiten mit Shell-Variablen.................................... 85 Spezielle Variablenersetzungen.................................. 85 3.2.2 Bearbeitung der Kommandozeile................................. 90 Grundlagen.................................................. 90 Das Kommando shift........................................ 93 3.2.3 Setzen der Stellungsparameter mit dem Kommando set.............. 94 3.2.4 Möglichkeiten zur Dateneingabe................................. 95 Grundlagen.................................................. 95 Erweiterungen in der Bourne-Again- und Korn-Shell................. 96 3.2.5 Kontrollstrukturen............................................ 97 Die if... then...elif... else... fi-anweisung............... 97 Die while... do... done-anweisung........................... 100 Die for... in... do... done-anweisung........................ 103 Die case... in... esac-anweisung............................ 105 Die for (( ; ; ))-Anweisung der ksh und bash............. 107 Die select-anweisung der ksh und bash...................... 108 Kommandogruppen mit der {}-Anweisung....................... 111 3.2.6 Built-In-Kommandos......................................... 111 Das Built-In eval........................................... 114 Das Built-In printf in der Bourne-Again- und Korn-Shell.......... 115 Das Built-In trap........................................... 120

Inhalt 7 Der typeset-befehl der Bourne-Again- und Korn-Shell............ 122 3.2.7 Vergleichsfunktionen der Korn- und Bourne-Again-Shell............ 124 3.2.8 Arithmetik in der Korn- und Bourne-Again-Shell................... 126 Grundlagen................................................. 126 Operatoren in arithmetischen Ausdrücken......................... 129 Zusammenfassung........................................... 130 3.2.9 Shell-Funktionen............................................ 132 Grundlagen................................................. 132 Besonderheiten in der Korn- und Bourne-Again-Shell............... 135 3.2.10 Debuggen von Shell-Skripten.................................. 137 3.2.11 Bearbeiten von Optionen mit getopts......................... 139 3.2.12 Weitere Ein-/Ausgabemöglichkeiten............................ 141 Erweiterte Ein-/Ausgabeumlenkung in Skripten.................... 141 Arbeiten mit Dateideskriptoren................................. 143 3.3 Programmieren mit der csh, tcsh................................... 144 3.3.1 Arbeiten mit Shell-Variablen................................... 144 Spezielle Variablenersetzungen................................. 145 3.3.2 Bearbeiten der Kommandozeile................................. 147 3.3.3 Setzen von Stellungsparametern................................ 149 3.3.4 Möglichkeiten zur Dateneingabe................................ 149 3.3.5 Ausdrücke................................................. 150 Grundlagen................................................. 150 Arithmetische Auswertung von Ausdrücken mit @.................. 153 Auswertung des Rückgabestatus eines Kommandos................. 155 3.3.6 Kontrollstrukturen........................................... 156 Die if-anweisung........................................... 156 Die while... end -Anweisung................................ 159 Die repeat-anweisung...................................... 161 Die foreach... end -Anweisung.............................. 161 Die Anweisungen break und continue........................ 163 Die switch-anweisung...................................... 164 Die goto-anweisung........................................ 168 3.3.7 Built-In-Kommandos......................................... 170 Das Built-In onintr........................................ 172 Die Built-In-Kommandos alias und unalias................... 175 3.3.8 Debuggen von Shell-Skripten.................................. 176 3.4 Weitere Techniken................................................ 177 3.4.1 Der here-operator.......................................... 177 3.4.2 Das Kommando expr........................................ 180 Verarbeitung arithmetischer Ausdrücke mit expr.................. 180 Operatoren von expr zur Verarbeitung von Zeichenketten........... 182 Reguläre Ausdrücke.......................................... 183 Verwendung Regulärer Ausdrücke mit expr...................... 185 3.5 Vergleich der Leistungsmerkmale der Shells............................ 191

8 Inhalt 4 Nützliche Unix-Werkzeuge......................................... 193 4.1 grep und egrep................................................. 193 4.1.1 Suche nach festen Zeichenketten................................ 195 4.1.2 Suche nach Regulären Ausdrücken.............................. 197 4.2 awk............................................................ 200 4.2.1 Muster..................................................... 203 Reguläre Ausdrücke.......................................... 203 Vergleiche mit Zeichenketten und numerische Vergleiche............ 204 Bereichsmuster.............................................. 207 Start-Stop-Muster............................................ 207 Verknüpfungen von Mustern................................... 208 4.2.2 Variablen.................................................. 208 4.2.3 Vordefinierte Variablen....................................... 209 4.2.4 Operatoren und Funktionen in awk-aktionen...................... 212 4.2.5 Kontrollstrukturen........................................... 215 Das if-statement............................................ 215 Die while-schleife.......................................... 217 Die for-schleife............................................ 219 Spezielle Abbruchanweisungen für Schleifen...................... 220 4.2.6 Arrays..................................................... 220 4.3 sed............................................................ 223 4.3.1 Zeilenadressangabe.......................................... 227 Zeilennummer.............................................. 227 Zeilennummernbereich........................................ 227 Regulärer Ausdruck.......................................... 227 Bereiche mit Regulären Ausdrücken............................. 228 Gemischte Bereiche.......................................... 228 4.3.2 sed-kommandos............................................ 228 Grundlegende Kommandos.................................... 229 Pufferkommandos........................................... 231 4.3.3 Beispiele................................................... 232 4.4 find........................................................... 235 4.4.1 Grundlagen................................................. 236 4.4.2 Beispiele................................................... 238 4.5 Das xargs-kommando............................................ 239 4.5.1 Grundlagen................................................. 239 4.5.2 Beispiele................................................... 241 4.6 sort........................................................... 242 4.6.1 Grundlagen................................................. 243 4.6.2 Beispiele................................................... 245 4.7 Einsatz von Unix-Utilities in Skripten.................................. 246 4.7.1 Nutzung des Backtick-Operators................................ 247 4.7.2 Nutzung der read-anweisung................................. 249 4.7.3 Vergleich beider Ansätze...................................... 251

Inhalt 9 5 Shellprogrammierung in der Praxis................................. 253 5.1 Häufige Fehlerquellen.............................................. 253 5.1.1 Quoting und Trennzeichen..................................... 253 5.1.2 Probleme in if- bzw. test-anweisungen....................... 257 5.1.3 Das Dateiformat-Problem..................................... 259 5.2 Lösungsansätze für gängige Probleme................................. 260 5.2.1 Trennung von Pfad und Dateinamen............................. 260 Verwendung von basename und dirname...................... 261 Verwendung von Variablenersetzungen.......................... 262 5.2.2 Trennung des Namens einer Datei von deren Endung................ 263 Verwendung von basename.................................. 263 Verwendung des %-Operators in einer Variablenersetzung............ 264 5.2.3 Ausgaben eines Kommandos verarbeiten......................... 265 5.2.4 Finden von Prozessen......................................... 266 5.3 Praktische Beispiele............................................... 267 5.3.1 Ein Korn-Shell-Numerierungskript.............................. 267 5.3.2 Ein Bourne-Shell groups-utility............................... 274 5.3.3 Aufräumen mit dem C-Shell clean-utility....................... 279 6 Shell-Kurzreferenz............................................... 287 6.1 Metazeichen und Quoting........................................... 287 6.2 Umlenkung der Ein- und Ausgabe.................................... 288 6.2.1 Vergleichs- und Testoperationen................................ 289 6.3 Startup-Dateien................................................... 291 6.4 Bourne-, Bourne-Again- und Korn-Shell............................... 292 6.4.1 Variablen.................................................. 292 6.4.2 Konfigurationsoptionen....................................... 296 6.4.3 Kontrollstrukturen........................................... 297 Die if... then...elif... else... fi-anweisung................ 298 Die while... do... done-anweisung........................... 298 Die for... in... do... done-anweisung........................ 298 Die for (( ; ; ))-Anweisung der ksh und bash............. 299 Die case... in... esac-anweisung........................... 299 Die select-anweisung in der Korn-Shell....................... 300 Kommandogruppen mit der {}-Anweisung....................... 300 6.4.4 Built-in- Anweisungen........................................ 301 6.4.5 Arithmetische Operatoren..................................... 304 6.4.6 Erweiterte Ein-/Ausgabeumlenkung in Skripten.................... 306 6.5 C- und TC-Shell.................................................. 306 6.5.1 Variablen.................................................. 307 6.5.2 Konfigurationsoptionen....................................... 309 6.5.3 Kontrollstrukturen........................................... 310 Die if-anweisung.......................................... 310

10 Inhalt Die while... end-anweisung................................ 311 Die repeat -Anweisung..................................... 311 Die foreach... end-anweisung............................. 312 Die switch-anweisung...................................... 312 Die goto-anweisung........................................ 313 6.5.4 Built-In-Anweisungen........................................ 313 6.5.5 Arithmetische Operatoren..................................... 315 Glossar............................................................. 319 Index............................................................... 323