Home
Programmierung
Contents
1. e ei 3 I D 3 S D gt S 2 02 I SE 2 R V S 3 x ISC Klass Arnold Robbins amp Nelson H F Beebe Deutsche ber setzung von Kathrin Lichtenberg La O REILLY Klassische Shell Programmierung Arnold Robbins amp Nelson H F Beebe Deutsche bersetzung von Kathrin Lichtenberg O REILLY Beijing Cambridge Farnham K ln Paris Sebastopol Taipei Tokyo Die Informationen in diesem Buch wurden mit gr ter Sorgfalt erarbeitet Dennoch k nnen Fehler nicht vollst ndig ausgeschlossen werden Verlag Autoren und bersetzer bernehmen keine juristische Verantwortung oder irgendeine Haftung f r eventuell verbliebene Fehler und deren Folgen Alle Warennamen werden ohne Gew hrleistung der freien Verwendbarkeit benutzt und sind m glicherweise eingetragene Warenzeichen Der Verlag richtet sich im wesentlichen nach den Schreibweisen der Hersteller Das Werk einschlie lich aller seiner Teile ist urheberrechtlich gesch tzt Alle Rechte vorbehalten einschlie lich der Vervielf ltigung bersetzung Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen Kommentare und Fragen k nnen Sie gerne an uns richten O Reilly Verlag Balthasarstr 81 50670 K ln Tel 0221 9731600 Fax 0221 9731608 E Mail kommentar oreilly de Copyright der deutschen Ausgabe 2006 by O Reilly Verlag GmbH amp Co KG 1 Auflage 2006 Die Originalausgabe ersch
2. Der offizielle Name des Standards lautet IEEE Std 1003 1 2001 Dieser Standard enth lt mehrere optionale Teile von denen der wichtigste die X Open System Inter face Spezifikationen XSI sind Diese Funktionen dokumentieren einen vollen Bereich des Verhaltens des historischen Unix Systems Wo es wichtig ist werden wir nderungen zwischen dem aktuellen Standard und dem fr heren Standard aus 3 Die Ausgabe aus dem Jahre 2004 wurde ver ffentlicht nachdem der amerikanische Text f r dieses Buch abgeschlossen worden war Falls Ihr Hauptziel darin besteht das Schreiben von Shell Skripten zu erlernen spielen die Unterschiede zwischen den Standards von 2001 und 2004 keine Rolle Einf hrung ui dem Jahre 1992 erw hnen Au erdem nennen wir die Funktionen die mit XSI zu tun haben Ein guter Ausgangspunkt f r mit Unix zusammenh ngende Standards ist http www unix org Die Homepage der Single UNIX Specification lautet http www unix org version3 Der Online Zugriff auf den aktuellen Standard ist m glich erfordert aber eine Registrierung unter http www unix org version3 online html Gelegentlich bezeichnet der Standard ein bestimmtes Verhalten als unspecified oder nicht spezifiziert Das geschieht mit Absicht um es Herstellern zu erlauben histori sches Verhalten als Erweiterung zu unterst tzen das sind zus tzliche Features die ber das hinausgehen was im Standard selbst dokumentiert ist Wir wollen Ihnen n
3. Sie von dort aus den Verweisen auf die Sourceforge Projektseite die wiederum Verweise zum Herunterladen des Quellcodes enth lt Es gibt drei unterschiedliche Formate siehe die pnm 5 Manpage falls netpbm auf Ihrem System installiert ist an Kapitel 1 Hintergrund
4. freundliche Anleitung die sowohl die Werkzeuge als auch die Shell behandelt die Kon zepte vorstellt Hinweise gibt wie man die besten Ergebnisse erzielen kann und sich mit praktischen Problemen wie der Lesbarkeit befasst Das gew nschte Buch sollte dar ber hinaus auf die Unterschiede zwischen den verschiedenen Shells eingehen anstatt vorzu geben dass nur eine existiert Dieses Buch bietet all das und noch mehr Hier ist endlich eine aktuelle und schmerzlose Einf hrung in die erste und beste der Unix Skriptsprachen Sie wird von realistischen Beispielen begleitet die selbst wiederum n tzliche Werkzeuge abgeben Das Buch behan delt die Standard Unix Werkzeuge ausf hrlich genug um Sie mit ihnen vertraut zu machen und um eine n tzliche Referenz f r all diejenigen zu bieten die von den Manpa ges abgeschreckt werden Ich darf mit besonderer Freude feststellen dass auch die Grundlagen von awk besprochen werden einem u erst n tzlichen und leider vernach l ssigten Werkzeug das hervorragend dazu geeignet ist die L cken zwischen anderen Werkzeugen zu berbr cken und kleine Programmieraufgaben leicht und pr zise zu erle digen Ich empfehle dieses Buch jedem der Shell Skripten verfasst oder von Unix abgeleitete Systeme administriert Ich habe viel daraus gelernt und denke Sie werden das auch tun Henry Spencer SP Systems X Vorwort Einf hrung Benutzer oder Programmierer die neu bei Unix sind werden pl
5. ndlich voraus dass Ihnen bekannt ist dass Sie nach dem Eingeben eines Shell Befehls die Enter Taste dr cken m ssen Zeichen die mit Strg X angegeben werden wobei X ein beliebiger Buchstabe ist werden eingegeben indem man die Strg Taste dr ckt und h lt und dann den angegebenen Buch staben dr ckt Wir geben den Buchstaben zwar in Gro schreibung an dennoch dr cken Sie die Taste ohne gleichzeitiges Halten der Umschalt oder Shift Taste Weitere Sonderzeichen sind Newline identisch mit Strg J Backspace identisch mit Strg H Esc ape Tab ulator und Entf ernen In diesem Buch kommen folgende Schriftkonventionen zum Einsatz Kursivschrift Kursivschrift wird im Text f r Betonungen verwendet um besondere Begriffe her vorzuheben die erstmalig definiert werden f r E Mail Adressen und Internet URLs sowie f r Zitate aus Manpages Sie wird au erdem benutzt wenn Dummy Parame ter besprochen werden die durch einen tats chlichen Wert ersetzt werden sollen und um Kommentare in Beispielen anzugeben Nichtproportionalschrift Diese Schrift wird f r Unix Dateinamen externe und integrierte Befehle sowie Befehlsoptionen verwendet Sie kommt au erdem f r Variablennamen und Shell Schl sselw rter Optionen und Funktionen f r Dateinamensuffixe und in Beispie len f r den Inhalt von Dateien oder die Ausgaben von Befehlen sowie f r Komman dozeilen oder Beispieleingaben innerhalb des normalen Textes zum Einsatz Kurz gesagt
6. tzlich mit einer verwir renden Vielfalt von Programmen konfrontiert die jeweils oft mehrere Optionen besitzen Dabei dr ngen sich Fragen auf wie Welchem Zweck dienen sie und Wie benutze ich sie Die Aufgabe dieses Buches besteht darin diese Fragen zu beantworten Es lehrt Sie wie Sie die Unix Werkzeuge mit der Standard Shell kombinieren um Ihre Probleme zu l sen Das ist die Kunst der Shell Skripten Das Schreiben von Shell Skripten erfordert nicht nur Kenntnisse der Shell Sprache sondern auch Kenntnisse der einzelnen Unix Programme Weshalb gibt es jedes einzelne von ihnen und wie benutzt man sie eigenst ndig und in Kombination mit anderen Programmen Wieso sollten Sie das Schreiben von Shell Skripten erlernen Weil es oft m glich ist mit telgro e bis gro e Probleme in kleinere Teile aufzuspalten die jeweils mit einem der Unix Werkzeuge gel st werden k nnen Ein Shell Skript kann wenn es gut geschrieben ist ein Problem in einem Bruchteil der Zeit l sen die eine herk mmliche Programmier sprache wie C oder C daf r ben tigen w rde Es ist auch m glich Shell Skripten por tabel zu machen d h nutzbar ber einen gro en Bereich von Unix und POSIX konformen Systemen ohne gro artige Anpassungen vornehmen zu m ssen Wenn wir ber Unix Programme sprechen benutzen wir absichtlich den Begriff Werk zeuge Der Unix Werkzeugkasten Ansatz zur L sung von Problemen ist bereits lange als Software Werkz
7. ufig die Grundlagen f r die schicken Bildschirmgrafiken Und die Shell ist in dieser Rolle auch weiterhin un bertroffen Die Abh ngigkeit der Shell davon dass andere Programme die meiste Arbeit erledigen ist einerseits eine Schw che andererseits aber auch eine St rke Sie erhalten die pr zise Nota tion einer Skriptsprache sowie die Geschwindigkeit und Effizienz von Programmen die in C usw geschrieben sind Die Verwendung einer verbreiteten allgemein einsetzbaren Datenrepr sentation Textzeilen in einer gro en und erweiterbaren Menge von Werk zeugen erlaubt es der Skriptsprache die Werkzeuge in endlosen Kombinationen miteinan der zu verbinden Das Ergebnis sind gr ere Flexibilit t und Leistungsf higkeit als sie monolithische Software Pakete mit eingebauten Men eintr gen f r angeblich alles was Sie brauchen jemals erreichen werden Der fr he Erfolg der Shell bei der bernahme die ses Ansatzes best rkte die Entwicklung der Unix Philosophie im Erschaffen spezialisierter Werkzeuge die jeweils nur eine Aufgabe bernehmen und zusammengesetzt werden um die Arbeit zu erledigen Die Philosophie wiederum regte Verbesserungen an der Shell an um sie mehr Aufgaben auf diese Weise ausf hren zu lassen Shell Skripten haben au erdem den Vorteil gegen ber C Programmen und auch gegen ber einigen der anderen Skriptsprachen keine Namen dass sie im Allgemeinen recht einfach geschrieben und modifiziert werden k
8. von Unix Hilfsprogrammen auf die verschiedenen Versionen von Microsoft Windows Die Emulation schlie t TCP IP Netzwerktechniken mit der Berkeley Socket API ein Die XX Einf hrung gr te Funktionalit t gibt es unter Windows NT Windows 2000 und Windows XP obwohl die Umgebung auch unter Windows 95 98 ME funktioniert Die cygwin Umgebung verwendet bash als Shell GCC als C Compiler und den Rest der GNU Hilfsprogramme als Unix Werkzeugsammlung Ein ausgekl gelter mount Befehl erm glicht eine Abbildung der Windows C Pfad Notation auf Unix Dateinamen Der Ausgangspunkt f r das cygwin Projekt ist http www cygwin com Als Erstes m ssen Sie ein Installationsprogramm herunterladen Wenn Sie es ausf hren entscheiden Sie welche zus tzlichen Pakete Sie installieren wollen Die Installation verl uft vollst ndig Internet basiert es gibt keine offiziellen cygwin CDs zumindest nicht von den Betreuern des Projekts DJGPP Das DJGPP Paket bietet 32 Bit GNU Werkzeuge fiir die MS DOS Umgebung Um die Webseite zu zitieren DJGPP is a complete 32 bit C C development system for Intel 80386 and higher PCs running MS DOS It includes ports of many GNU development utilities The development tools require an 80386 or newer computer to run as do the programs they produce In most cases the programs it produces can be sold commercially without license or royal ties Der Name stammt von den Initialen von D J Delorie der den GNU C
9. 116 6 1 Variablen und Arithmetik 00 0000 e cee nee 116 6 2 EXITS ATUS n ee St Bank Gace ee Bd Mle date sn 128 6 3 Die Case AnWweisting Hinia 4 irre are 137 64 Schleifen au as Eege E ee ds Bak gai era b Ae e ba 138 6 9 Funktionen aha sa a eke de era ee TAG 144 6 6 Zusammenfassung nannten er E re 147 7 Eingabe und Ausgabe Dateien und Befehlsauswertung 149 7 1 Standardeingabe Standardausgabe und Standardfehlerausgabe 149 7 2 Zeilen lesen mit read rennen rl 150 7 3 Mehr ber Umleitungen 22222 eee eee 152 7 4 Die vollst ndige Geschichte von printf 0 00 cee eee 157 7 5 Tilde Erweiterung und Wildcardes cece ee 162 7 6 Betehlsersetzung necne dE eek aA Wari ee ah 166 Ff ee 172 7 8 Auswertungsreihenfolge und eval 1 0 00 c eee eee eee ee 173 7 9 Integrierte Befehler Sursee sole ety ais sess ee de leans ey all 179 7 10 Zusammenfassung Be deans Re eg 187 8 Produktionsskripten 0 00 nunana eaea 189 Sil 4Ptadsuche an Arne ee 189 8 2 Software Builds automatisieren 2222222 uenn 205 8 3 Zusammenfassung Auen EE te dee 236 VI Inhalt 9 awkbiszumAbwinken 000 cece cece cece eee eeee 237 9 1 Die awk Kommandozeile 0 00 tenes 238 9 2 Das awk Programmtermodell 0 0 e eee ee 239 9 3 Programm Elemente ANEN EE Hee Gv ey OS Pe er 240 94 Datens tzeiund Felder dae ean ick WEE Baker sr ausser Re 251
10. Compiler g nach MS DOS portiert hat und den Textinitialen von g GPP Inzwischen ist aus dem System eine vollst ndige Unix Umgebung geworden die auf MS DOS aufsetzt und alle GNU Werkzeuge sowie die bash als Shell mitbringt Im Gegensatz zu cygwin oder UWIN siehe weiter unten ben tigen Sie keine Version von Windows sondern nur einen 32 Bit Prozessor und MS DOS Obwohl Sie nat rlich DJGPP in einem Windows MS DOS Fens ter benutzen k nnen Die Website lautet http www delorie com djgpp MKS Toolkit Die vielleicht etablierteste Unix Umgebung f r die PC Welt ist das MKS Toolkit von Mortice Kern Systems MKS Canada Corporate Headquarters 1 519 884 2251 410 Albert Street 1 519 884 8861 FAX Waterloo ON 1 800 265 2797 Sales Canada N2L 3V3 http www mks com 5 DJGPP ist ein vollst ndiges 32 Bit C C Entwicklungssystem f r Intel 80386 PCs und neuer auf denen MS DOS lauft Es enthalt Portierungen vieler GNU Entwicklungsprogramme Die Entwicklungswerkzeuge erfordern zum Ausf hren einen 80386 Computer oder neuer ebenso wie die Programme die man mit ihnen herstellt In den meisten F llen k nnen die Programme die dieses System erzeugt kommerziell ohne Lizenz oder Tantiemen verkauft werden Einf hrung XXI Das MKS Toolkit gibt es in verschiedenen Versionen je nach der Entwicklungsumge bung und der Anzahl der Benutzer die es einsetzen werden Es enth lt eine Shell die dem POSIX Standard folgt sowie pr
11. Sie erhalten die Manpage f r beide Arten von Aufrufen indem Sie den Befehl man verwenden man open Die Manpage open 2 anschauen man printf Die Manpage printf 3 anschauen Wenn Programme eingef hrt werden dann beschreibt ein Kasten wie der folgende sowohl das Werkzeug als auch wichtige Optionen Verwendungshinweise und die Auf gabe des Werkzeugs Code Beispiele Dieses Buch ist voll von Beispielen f r Shell Befehle und Programme die nicht nur die erl uterte Eigenschaft verdeutlichen sollen sondern dazu gedacht sind Ihr t gliches Leben als Benutzer oder Programmierer zu vereinfachen Wir ermuntern Sie insbeson dere die Beispiele selbst zu ver ndern und zu erweitern Der Code in diesem Buch wird unter den Bedingungen der GNU General Public License GPL ver ffentlicht die das Kopieren Verwenden und Ver ndern dieser Programme erlaubt Den exakten Wortlaut der Lizenz finden Sie in der Datei COPYING die den Bei spielen beigegeben ist Der Code steht auf der Website des Buchs zur Verf gung http www oreilly com catalog shellsrptg index html Einf hrung XIX Beispiel Verwendung whizprog optionen argumente Dieser Abschnitt zeigt Ihnen wie Sie den Befehl der hier mit whizprog bezeichnet ist ausf hren Zweck Dieser Abschnitt beschreibt wozu das Programm existiert Wichtige Optionen Dieser Abschnitt f hrt die Optionen auf die f r den t glichen Einsatz des besproche nen Programms wichti
12. lea Da rer ker sand 445 15 4 Setuid bei Shell Skripten Eine schlechte Idee 446 15 5 ksh93 und privilegierter Modus 0 00 cece ee eee eee ee 448 15 6 Zusammenfassung aan naeh PAA ee ah 449 A Manpages schreiben 0 0 0 c cece eee ences 451 B Dateien und Dateisysteme 02 ec eee eee 466 C Wichtige Unix Befehle 00 0 0 cece cece 505 OI LEE EE 511 GLOSS A 3 ern eel Oe aii al 517 INGER seein sg ee nee sie ieee LG Redan mad eet au wang hn ad aoe E 545 Vill Inhalt Vorwort Nat rlich schreibe ich nicht schon seit 30 Jahren Shell Skripten Wenn ich allerdings dar ber nachdenke glaube ich dass ich es wohl doch schon so lange tue obgleich ich klein angefangen habe Die fr hen Unix Shells vor der Bourne Shell waren nach modernen Ma st ben sehr primitiv und das Schreiben umfangreicher Skripten war schwierig Gl cklicherweise wurde es dann schnell besser In den letzten Jahren wurde die Shell als Skriptsprache vernachl ssigt und untersch tzt Und obwohl es die erste Unix Skriptsprache war ist sie immer noch eine der besten Ihre Kombination aus Erweiterbarkeit und Effizienz bleibt einmalig und die Verbesserungen die sie ber die Jahre erfahren hat lassen sie weiterhin im Vergleich mit anderen Skript sprachen bestehen die hochgejubelt wurden Die grafischen Benutzerschnittstellen sind heutzutage gefragter als die Kommandozeilen Shells allerdings bilden Skriptsprachen h
13. steht alles was mit der Computer Benutzung zu tun hat in dieser Schrift Nichtproportionalschrift fett Diese Schrift wird im Text verwendet um regul re Ausdr cke und Shell Wildcard Muster von dem zu filternden Text zu unterscheiden Sie wird au erdem in Beispie len eingesetzt um die Interaktion zwischen dem Benutzer und der Shell zu zeigen alles was der Benutzer eintippt wird in fett gedruckter Nichtproportionalschrift angezeigt Zum Beispiel pwd Das hat der Benutzer eingetippt home tolstoy novels w p Das hat das System ausgegeben XVIII Einf hrung Nichtproportionalschrift kursiv Diese Schrift wird im Text und in Beispielkommandozeilen f r Dummy Parameter verwendet die durch einen tats chlichen Wert ersetzt werden sollen Zum Beispiel cd verzeichnis Va u Dieses Symbol kennzeichnet einen Hinweis einen Vorschlag oder eine all gemeine Anmerkung N ae w a3 Verweise auf Eintr ge im Unix User s Manual werden im Standardstil geschrieben name N wobei name der Befehlsname ist und N die Nummer des Abschnitts blicher weise 1 in dem die Informationen gefunden werden k nnen Beispielsweise bedeutet grep 1 die Manpage f r grep in Abschnitt 1 Die Referenzdokumentation wird kurz als Manpage oder Manual Page bezeichnet Dieses Symbol kennzeichnet eine Warnung Wir bezeichnen sowohl Unix Systemaufrufe als auch C Bibliotheksfunktionen folgenderma en open printf
14. 2 0 eee eee 13 2 6 Auf Shell Skript Argumente zugreifen 0 00 cece eee eee 24 2 7 Einfache berwachung der Ausf hrung 00 cece eee 26 2 8 Internationalisierung und Lokalisierung 00000 eee ee 26 2 9 Zusammenfassung mean wok Ree ky eas er Bil 30 3 SUCHEN UNG Ersetzen et ee ee ba ot 32 3 4 Nach Text suchen veau au sa ee ea sign 32 3 2 Regul re Ausdr cke d NS ANNE len ar rn 35 3 3 Mit belle arb iten 2043 41 404 ana il 60 3 4 Zusammenfassung 1 6 69 4 Werkzeuge zur Textverarbeitung 0 0 0 00 00 e eee 71 4 1 Text Sortieren icc 5 tae aaa en ta ad d e 71 4 2 Duplikate l schen A Ee ra I ea et 80 4 3 Abs tze umformatieren 2 222 0 00 teens 81 4 4 Zeilen W rter und Zeichen z bhlen 00 0 cece ce cee ee 82 4 5 Dr cken jos ty cata BANN sie aah ar tales cached Bente 83 4 6 Die erste und die letzte Zeile extrahieren 0 00 0000 00 88 4 Gasammentassung iur ew ser KOS aha aed kh eae Aves ROR Ai 91 5 Mit Pipelines erstaunliches leisten 00 0 cece eee 92 5 1 Daten aus strukturierten Textdateien extrahieren 92 5 2 Strukturierte Daten f r das Web 100 5 3 Beim Kreuzwortr tsel schummen 106 SA WOHLlisten A rare ee amp ag WEL e Ee 108 5 3 Pag Listen ick sn ae Bat es Be ce a oh ee nasse de 111 5 6 Zusammenfassung 0 0c ce eee eee ae 114 6 Variablen Entscheidungen treffen und Aktionen wiederholen
15. 9 5 Muster und Aktionen 222er al Bene ni Era 254 9 6 Einzeilige Programme in awk 2 es 256 E ENEE 259 9 8 Benutzerdefinierte Funktionen 000 0 c cece eee eee 269 9 9 Stringtunktionen s 4 2s24 cou metentin ony Paes rare Bee de aed 272 9 10 Numerische Funktionen 0000 cece ce eee 281 9 11 Zusammenfassung eh Weeer Nahen bn Ade Ae 283 10 Arbeiten mit Dateien 284 10 4 Dateienvautlisten nm sa veya ava a elie aa ed 284 10 2 Anderungsdaten mit touch aktualisieren 290 10 3 Tempor re Dateien erzeugen und verwenden 292 10 4 Dateien suchen sarraie rasen rem nenn 297 10 5 Befehle ausf hren xargs 2 0 teens 313 10 6 Informationen ber den Speicherplatz im Dateisystem 314 10 7 Dateien vergleichen dere Ee Ate ebe Een 319 10 8 Zusammenfassung 2 2 00 6 cette teens 327 11 Ein ausf hrliches Beispiel Das Zusammenf hren von Benutzerdatenbanken 329 Lil Das Problem u eu ee ie Khas adage Ix a beaks 329 11 2 Die Passwortdateien 00 eee cece cnet Ea 330 11 3 Zusammenf hren von Passwortdateien 331 11 4 ndern der Datei Figent merschaft 000 cece eee eee 339 11 5 Andere Probleme aus dem wirklichen Leben 343 Up Zusammenfassung ti esd anal ar ar Ar ea eee I ee 345 12 Rechtschreibpnr tung c cece cece cece ees 347 12 1 Das Programm spell sta en ees swe add abe a 347 12 2 Der Original Unix Prototyp zur Rechtschreibpr fung 348 12 3 Ver
16. Kraft gepaart mit Einfach heit Die Freir ume der Bell Labs Umgebung f hrten zu einem eleganten System nicht nur zu einem funktionalen Diese Freir ume brachten nat rlich auch einige Nachteile mit sich die deutlich wurden als Unix sich ber seine Entwicklungsumgebung hinaus verbreitete Zwischen den Hilfsprogrammen gab es viele Inkonsistenzen Beispielsweise verwen deten Programme den gleichen Buchstaben f r eine Option diese hatten jedoch unterschiedliche Bedeutungen oder sie verwendeten unterschiedliche Buchstaben f r die gleiche Aufgabe Die von unterschiedlichen Programmen verwendeten Syn taxen f r regul re Ausdr cke waren hnlich aber nicht identisch Dies f hrte zu einer Verwirrung die normalerweise h tte vermieden werden k nnen W re ihre Bedeutung erkannt worden dann h tten die Einrichtungen zur Filterung regul rer Ausdr cke in einer Standardbibliothek codiert werden k nnen 2 Ich habe diese Definition das erste Mal in den 80er Jahren von Dan Forsyth geh rt 2 Kapitel 1 Hintergrund e Viele Hilfsprogramme wiesen Einschr nkungen auf etwa bez glich der L nge der Eingabezeilen oder der Anzahl der offenen Dateien usw In modernen Systemen wurden diese M ngel im Allgemeinen behoben e Manchmal wurden Programme nicht so gr ndlich getestet wie es erforderlich gewe sen w re wodurch es m glich wurde sie versehentlich zum Absturz zu bringen Dies f hrte zu berraschenden und verwirren
17. aben bietet der POSIX Standard nur zwei Arten von regul ren Ausdr cken mit standardisierten Biblio theksroutinen f r die Filterung von regul ren Ausdr cken Damit k nnen Sie Ihre eigenen Werkzeuge schreiben die mit regul ren Ausdr cken identisch mit denen von grep von POSIX Basic Regular Expressions oder BREs genannt oder mit denen von egrep von POSIX Extended Regular Expressions oder EREs genannt funk tionieren Verwende immer die Standardein oder ausgabe Wenn nicht ausdr cklich ein Dateiname angegeben wurde mit dem gearbeitet wer den soll dann soll ein Programm die Daten von seiner Standardeingabe lesen und Daten an seine Standardausgabe schreiben Fehlermeldungen sollen immer an die Standardfehlerausgabe gehen Diese werden in Kapitel 2 besprochen Werden Pro gramme auf diese Art geschrieben k nnen sie leicht als Datenfilter verwendet wer den d h als Komponenten in gr eren komplizierteren Pipelines oder Skripten Sei nicht geschw tzig Software Werkzeuge sollten nicht geschw tzig sein Meldungen der Art beginne die Verarbeitung bin fast fertig oder Verarbeitung abgeschlossen sollen nicht mit der normalen Ausgabe eines Programms vermischt werden oder zumindest nicht standardm ig 1 2 Prinzipien f r Software Werkzeuge 5 Wenn Sie bedenken dass Werkzeuge in einer Pipeline aneinander geh ngt werden k nnen dann ist das sinnvoll werkzeug 1 lt datendatei werkzeug_2 werkzeug 3 werkze
18. aktisch alle Eigenschaften und Funktionen der Korn Shell von 1988 und mehr als 300 Hilfsprogramme wie etwa awk perl vi make usw Die MKS Bibliothek unterst tzt mehr als 1500 Unix APls was das Ganze zu einer nahezu vollst ndigen und hilfreichen Portierung in die Windows Umgebung macht AT amp T UWIN Das UWIN Paket ist ein Projekt von David Korn und seinen Kollegen mit dem unter Microsoft Windows eine Unix Umgebung zur Verfiigung gestellt werden soll Es ahnelt in seiner Struktur dem bereits besprochenen cygwin Eine Shared Library posix d11 bie tet eine Emulation der Unix Systemaufruf APIs Die Systemaufruf Emulation ist fast voll st ndig Ein interessanter Dreh ist dass auf die Windows Registry als Dateisystem unter reg zugegriffen werden kann Auf der Unix API Emulation wurden ksh93 und mehr als 200 Unix Hilfsprogramme oder besser Neuimplementierungen kompiliert und ausge f hrt Die UWIN Umgebung baut auf dem nativen Microsoft Visual C C Compiler auf obwohl auch die GNU Entwicklungswerkzeuge zum Herunterladen und Verwenden mit UWIN verf gbar sind http www research att com sw tools uwin ist die Webseite des Projekts Sie beschreibt was es alles gibt und bietet sowohl Links zum Herunterladen der Bin rpakete als auch Informationen f r die kommerzielle Lizenzierung des UWIN Pakets Es sind au erdem Links auf verschiedene Artikel ber UWIN zus tzliche n tzliche Software und hnliche Pakete enthalten Der bemerkenswer
19. besserungen mit ispell und aspell 222222 ccescee 350 12 4 Eine Rechtschreibpr fung in awk eee eee 353 12 5 Zusammenfassung u 22 a dan bay andern baked ee dak ee ee 374 Inhalt vi E Kl Ve 375 13 1 Prozesserzeugung 2A a ae en ee 376 13 2 Prozessauflistung 2222222222 ceeeeeeeeeeeeeneneenenenenen 377 13 3 Prozesssteuerung und l schung 0 0 cee eee eee 384 13 4 Verfolgung von Systemaufrufen 00 eee 391 13 5 Prozess ACCOUNUING sarah ee 396 13 6 Verz gerte Ausf hrung von Prozessen 00 0 0 eee eee eee 397 13 7 Das proc Dateisystem 403 13 8 Zusammenfassung sisi anne ie BY ale ee ase 404 14 Fragen der Shell Portabilit t und Erweiterungen 406 14 1 Stol erstene A ae ma aa rich ake gd God ges 406 14 2 Der bash Befehl shopt 0 0 0 0 cece eee eects 410 14 3 Gebr uchliche Erweiterungen 0 00 cee cece 414 14 4 Download Informationen 0 0 0 0 cece eee 428 14 5 Andere erweiterte Shells im Bourne Stil 00 00000 cee ee eee 431 14 6 Shell Versi ns o sey carr a ara A orig aes ae hades 431 14 7 Shell Initialisierung und Beendigung 0 0 c eee eee ee 432 14 8 Zusammenfassung eni eret am Mack Irene Ae a eee rn I 438 15 Sichere Shell Skripten Ein Enstieg 440 15 1 Tipps f r sichere Shell Skripten 00 cece eee ee 440 15 2 Eingeschr nkte Shell u Sege aa 443 15 3 Trojanisch amp Pferde sory 25 sey 0 same
20. bst durchlief mehrere Versionen die informell mit dem Buchstaben V und einer Ziffer bezeichnet werden V6 V7 und so weiter Der formale Name folgte der Nummer des ver ffentlichten Handbuchs First Edition erste Ausgabe Second Edition zweite Ausgabe und so weiter Zwischen den Namen besteht ein direkter Zusammenhang V6 Sixth Edition und V7 Seventh Edition Ebenso wie die meisten erfahrenen Unix Programmierer verwenden wir beide Nomenklaturen Das einflussreichste Unix System war die im Jahre 1979 ver ffentlichte siebente Aus gabe Seventh Edition V7 obwohl Bildungseinrichtungen bereits seit mehreren Jahren fr here Versionen zur Verf gung standen V7 zeichnete sich vor allem dadurch aus dass es sowohl awk als auch die Bourne Shell einf hrte auf der die POSIX Shell beruht Etwa zu diesem Zeitpunkt erschienen auch die ersten B cher ber Unix Die Forscher an den Bell Labs waren gut ausgebildete Informatiker Sie entwarfen das System f r ihren pers nlichen Gebrauch sowie f r ihre Kollegen die ebenfalls Informatiker waren Dies f hrte zu einem Kein Nonsens Designansatz Pro gramme taten das was man ihnen sagte ohne berm ig geschw tzig zu sein und mit Abfragen der Art Sind Sie sicher zu nerven Neben der einfachen Erweiterung des aktuellen Standes der Technik spielte vor allem eine Rolle dass der Entwurf und das L sen von Problemen elegant vonstatten gehen Eine liebevolle Definition von Eleganz lautet
21. den Core Dumps Gl cklicherweise kommt dies bei modernen Unix Systemen nur noch selten vor e Die Dokumentation des Systems war zwar im Allgemeinen vollst ndig allerdings auch sehr knapp und minimalistisch Es war daher schwieriger sich in das System einzuarbeiten als es eigentlich w nschenswert gewesen w re Der gr te Teil dessen was wir in diesem Buch pr sentieren dreht sich um die Verarbei tung und Manipulation textueller nicht bin rer Daten Dies r hrt aus dem starken Inte resse an der Textverarbeitung her die in den fr hen Tagen von Unix existierte Er ist aber auch aus anderen Gr nden auf die wir in K rze eingehen werden n tzlich Um genau zu sein erfolgte der erste ernsthafte Einsatz eines Unix Systems bei der Textverarbeitung und formatierung in der Patentabteilung der Bell Labs Die urspr nglichen Unix Maschinen PDP 11 Maschinen der Firma Digital Equipment Corporation bzw DEC waren nicht in der Lage gro e Programme auszuf hren Um eine komplexe Aufgabe zu bew ltigen musste man diese in kleinere Aufgaben untertei len und jeweils von einem eigenen Programm erledigen lassen Bestimmte allgemeine Aufgaben das Extrahieren von Feldern aus Zeilen das Ersetzen von Text usw kamen in vielen gr eren Projekten h ufiger vor so dass daf r Standardwerkzeuge entwickelt wur den Dies wurde schlie lich als Vorteil erkannt Das Fehlen eines gro en Adressraums f hrte zu kleineren einfacheren und spezialis
22. e ein Informatik Student sein der seinen ersten Zugang auf dem Unix System seiner Universit t hat Sie wollen mehr ber die Dinge lernen die unter Unix m glich sind und die Ihr Windows PC nicht ann hernd kann In einem solchen Fall werden Sie wahrscheinlich Skripten schreiben um Ihre Umgebung anzupassen Oder vielleicht haben Sie gerade angefangen als Systemadministrator zu arbeiten und m ssen spezialisierte Programme f r Ihr Unternehmen oder Ihre Hochschule schreiben Dazu fallen einem Protokollverwaltung und Abrechnung bzw Accounting ein Sie sind m gli cherweise ein erfahrener Mac OS Entwickler der nun in die sch ne neue Welt von Mac OS X einsteigt wo Installationsprogramme als Shell Skripten geschrieben werden Wer auch immer Sie sind falls Sie mehr ber Shell Skripten lernen wollen ist dieses Buch genau richtig f r Sie In diesem Buch lernen Sie Entwurfskonzepte und Prinzipien f r Software Werkzeuge Eine Reihe von Prinzipien wacht ber den Entwurf und die Implementierung guter Software Werkzeuge Wir erl utern Ihnen diese Prinzipien und zeigen sie Ihnen in diesem Buch in Aktion Welches die Unix Werkzeuge sind Beim Schreiben von Shell Skripten werden bestimmte Unix Werkzeuge immer wie der verwendet Wir behandeln die Grundlagen der Shell sowie die der regul ren Ausdr cke und pr sentieren jedes der Werkzeuge im Kontext einer bestimmten Art von Problem Neben der Funktionsweise der einzelnen Werkzeuge zeigen wir Ihn
23. eicher als diejenigen in Kapitel 5 aber immer noch kurz genug um in einigen Minuten durchschaut zu werden Dennoch erledigen sie Aufgaben die mit herk mm lichen Programmiersprachen wie C C oder Java nur schwer durchzuf hren w ren Kapitel 9 awk bis zum Abwinken Dieses Kapitel beschreibt die Grundlagen der Sprache awk awk ist selbst eine leis tungsf hige Sprache Einfache und manchmal auch nicht so einfache awk Pro gramme k nnen jedoch zusammen mit anderen Programmen in der Software Werkzeugsammlung verwendet werden um Daten zu extrahieren zu bearbeiten und zu formatieren Kapitel 10 Arbeiten mit Dateien Dieses Kapitel stellt die wichtigsten Werkzeuge f r das Arbeiten mit Dateien vor Es behandelt das Auflisten von Dateien das Erzeugen tempor rer Dateien und den ausgesprochen wichtigen find Befehl zum Suchen von Dateien die bestimmten Kri terien entsprechen Es betrachtet zwei wichtige Befehle zur Ermittlung der Auslas tung des Festplattenplatzes und erl utert anschlie end verschiedene Programme zum Vergleichen von Dateien Kapitel 11 Ein ausf hrliches Beispiel Das Zusammenf hren von Benutzerdatenbanken Hier verkn pfen wir alle bisher gewonnenen Erkenntnisse indem wir eine interes sante und halbwegs anspruchsvolle Aufgabe l sen XVI Einf hrung Kapitel 12 Rechtschreibpr fung In diesem Kapitel wird anhand des Problems der Rechtschreibpr fung gezeigt wie man diese Aufgabe auf unterschiedliche Weise
24. el beginnt die eigentliche Besprechung Es f ngt damit an dass kompilierte Sprachen und Skriptsprachen sowie die Unterschiede zwischen beiden beschrieben werden Anschlie end werden die Grundlagen der Shell Skripten anhand zweier einfacher aber n tzlicher Beispiele vorgestellt Folgende Themen werden besprochen Befehle Optionen Argumente Shell Variablen die Ausgabe mit echo und printf einfache Ein Ausgabeumleitung Befehlssuche Zugriff auf Argumente aus einem Skript heraus und die Ausf hrungsverfolgung Das Kapitel schlie t mit einem Blick auf Internationalisierung und Lokalisierung Fragen die im globalen Dorf heutzutage immer wichtiger werden Kapitel 3 Suchen und Ersetzen Hier stellen wir die Textsuche oder Textfilterung mit regul ren Ausdr cken vor Wir behandeln au erdem die Durchf hrung von nderungen und das Extrahieren von Text Das sind wichtige Operationen die die Grundlage eines Gro teils der Shell Skripten bilden Kapitel 4 Werkzeuge zur Textverarbeitung In diesem Kapitel beschreiben wir eine Reihe von Textverarbeitungswerkzeugen die in Shell Skripten immer wieder eingesetzt werden Zwei der wichtigsten Werk zeuge die hier vorgestellt werden sind sort und uniq die leistungsf hige Methoden zum Organisieren und Reduzieren von Daten sind Dieses Kapitel beschreibt au er dem das Neuformatieren von Abs tzen das Z hlen von Texteinheiten das Dru cken von Dateien und das Abrufen der ersten oder letzte
25. en jeweils weshalb diese existieren und wieso sie bestimmte Optionen besitzen Einf hrung in Unix ist wie der Name schon sagt eine Einf hrung in Unix Sys teme die als Einstieg dient um jemanden ohne Unix Erfahrungen an Unix heranzu f hren Im Gegensatz dazu behandelt Unix in a Nutshell die ganze Vielfalt der Unix Hilfsprogramme bietet dabei aber kaum bzw keine Hinweise wann und wie ein bestimmtes Werkzeug benutzt wird Unser Ziel besteht darin die L cke zwischen diesen beiden B chern zu berbr cken Wir zeigen Ihnen wie Sie die M glichkei ten entdecken die Ihr Unix System bietet um Ihre Aufgaben schnell effektiv und hoffentlich elegant zu erledigen XII Einf hrung Wie Sie die Werkzeuge kombinieren um Ihre Aufgaben zu erf llen Bei der Arbeit mit Shell Skripten gilt tats chlich dass das Ganze mehr ist als die Summe seiner Teile Indem Sie die Shell als Leim verwenden um die einzelnen Werkzeuge zu kombinieren k nnen Sie mit geringen Anstrengungen Erstaunliches erreichen Mehr ber beliebte Erweiterungen von Standardwerkzeugen Falls Sie ein GNU Linux System oder ein von BSD abgeleitetes System verwenden ist es ziemlich wahrscheinlich dass Ihre Werkzeuge ber zus tzliche n tzliche Funktionen und oder Optionen verf gen Wir behandeln diese ebenfalls Mehr ber unentbehrliche Nichtstandardwerkzeuge Manche Programme geh ren auf den traditionellen Unix Systemen nicht zum Standard sind abe
26. estellten technischen Fragen FAQ ber IEEE Std 1003 1 2001 finden Sie unter http www opengroup org austin papers posix_faq html Einige Hintergrundinformationen ber den Standard gibt es unter http www opengroup org austin papers backgrounder html XIV Einf hrung Falls Sie au erdem versuchen die Beispiele hier durchzuarbeiten indem Sie Befehle in Ihr Terminal oder wahrscheinlicher Ihre Terminal Emulation eintippen empfehlen wir Ihnen die Benutzung einer POSIX konformen Shell wie etwa eine neuere Version von ksh93 oder die aktuelle Version der bash Vor allem bin sh ist auf kommerziellen Unix Systemen m glicherweise nicht vollst ndig POSIX konform Kapitel 14 enth lt URLs zum Herunterladen von ksh93 bash und zsh aus dem Internet Zusammenfassung der einzelnen Kapitel Wir empfehlen Ihnen das Buch in der angegebenen Reihenfolge zu lesen da die einzel nen Kapitel jeweils auf den Konzepten und Materialien aufbauen die in den vorherge henden Kapiteln behandelt wurden Hier ist eine kapitelweise Zusammenfassung Kapitel 1 Hintergrund Hier stellen wir kurz die Geschichte von Unix vor Vor allem gehen wir auf die spezielle Umgebung an den Bell Labs ein wo Unix entwickelt wurde und einen Gro teil der Software Werkzeuge Philosophie anregte Dieses Kapitel pr sentiert au erdem die Prinzipien f r gute Software Werkzeuge die dann im Rest des Buches veranschaulicht werden Kapitel 2 Zum Einstieg Mit diesem Kapit
27. euge Philosophie bekannt gewesen Eine alte Analogie fasst diesen Ansatz zur Probleml sung zusammen Ein Schweizer Taschenmesser ist so n tzlich dass viele Leute eines besitzen Es hat mehrere Klingen einen Schraubendreher einen Dosen ffner einen Zahnstocher usw Gr ere Modelle 1 In diesem Buch meinen wir bei Verwendung des Begriffs Unix nicht nur kommerzielle Varianten des urspr nglichen Unix Systems wie etwa Solaris Mac OS X und HP UX sondern auch frei verf gbare hnlich funktionierende Systeme wie GNU Linux und die verschiedenen BSD Systeme BSD OS NetBSD FreeBSD und OpenBSD 2 Dieser Ansatz wurde durch das Buch Software Tools Addison Wesley bekannt gemacht x enthalten noch mehr Werkzeuge wie etwa einen Korkenzieher oder eine Lupe Es gibt jedoch gar nicht so viele Dinge die Sie mit einem Schweizer Taschenmesser tun k nnen Es eignet sich zwar hervorragend zum Schnitzen oder einfachen Einkerben Sie w rden es aber niemals dazu verwenden um eine Hundeh tte oder ein Vogelhaus zu bauen Statt dessen w rden Sie auf Spezialwerkzeuge zur ckgreifen wie etwa Hammer S ge Zwinge oder Hobel Wenn Sie Programmierprobleme l sen ist es daher auch besser speziali sierte Software Werkzeuge zu verwenden Unsere Zielgruppe Dieses Buch ist f r Computer Benutzer und Software Entwickler gedacht die sich in einer Unix Umgebung wiederfinden und dort Shell Skripten schreiben m ssen Beispiels weise k nnten Si
28. g sind Verhalten Dieser Abschnitt fasst zusammen was das Programm tut Warnungen Wenn es etwas zu beachten gilt wird es hier erw hnt Wir begr en es erw hnt zu werden verlangen es jedoch nicht Zu einer Erw hnung geh ren normalerweise Titel Autor Verlag und ISBN Zum Beispiel Klassische Shell Programmierung von Arnold Robbins und Nelson H F Beebe Copyright 2006 O Reilly Verlag ISBN 3 89721 441 5 Unix Werkzeuge f r Windows Systeme Viele Programmierer die ihre ersten Erfahrungen auf Unix Systemen gesammelt haben und nachfolgend in die PC Welt gewechselt sind haben sich eine h bsche Unix artige Umgebung gew nscht vor allem wenn sie mit der grauenhaften MS DOS Kommando zeile konfrontiert wurden Es ist daher nicht berraschend dass es inzwischen mehrere Schnittstellen im Stil der Unix Shell f r PC Betriebssysteme gibt In den vergangenen Jahren sind uns nicht nur Shell Klone sondern auch ganze Unix Umgebungen begegnet Zwei von ihnen verwenden bash und ksh93 Eine andere bietet ihre eigene Shell Neuimplementierung Dieser Abschnitt beschreibt alle Umgebungen in alphabetischer Reihenfolge und gibt Kontakt und Download Informationen an Cygwin Cygnus Consulting inzwischen Red Hat schuf die cygwin Umgebung Nachdem in dem Unternehmen zuerst cygwin dll eine Shared Library geschaffen wurde die eine Emula tion von Unix Systemaufrufen zur Verf gung stellt portierte man dort eine gro e Anzahl
29. hnischen Gutachter f r den ersten Entwurf dieses Buchs Sean Burke begutachtete den zweiten Entwurf Wir danken allen f r ihre wertvollen und hilfreichen Beitr ge Henry Spencer ist der Unix Guru eines Unix Gurus Wir danken ihm f r seine freundli chen Worte im Vorwort Der Zugang zu Unix Systemen an der University of Utah in den Departments of Electri cal and Computer Engineering Mathematics and Physics sowie am Center for High Per formance Computing wie auch die Gastzug nge die freundlicherweise von IBM und Hewlett Packard zur Verf gung gestellt wurden waren wesentlich f r das Testen der Software die f r dieses Buch geschrieben werden musste Wir danken allen aufSerordent lich daf r Arnold Robbins Nelson H F Beebe Einf hrung XXIII KAPITEL 1 Hintergrund Dieses Kapitel bietet einen kurzen Abriss der Entwicklung des Unix Systems Wenn Sie verstehen wo und wie sich Unix entwickelt hat und mit welcher Absicht es entworfen wurde k nnen Sie auch seine Werkzeuge besser einsetzen Dieses Kapitel stellt Ihnen au erdem die Prinzipien f r Software Werkzeuge vor die dann im Rest des Buches demonstriert werden 1 1 Unix Geschichte Wahrscheinlich wissen Sie bereits etwas ber die Entwicklung von Unix Viele Ressourcen berichten dar ber hinaus ber die komplette Geschichte Wir wollen Ihnen hier zeigen wie die Umgebung der Unix entsprang die Gestaltung der verschiedenen Werkzeuge beeinflusst hat U
30. hst aus den POSIX Standards ausgeschlossen Der POSIX Standard von 2001 fun giert gleichzeitig als XPG6 indem er die X Open System Interface Extension oder kurz XSI einschlie t Dabei handelt es sich um eine f rmliche Erweiterung des zugrunde lie genden POSIX Standards die Attribute dokumentiert mit denen ein System nicht nur POSIX konform sondern auch XSI konform wird Das bedeutet es gibt inzwischen nur noch ein formelles Standarddokument auf das sich System und Anwendungsprogram mierer beziehen m ssen Es d rfte kaum berraschen dass dieses als Single Unix Stan dard bezeichnet wird In diesem Buch konzentrieren wir uns auf die Shell Sprache und die Unix Hilfspro gramme die durch den POSIX Standard definiert werden An den entsprechenden Stel len weisen wir auch auf Funktionen hin die XSI spezifisch sind da Sie diese wahrscheinlich auch benutzen werden 1 2 Prinzipien f r Software Werkzeuge Im Laufe der Zeit wurde eine Reihe von Prinzipien f r den Entwurf und das Schreiben von Software Werkzeugen entwickelt Sie werden diese Prinzipien in den Programmen veranschaulicht sehen die in diesem Buch vorgestellt werden Gute Software Werkzeuge sollten folgenden Richtlinien gen gen 4 Die Liste der X Open Publikationen steht unter http www opengroup org publications catalog zur Verf gung 4 Kapitel 1 Hintergrund Mache eine Sache gut Dies ist in vielerlei Hinsicht das wichtigste zu erf llende Prinzip Pr
31. icht nur sagen wie Sie ein bestimmtes Programm ausf hren sol len sondern auch darstellen wieso das Programm existiert und welches Problem es l st Indem Sie erfahren weshalb ein Programm geschrieben wurde k nnen Sie bes ser verstehen wann und wie Sie es verwenden sollen Viele Unix Programme verf gen ber eine verbl ffende Anzahl von Optionen Nor malerweise sind einige dieser Optionen f r die t gliche Arbeit an den Problemen besser geeignet als andere Wir sagen Ihnen f r jedes Programm welche Optionen am n tzlichsten sind Um genau zu sein behandeln wir nicht alle Optionen die die einzelnen Programme haben sondern berlassen diese Aufgabe der Manpage des Programms oder anderen Referenzb chern wie Unix in a Nutshell O Reilly und Linux in a Nutshell O Reilly Sobald Sie dieses Buch beendet haben sollten Sie nicht nur die Unix Werkzeuge verstan den sondern auch die Unix Mentalit t und die Philosophie der Software Werkzeuge ver innerlicht haben Was Sie bereits wissen sollten Fo lgende Dinge sollten Sie bereits wissen Wie Sie sich an Ihrem Unix System anmelden Wie Sie Programme auf der Kommandozeile ausf hren Wie Sie einfache Pipelines aus Befehlen erstellen und einfache Eingabe Ausga beumleitungen wie lt und gt benutzen Wie Sie Jobs mit amp in den Hintergrund verschieben Wie Sie Dateien anlegen und bearbeiten Wie Sie Skripten mit chmod ausf hrbar machen 4 Eine Datei mit h ufig g
32. ien 2005 unter dem Titel Classic Shell Scripting im Verlag O Reilly Media Inc Die Darstellung einer Schildkr te im Zusammenhang mit dem Thema Shell Programmierung ist ein Warenzeichen von O Reilly Media Inc Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie detaillierte bibliografische Daten sind im Internet ber http dnb ddb de abrufbar bersetzung und deutsche Bearbeitung Kathrin Lichtenberg Lektorat Volker Bombien K ln Korrektorat Oliver Mosler K ln Satz Tim Mergemeier reemers publishing services gmbh Krefeld www reemers de Umschlaggestaltung Emma Colby amp Michael Henri Oreal Produktion Andrea Mi K ln Belichtung Druck und buchbinderische Verarbeitung Druckerei K sel Krugzell www koeselbuch de ISBN 10 3 89721 441 5 ISBN 13 978 3 89721 441 5 Dieses Buch ist auf 100 chlorfrei gebleichtem Papier gedruckt Inhalt IO EE IX lui EE XI EN rer WEE 1 Ly de Unix Geschichte eet sa en ei Ady dees bs eee 1 1 2 Prinzipien f r Software Werkzeuge 0 00 eee eee eee 4 1 3 EE 7 2 gt ZUM EINSTIEG Ae bh een 8 2 1 Skriptsprachen im Vergleich mit kompilierten Sprachen 8 2 2 Wozu ein Shell Skript einsetzen 2 2 2222 ee eee 9 2 3 Ein einfaches Skriptu oen e e a a p a een ern p 9 2 4 Eigenst ndige Skripten in der ersten Zeile 10 2 5 Grundlegende Shell Konstrukte
33. ierteren Programmen Viele Leute arbeiteten halbunabh ngig an Unix indem sie Programme anderer neu im plementierten Viele allgemeine Werkzeuge entwickelten sich in den verschiedenen Versi onen auseinander es bestand kein Grund f r eine Standardisierung Wird beispielsweise grep auf einem System mit der Option i verwendet bedeutet dies Ignoriere bei der Su che die Gro und Kleinschreibung Auf einem anderen System wird dies mit der Option y erreicht Das ist bei vielen Hilfsprogrammen der Fall nicht nur bei einigen Die ge br uchlichen kleinen Hilfsprogramme wurden gleich benannt allerdings w rden die Shell Programme die f r die Hilfsprogramme in einer Unix Version geschrieben wurden ohne Anpassung gar nicht auf einer anderen Unix Version laufen Schlie lich wurde es immer offensichtlicher dass man einen allgemeinen Satz standardi sierter Werkzeuge und Optionen brauchte Das Ergebnis dieser Erkenntnis waren die POSIX Standards Der aktuelle Standard IEEE Std 1003 1 2004 umfasst sowohl die C Bibliothek als auch die Shell Sprache und die Systemprogramme sowie deren Optionen 3 Das Handbuch bestand aus zwei Komponenten der Referenz und dem Benutzerhandbuch Das Letztere bestand aus Tutorials zu den meisten Teilen des Systems Es war zwar m glich Unix zu lernen indem man die ganze Dokumentation durchlas und viele Leute einschlie lich der Autoren taten auch genau das aller dings werden die Systeme heutzutage nicht
34. it Hilfe eines wohldefinierten Formats beschrieben werden Jedes Werkzeug liest PBM Dateien ver ndert das enthaltene Bild auf irgendeine Weise und schreibt dann wieder eine Datei im PBM Format aus Dadurch k nnen Sie leicht eine Pipeline konstruieren mit der komplizierte Bildverarbeitungen durchgef hrt werden etwa das Skalieren eines Bildes mit anschlie endem Drehen und Verringern der Farbtiefe Lass jemand anderes den schwierigen Teil erledigen Oft ist es so dass es kein Unix Programm gibt das genau das tut was Sie brauchen Es ist jedoch m glich 90 Prozent der Arbeit von existierenden Werkzeugen erledigen zu lassen Sie k nnen dann falls erforderlich ein kleines spezialisiertes Programm schreiben um die Aufgabe abzuschlie en Auf diese Weise ersparen Sie sich eine Menge Arbeit und m ssen nicht alle Probleme jedes Mal von Grund auf neu l sen Falls Ihnen das zu riskant ist k nnen Sie die Option i mit m verwenden Diese zwingt m nach einer Best ti gung zu fragen Auf jeden Fall bittet m vor dem L schen verd chtiger Dateien um eine Best tigung etwa bei Dateien deren Berechtigungen das Schreiben verbieten Wie immer gibt es einen Mittelweg zwischen den Extremen niemals nachzufragen und immer nachzufragen Die Programme sind nicht standardm ig Bestandteil des Unix Toolsets werden aber auf GNU Linux und BSD Systemen blicherweise installiert Der Ausgangspunkt im Web ist http netpbm sourceforge net Folgen
35. l sen kann Die Original Shell Skript Pipeline sowie zwei kleine Skripten werden vorgestellt um die frei verf gba ren Befehle ispell und aspell f r eine Rechtschreibpr fung als Stapelverarbeitung nutzbar zu machen Das Kapitel schlie t mit einem einigerma en berschaubaren aber dennoch leistungsf higen Programm zur Rechtschreibpr fung in awk das die Eleganz dieser Sprache auf ansprechende Weise demonstriert Kapitel 13 Prozesse In diesem Kapitel verlassen wir den Bereich der Textverarbeitung und wenden uns der Job und Systemverwaltung zu Es gibt eine kleine Anzahl wichtiger Hilfspro gramme f r die Verwaltung von Prozessen Dar ber hinaus behandelt dieses Kapi tel den Befehl sleep der f r Skripten n tzlich ist die darauf warten dass etwas passiert sowie die anderen Standardwerkzeuge f r die verz gerte oder zu einem fes ten Zeitpunkt des Tages stattfindende Befehlsverarbeitung Was noch wichtiger ist das Kapitel behandelt auch den trap Befehl der Shell Skripten die Kontrolle ber Unix Signale gibt Kapitel 14 Fragen der Shell Portabilit t und Erweiterungen Hier beschreiben wir einige der n tzlicheren Erweiterungen die sowohl in ksh als auch in bash zur Verf gung stehen aber nicht Teil von POSIX sind In vielen F llen k nnen Sie diese Erweiterungen sicher in Ihren Skripten verwenden Wir betrach ten au erdem eine Reihe von Fallen die nur darauf warten den unbedarften Shell Skript Autor zu erwischen Es geht
36. mehr mit gedruckten Dokumentationen dieser Art geliefert 1 1 Unix Geschichte 3 Das Gute ist dass sich die Standardisierungsanstrengungen bereits ausgezahlt haben Moderne kommerzielle Unix Systeme folgen ebenso wie frei verf gbare Versionen wie GNU Linux und BSD Derivate dem POSIX Standard Das Lernen von Unix vereinfacht sich dadurch au erdem k nnen portable Shell Skripten geschrieben werden Beachten Sie jedoch Kapitel 14 Interessanterweise war POSIX nicht der einzige Versuch der Unix Standardisierung Vor allem eine anfangs europ ische Gruppe von Computer Herstellern namens X Open stellte ihren eigenen Satz von Standards her Der bekannteste war XPG4 X Open Porta bility Guide vierte Ausgabe der zuerst im Jahre 1988 erschien Es gab auch ein XPG5 bekannter als Unix 98 Standard oder als Single Unix Specification XPG5 enthielt gr tenteils POSIX als Teilmenge und hatte ebenfalls einen gewissen Einfluss Die XPG Standards waren vielleicht weniger streng in ihrer Sprache deckten aber eine breitere Basis ab wodurch sie einen gr eren Bereich der existierenden Praxis bei Unix Systemen dokumentierten Das Ziel bestand f r POSIX darin einen Standard zu gestal ten der so formell war dass er als Richtlinie f r eine v llige Neuimplementierung selbst auf Nicht Unix Plattformen verwendet werden konnte Dadurch wurden schlie lich viele Funktionen und Eigenschaften die auf Unix Systemen verbreitet waren zun c
37. n Zeilen einer Datei Einf hrung XV Kapitel 5 Mit Pipelines Erstaunliches leisten Dieses Kapitel zeigt mehrere kleine Skripten die das Kombinieren einfacher Unix Hilfsprogramme demonstrieren um damit leistungsf higere und was noch wichtiger ist flexiblere Werkzeuge herzustellen Im Prinzip ist dieses Kapitel ein Kochbuch das Probleme und Rezepte zu deren L sung pr sentiert wobei das gemeinsame Thema darin besteht dass die L sungen aus linearen Pipelines aufgebaut werden Kapitel 6 Variablen Entscheidungen treffen und Aktionen wiederholen Das ist das erste der beiden Kapitel in denen die restlichen Grundlagen der Shell Sprache pr sentiert werden Dieses Kapitel betrachtet Shell Variablen und die Shell Arithmetik das wichtige Konzept eines Exit Status sowie die Frage wie in der Shell Entscheidungen getroffen und Schleifen aufgebaut werden Es wird mit einer Besprechung der Shell Funktionen abgeschlossen Kapitel 7 Eingabe und Ausgabe Dateien und Befehlsauswertung Dieses Kapitel vervollst ndigt die Beschreibung der Shell Es konzentriert sich dabei auf die Eingabe und Ausgabe die verschiedenen Ersetzungen die die Shell durch f hrt die Quotierung die Auswertungsreihenfolge der Kommandozeile und inte grierte Shell Befehle Kapitel 8 Produktionsskripten Hier zeigen wir Kombinationen aus Unix Werkzeugen um damit komplexere Text verarbeitungsaufgaben durchzuf hren Die Programme in diesem Kapitel sind umfangr
38. nix wurde urspr nglich im Computing Sciences Research Center der Bell Telephone Laboratories entwickelt Die erste Version entstand 1970 kurz nachdem die Bell Labs sich aus dem Multics Projekt zur ckzogen Viele der Ideen die Unix bekannt machten stammten eigentlich aus dem Betriebssystem Multics vor allem das Konzept von Ger ten Devices als Dateien sowie das Vorhandensein eines Befehlsinterpreters auch als Shell bezeichnet der absichtlich nicht in das Betriebssystem integriert wurde Eine gut geschriebene Historie in englischer Sprache finden Sie unter http www bell labs com history unix Da Unix in einer forschungsorientierten Umgebung entwickelt wurde gab es auch kei nen kommerziellen Druck ein fertiges Produkt herzustellen oder zu verkaufen Das hatte mehrere Vorteile e Das System wurde von seinen Benutzern entwickelt Diese verwendeten es um damit echte tagt glich auftretende Rechenprobleme zu l sen 1 Der Name hat sich seitdem wenigstens einmal ge ndert Wir verwenden von nun an den informellen Namen Bell Labs Die Forscher konnten experimentieren und Programme nach Bedarf ndern Da die Benutzerbasis nur sehr klein war stellte es im Allgemeinen kein Problem dar ein Programm notfalls von Grund auf neu zu schreiben Und da die Benutzer gleichzei tig die Entwickler waren konnten sie Probleme beheben wenn sie auftraten und Verbesserungen anbringen wenn sich die Notwendigkeit daf r ergab Unix sel
39. nnen Selbst Leute die keine C Pro grammierer sind wie ein Gro teil der Systemadministratoren heutzutage arbeiten gern mit Shell Skripten Deshalb ist das Schreiben von Shell Skripten sehr wichtig beim Erwei tern von Benutzerumgebungen und beim Anpassen von Software Paketen Tats chlich gibt es hier einen Kreislauf der Reinkarnationen den ich schon bei mehre ren Software Projekten bemerkt habe Das Projekt setzt einfache Shell Skripten an Schl sselpositionen ein um es den Benutzern zu erm glichen Aspekte der Software anzupassen Es ist jedoch f r das Projekt selbst viel einfacher Probleme zu l sen indem in diesen Shell Skripten gearbeitet wird anstatt in dem umgebenden C Code so dass die Skripten mit der Zeit immer komplizierter werden Schlie lich sind sie so kompliziert dass die Benutzer nicht mehr einfach so damit zurechtkommen einige der Skripten die wir im C News Projekt geschrieben haben waren als Belastungstests f r die Shells ber chtigt ganz zu schweigen von den Benutzern und so muss f r die Anpassung durch die Benutzer ein neuer Satz Skripten bereitgestellt werden Lange schon fehlte ein gutes Buch ber das Schreiben von Shell Skripten B cher ber die Unix Programmierumgebung streifen das Thema allerdings normalerweise nur kurz als eines von mehreren Themen und die besseren B cher waren schon lange berholt Es gibt Referenzdokumentationen f r die verschiedenen Shells allerdings keine anf nger
40. ogramme die nur f r eine Aufgabe zust ndig sind sind leichter zu entwerfen leichter zu schrei ben leichter zu reparieren und leichter zu warten sowie zu dokumentieren Zum Beispiel sollte man von einem Programm wie grep das Dateien nach Zeilen durch sucht die einem Muster entsprechen nicht erwarten dass es auch noch Berechnun gen ausf hrt Eine nat rliche Folge dieses Prinzips ist eine starke Zunahme kleinerer spezialisier ter Programme so wie ja auch ein professioneller Zimmermann eine gro e Anzahl von Spezialwerkzeugen in seinem Werkzeugkoffer hat Verarbeite Textzeilen keine bin ren Zeilen Textzeilen bilden in Unix das universelle Format Datendateien die Textzeilen ent halten sind einfach zu verarbeiten wenn Sie Ihre eigenen Werkzeuge schreiben sie sind mit jedem verf gbaren Texteditor leicht zu ver ndern und sie k nnen ber Netzwerkgrenzen und unterschiedliche Rechnerarchitekturen hinweg bertragen werden Die Benutzung von Textdateien erleichtert die Kombination eigener Werk zeuge mit existierenden Unix Programmen Benutze regul re Ausdr cke Regul re Ausdr cke stellen einen leistungsf higen Mechanismus f r das Arbeiten mit Text dar Wenn Sie verstehen wie sie funktionieren und wie Sie sie richtig ein setzen k nnen dann erleichtern Sie sich das Schreiben von Skripten Obwohl regul re Ausdr cke sich im Laufe der Jahre bei den verschiedenen Werk zeugen und Unix Versionen unterschiedlich entwickelt h
41. r dennoch zu n tzlich um ohne sie auszukommen Wo es pas send erscheint werden sie ebenfalls behandelt Au erdem verraten wir Ihnen woher Sie diese Werkzeuge bekommen k nnen F r Entwickler und Administratoren die schon lange mit Unix arbeiten ist die Philoso phie der Software Werkzeuge nichts Neues Allerdings sind die B cher die diesen Ansatz bekannt gemacht haben zum Gro teil schon mehr als 20 Jahre alt obwohl es sich immer noch lohnt sie zu lesen Unix Systeme haben sich seit der Zeit als diese B cher geschrie ben wurden auf vielf ltige Weise ge ndert Wir hatten daher das Gef hl dass es Zeit f r eine aktualisierte Pr sentation dieser Ideen ist wobei wir f r unsere Beispiele moderne Versionen der Werkzeuge und aktuelle Systeme einsetzen Hier sind die Kernpunkte unseres Ansatzes e Unsere Darstellung beruht auf POSIX POSIX ist der Kurzname einer Reihe von formalen Standards die auf programmatischer Ebene C C Ada Fortran sowie auf der Ebene der Shell und der Hilfsprogramme eine portable Betriebssystemumge bung beschreiben Die POSIX Standards waren sehr erfolgreich dabei Entwicklern eine M glichkeit an die Hand zu geben sowohl ihre Programme als auch ihre Shell Skripten f r einen gro en Bereich von Systemen unterschiedlicher Hersteller porta bel zu gestalten Wir pr sentieren die Shell Sprache und alle Werkzeuge mit ihren n tzlichsten Optionen so wie sie im neuesten POSIX Standard beschrieben werden
42. teste Vorteil des UWIN Pakets besteht darin dass seine Shell die authentische ksh93 ist Das bedeutet dass die Kompatibilit t zur Unix Version von ksh93 kein Problem darstellt Danksagungen Jeder von uns m chte dem anderen f r seine Bem hungen danken In Anbetracht der Tatsache dass wir uns nie pers nlich begegnet sind hat die Zusammenarbeit ziemlich gut funktioniert Wir beide danken unseren Frauen auf das Herzlichste f r ihre Mithilfe Geduld Liebe und Unterst tzung w hrend der Arbeit an diesem Buch Chet Ramey der Betreuer der bash beantwortete unz hlige Fragen ber die Feinheiten der POSIX Shell Glenn Fowler und David Korn von AT amp T Research sowie Jim Meye ring vom GNU Project beantworteten ebenfalls verschiedene Fragen In alphabetischer Reihenfolge Keith Bostic George Coulouris Mary Ann Horton Bill Joy Rob Pike Hugh Redelmeier mit Hilfe von Henry Spencer und Dennis Ritchie beantworteten Fra gen zur Unix Geschichte Nat Torkington Allison Randall und Tatiana Diaz von O Reilly Media begleiteten das Buch von der Konzeption bis zur Fertigstellung Robert Romano von O Reilly machte aus unseren urspr nglichen ASCH und pic Skizzen her XXII Einf hrung vorragende Abbildungen Angela Howard erzeugte einen umfassenden Index f r das Buch der unseren Lesern von gro em Nutzen sein sollte Geoff Collyer Robert Day Leroy Eide John Halleck und Henry Spencer in alphabeti scher Reihenfolge waren die tec
43. ug_4 gt ergebnisdatei Wiirde jedes Werkzeug Meldungen wie Ja ich arbeite erzeugen und in die Pipe schi cken dann wiirden die Daten die verarbeitet werden sollen hoffnungslos zerst rt werden Selbst wenn die einzelnen Werkzeuge ihre Nachrichten an die Standardfeh lerausgabe schicken w rden w re der Bildschirm voll mit sinnlosen Fortschrittsmel dungen Bei Werkzeugen gilt immer Keine Nachrichten sind gute Nachrichten Dieses Prinzip hat noch eine weitere Implikation Im Allgemeinen folgen Unix Werkzeuge der Philosophie Du hast darum gebeten du bekommst es auch Sie fragen nicht noch einmal Bist du wirklich sicher Wenn ein Benutzer rm irgendeinedatei eintippt gehen die Unix Entwickler davon aus dass er wei was er tut rm l scht also die Datei ohne noch einmal nachzufragen Erzeuge dasselbe Ausgabeformat das auch als Eingabe akzeptiert wurde Spezielle Werkzeuge die erwarten dass die Eingabe einem bestimmten Format gen gt etwa Header Zeilen gefolgt von Datenzeilen oder Zeilen mit bestimmten Feldtrennern usw sollten eine Ausgabe erzeugen die den gleichen Regeln gehorcht wie die Eingabe Dies macht es einfach die Ergebnisse eines Programmdurchlaufs durch einen anderen Programmdurchlauf m glicherweise mit anderen Optionen zu verarbeiten Beispielsweise manipuliert die netpbm Programmsuite Bilddateien die im Portable Bitmap Format gespeichert sind Diese Dateien enthalten Bitmap Bilder die m
44. um Fragen die auftreten wenn Sie Skrip ten schreiben sowie um m gliche Abweichungen zwischen den Implementierun gen Dar ber hinaus werden Download und Kompilierungsinformationen f r ksh und bash geliefert Das Kapitel endet mit einer Besprechung der Shell Initialisierung und Beendigung die sich auf den unterschiedlichen Shell Implementierungen unterscheiden Kapitel 15 Sichere Shell Skripten Ein Einstieg In diesem Kapitel geben wir eine oberfl chliche Einf hrung in Sicherheitsfragen bez glich Shell Skripten Anhang A Manpages schreiben Dieses Kapitel erl utert wie man eine Manpage schreibt Diese notwendige Fertig keit wird in typischen Unix B chern normalerweise vernachl ssigt Anhang B Dateien und Dateisysteme Hier beschreiben wir das Unix Bytestrom Dateisystemmodell das wir komplexeren historischen Dateisystemen gegen berstellen Wir erl utern weshalb seine Einfach heit ein Vorzug ist Anhang C Wichtige Unix Befehle Dieses Kapitel enth lt mehrere Listen mit Unix Befehlen Sie sollten diese Befehle und ihre Funktionsweise lernen um Ihre F higkeiten als Unix Entwickler zu verbes sern Einf hrung XVII Bibliografie Hier f hren wir weitere Informationsquellen zum Schreiben von Shell Skripten mit Unix auf Glossar Das Glossar bietet Definitionen f r die wichtigen Begriffe und Konzepte die in die sem Buch eingef hrt wurden In diesem Buch verwendete Konventionen Wir setzen es als selbstverst
Download Pdf Manuals
Related Search
Programmierung programmierung programmierung python programmierung ki programmierung englisch programmierung grundlagen programmierung sps programmierungs app programmierungssprachen programmierung excel programmierung mit der maus programmierung synonym programmierung somfy rolladen
Related Contents
SE 04 L 12 T。s"ーBA 20ー ー` 06) 。。S 『グリーン購入法対象機種適合品』 ※施工上 HP 10BII User's Manual BLANCO LIVIT 5 S CENTRIC Meridian Digital Telephones M3903 and M3904 Quick Reference B10E Mode d`emploi Hoshizaki FS-1001MLH-C User's Manual Operators Guide - iJET panel scanners Manual Usuário - Sweprata Automação Comercial Copyright © All rights reserved.
Failed to retrieve file