freiesmagazin 03/2010 · am 3. november 2009 hat mandriva s.a. wie angekündigt die neue version...

51
freiesMagazin März 2010 Topthemen dieser Ausgabe Mandriva Linux 2010 Seite 5 Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man den Release Notes, so wird die neue Version alle anderen Distributionen in den Schatten stellen, und in der Tat sind neben den üblichen Aktualisierungen einige interessante Neuerungen dabei – allen voran der smarte Desktop. (weiterlesen) Pimp my Desktop Seite 15 Die Arbeitsoberfläche der Linux Desktops ist von Haus aus eine Wüste, die zu 5% aus Panels, Menüs und Startern besteht und zu 95 % ein Hintergrundbild ohne weitere Information oder Funktion zeigt. Viele Anwender sind mit diesem Zustand zufrieden, andere wünschen sich mehr Inhalt auf der Oberfläche. In dem Artikel werden Maßnahmen beschrieben, um den Informati- onsgehalt des Desktops zu erhöhen und ihn optisch ansprechender zu gestalten. (weiterlesen) Die Z-Shell (zsh) – Eine mächtige Alternative zur Bash Seite 22 Die Standardshell auf den meisten Linux-Systemen ist die Bash. Sie ist sehr mächtig und erlaubt es, vie- le Aufgaben zu automatisieren. Dieser Artikel soll sich einer sehr interessanten, noch mächtigeren Shell widmen, der Z-Shell – kurz zsh. (weiterlesen) © freiesMagazin GNU FDL Ausgabe 03/2010 ISSN 1867-7991

Upload: others

Post on 29-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

freiesMagazin Maumlrz 2010

Topthemen dieser Ausgabe

Mandriva Linux 2010 Seite 5Am 3 November 2009 hat Mandriva S A wie angekuumlndigt die neue Version der gleichnamigenLinux-Distribution Mandriva Linux 2010 veroumlffentlicht Glaubt man den Release Notes so wirddie neue Version alle anderen Distributionen in den Schatten stellen und in der Tat sind nebenden uumlblichen Aktualisierungen einige interessante Neuerungen dabei ndash allen voran der smarteDesktop (weiterlesen)

Pimp my Desktop Seite 15Die Arbeitsoberflaumlche der Linux Desktops ist von Haus aus eine Wuumlste die zu 5 aus PanelsMenuumls und Startern besteht und zu 95 ein Hintergrundbild ohne weitere Information oderFunktion zeigt Viele Anwender sind mit diesem Zustand zufrieden andere wuumlnschen sich mehrInhalt auf der Oberflaumlche In dem Artikel werden Maszlignahmen beschrieben um den Informati-onsgehalt des Desktops zu erhoumlhen und ihn optisch ansprechender zu gestalten (weiterlesen)

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash Seite 22Die Standardshell auf den meisten Linux-Systemen ist die Bash Sie ist sehr maumlchtig und erlaubt es vie-le Aufgaben zu automatisieren Dieser Artikel soll sich einer sehr interessanten noch maumlchtigeren Shellwidmen der Z-Shell ndash kurz zsh (weiterlesen)

copy freiesMagazin GNU FDL Ausgabe 032010 ISSN 1867-7991

MAGAZIN

Editorial

Open Source in verschiedenen Variationen

Open Source ist boumlseBewegte letzten Monat noch die Zugriffssper-rung gewisser Staaten auf den Quellcode derbei SourceForge [1] lagert die Gemuumlter (siehebdquoEditorialldquo freiesMagazin 022010 [2]) sorgt die-sen Monat ein Antrag der International Intel-lectual Property Alliance (IIPA) ndash die entgegendes Namens nicht international arbeitet son-dern eine rein US-amerikanische Instituition istndash fuumlr Aufregung Diese hat sich an das US-Handelsministerium gewandt um alle Laumlnderdie Open-Source-Software empfehlen und ein-setzen auf eine gesonderte Beobachtungslistezu setzen denn Open Source sei eine Gefaumlhr-dung geistigen Eigentums (bdquoIntellectual Proper-tyldquo) [3]

Hinter diesem Antrag steht natuumlrlich die Angstder IIPA dass Laumlnder verstaumlrkt die eingesetzteSoftware selbst anpassen und sich nicht mehrin die Abhaumlngigkeit eines proprietaumlren Software-Herstellers begeben bei dem man bei Fehlernund neuen Funktionen nur hoffen kann dass die-ser sie irgendwann einmal ausbessert bzw um-setzt ndash dann natuumlrlich nur gegen bare Muumlnze

Dass Closed-Source-Software-Hersteller natuumlr-lich dank Open Source an Marktmacht verlierenwerden ist logisch und man kann es der IIPAnicht einmal wirklich vorwerfen dass sie sich andem hohen Ast festklammern auf dem sie sit-

zen ndash der Fall zuruumlck auf den Boden (der Tat-sachen) wuumlrde sehr weh tun Was aber Open-Source-Software mit Piraterie zu tun haben sollist unklar Und auch das Copyright wird ndash ne-ben den verschiedenen Lizenzen ndash in der Open-Source-Szene extrem geachtet Man darf nichtvergessen Die meisten Open-Source-Lizenzenwie die bekannte GNU General Public Licen-se [4] sind eine Erweiterung des Copyrightskein Ersatz Sie stellen sicher dass der Urhe-ber (bdquoCopyright-Holderldquo) der Software immer ge-nannt wird und auch nicht das Recht an seinemCode verliert Daneben gestatten solche Lizen-zen aber trotz dieser bdquoEinschraumlnkungldquo des Copy-rights die weitere Nutzung und Veraumlnderung vonQuellcode was eben den Kern der Open-Source-Software-Entwicklung ausmacht Aus diesemGrund spricht man auch von einem Copyleft

Ernst nehmen kann man den Antrag der IIPA da-her nicht selbst wenn er von der US-Regierungakzeptiert werden sollte

Open Source ist (wieder) gutUnd noch einmal zuruumlck zu SourceForge Kurznach unserem Editorial letzten Monat kam amMontag darauf die freudige Nachricht dassSourceForge die Sperre in die Haumlnde seiner Nut-zer legt [5] Jedes Projekt kann in den Einstellun-gen waumlhlen dass jeder Zugriff haben darf DerText laut SourceForge ist

Inhalt

Linux allgemeinMandriva Linux 2010 S 5Der Februar im Kernelruumlckblick S 13

AnleitungenPimp my Desktop S 15Eigene Paketquellen zusammenstellenmit local-apt

S 20

SoftwareDie Z-Shell (zsh) ndash Eine maumlchtigeAlternative zur Bash

S 22

Google Charts ndash Diagramme uumlber dasInternet erstellen

S 27

Vim und das Surround-Plug-in S 33Effektives automatisiertes Bearbeitenvon Daten mit sed

S 36

CommunityRezension GIMP ndash kurz amp gut S 44Rezension Python ndash kurz amp gut S 47

MagazinEditorial S 2Leserbriefe S 48Veranstaltungen S 50Vorschau S 50Impressum S 51

copy freiesMagazin GNU FDL Ausgabe 032010 2

MAGAZIN

bdquoThis project DOES incorporate access callupon or otherwise use encryption Postingof open source encryption is controlled un-der US Export Control Classification Num-ber bdquoECCNldquo 5D002 and must be simulta-neously reported by email to the US go-vernment You are responsible for submit-ting this email report to the US governmentin accordance with procedures described inhttpwwwbisdocgovencryptionPubAvailEncSourceCodeNotifyhtml and Section 74013(e) ofthe Export Administration Regulations (bdquoEARldquo)15 CFR Parts 730-772ldquo

Die Sperre betrifft also vor allem Projekte die mitVerschluumlsselung arbeiten was sicherlich nur einkleiner Bruchteil der SourceForge-Projekte be-trifft Im Nachhinein zeigt dies aber auch dassdie erste globale Sperre seitens SourceForge ab-solut unverhaumlltnismaumlszligig war

Open Source ist verwirrendAuch freiesMagazin muss sich mit Lizenzproble-men herumschlagen Es sind keine Problemeim engeren Sinne nur werden wir ab und angefragt wieso wir fuumlr die Artikel eine so bdquofrei-zuumlgigeldquo Lizenz wie die GNU Free Documenta-tion License [6] einsetzen Die Lizenz erlaubt (inknappen Stichpunkten) einen Artikel

1 anderswo unter Beruumlcksichtigung derGFDL zu verwenden ohne die Zustimmungdes jeweiligen Autors einholen zu muumlssen

2 unveraumlndert fuumlr Print- und Onlinepublika-tionen zu uumlbernehmen Die Kopie muss da-

bei vollstaumlndig erfolgen insbesondere ist derjeweilige Urheber und die Lizenz mit anzuge-ben

3 auch kommerziell zu nutzen also bei-spielsweise eine gedruckte Version zu verkau-fen

4 zu veraumlndern Insbesondere muss dabeiFolgendes gegeben seina) Die veraumlnderte Version oder das neue

Werk muss wieder unter der GFDL lizen-ziert sein

b) Der Autordie Autoren des Originalwerkesmuumlssen genannt werden

Einige Autoren sehen vor allem in Punkt 3 ei-ne Aushoumlhlung ihrer Rechte bzw eine Nicht-wuumlrdigung ihrer kreativen Arbeit ndash man koumlnnteauch bdquoIntellectual Propertyldquo sagen (siehe oben)Es gibt bei solchen Einschaumltzungen aber immerzwei Standpunkte Das bdquoFreeldquo in GFDL gibt ei-nem Lizenznehmer eben sehr viele Freiheiten ndashund das ist etwas was wir bei freiesMagazin ex-plizit wuumlnschen und foumlrdern wollen

Natuumlrlich kann man immer noch daruumlber strei-ten ob ein gemeinfreies Lizenzmodell (bdquoPublicDomainldquo genannt was es im deutschen Rechtaber nicht wirklich gibt) nicht noch viel freier waumlreschlieszliglich waumlre die Wiederverwertung eines Ar-tikels dann an gar keine Beschraumlnkungen mehrgebunden Hierin sehen wir aber wirklich eineNichtwuumlrdigung der kreativen Leistung eines Au-tors Der Urheber eines Werkes muss immer er-halten bleiben

Ob die virale Verbreitung unter der GFDL not-wendig ist daruumlber laumlsst sich diskutieren Ge-gebenfalls waumlre eine Lizenz wie die Creative-Commons-Attribution-Lizenz [7] die bessereWahl Bislang haben wir aber mit der GFDL nurgute Erfahrungen gemacht

Und ja auch eine kommerzielle Verwertung ist er-laubt Nicht zwingend durch freiesMagazin dasProjekt wird (hoffentlich) immer nichtkommerziellbleiben aber eben durch Dritte wie z B gedruck-te Linux-Zeitschriften die sich in der Vergangen-heit des Oumlfteren bei freien Linux-Magazinen (wiezum Beispiel bei dem ehemaligen Yalm [8]) be-dient haben Wir denken solange der Autor (unddie Lizenz) gewahrt werden ist dies okay Die Au-toren in solchen freien Magazin schreiben in derRegel um sich selbst zu verwirklichen anderenzu helfen Ruhm und Ehre einzuheimsen aber inden seltensten Faumlllen um einen finanziellen Ge-winn herauszuschlagen

Daneben ist es immer noch problematisch zu ent-scheiden was genau kommerziell bedeutet Klarist dass der Abdruck in einer Zeitschrift die dannfuumlr 10 Euro uumlber den Ladentisch geht als kom-merziell eingestuft werden kann Aber was ist mitder Veroumlffentlichung in einem Blog auf dem Wer-bung geschaltet ist Ab welchem Ertrag ist so einBlog als kommerziell zu sehen Sobald 1 CentGewinn gemacht wird Oder erst wenn der Ge-winn die Kosten der Webseite uumlberschreitet Die-sem Thema hat sich auch Creative Commonsletztes Jahr angenommen und dazu einen 255-seitigen Bericht veroumlffentlicht [9] Die Essenz Die

copy freiesMagazin GNU FDL Ausgabe 032010 3

MAGAZIN

Ansichten sind sehr unterschiedlich was genauunter bdquokommerziellldquo verstanden wird auch wennsich eine Mehrheit fuumlr den Punkt Gewinnerzie-lung ausspricht (S 167 ff im Bericht) Es reichtalso wenn der Urheber eines NC-Werkes ande-re Ansichten als der Nutzer und Wiederverwerterdes NC-Werkes hat damit es zu einem rechtli-chen Konflikt kommt

Wer also Angst hat dass seine Artikel kommer-ziell ausgebeutet werden koumlnnten kann dieseimmer noch unter eine NonCommercial-Lizenzstellen Nur ist dann leider kein Platz mehrin freiesMagazin dafuumlr (Anmerkung Bei denComics machen wir generelle Ausnahmen undbei den Bildern gelegentlich weil diese nurschmuumlckendes Beiwerk sind und leicht entferntwerden koumlnnen um den Artikel dann bdquokorrektldquoweiterverarbeiten zu koumlnnen)

Wie sehen Sie dieses Thema denn Haumllt Sie dieGFDL vor der Veroumlffentlichung eines Artikels infreiesMagazin ab Oder nutzen Sie selbst keine

NC-Lizenzen fuumlr Ihre verbreiteten Inhalte (z B inBlogs) weil es eine zu groszlige Einschraumlnkung istoder weil nicht klar definiert ist was bdquokommerziellldquobedeutet Wir freuen uns uumlber Ihre Meinung dieSie uumlber den Kommentarlink unten oder direktper E-Mail an sen-den koumlnnen

Aprilausgabe erscheint fruumlherDie meisten werden es sicher wissen Am 4 April2010 ist Ostersonntag Da ein Groszligteil desfreiesMagazin-Teams zu der Zeit mit Ostereiersuchen beschaumlftigt sein wird und kein Maga-zin korrigieren will haben wir uns entschiedendie Aprilausgabe etwas vorzuziehen und die-se einen Tag vor Karfreitag zu veroumlffentlichenUnd wer nun nachrechnet wird feststellen dassdies der 1 April ist Hoffentlich haumllt dann nie-mand die freiesMagazin-Aprilausgabe fuumlr einenScherz

Wir wuumlnschen Ihnen nun viel Spaszlig mit der neuenAusgabe

Ihre freiesMagazin-Redaktion

LINKS

[1] httpwwwsourceforgenet[2] httpwwwfreiesmagazindefreiesMagazin-2010-

02[3] httpwwwgullicomnewslobbyorganisation-

open-source-software-gleich-raubkopie-2010-02-25

[4] httpwwwgnuorglicensesgplhtml[5] httpsourceforgenetblogsome-good-news-

SourceForge-removes-blanket-blocking[6] httpwwwgnuorglicensesfdlhtml[7] httpcreativecommonsorglicensesby30deed

de[8] httpwwwfreiesmagazindeyalm[9] httpwikicreativecommonsorgDefining_

Noncommercial

Das Editorial kommentieren

bdquoSledding Discussionldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom529

copy freiesMagazin GNU FDL Ausgabe 032010 4

DISTRIBUTION

Mandriva Linux 2010 von Thorsten van Lil

Am 3 November 2009 hat MandrivaS A wie angekuumlndigt die neue Versionder gleichnamigen Linux-Distribution

Mandriva Linux 2010 veroumlffentlicht Glaubtman den Release Notes [1] so wird die neueVersion alle anderen Distributionen in denSchatten stellen und in der Tat sind nebenden uumlblichen Aktualisierungen einige inter-essante Neuerungen dabei ndash allen voran dersmarte Desktop

Redaktioneller Hinweis Der Artikel bdquoMandrivaLinux 2010ldquo erschien erstmals bei Pro-Linux [2]und wird unter der GNU Free Documentation Li-cense [3] veroumlffentlicht

Mandriva und die EditionenMandriva Linux gibt es prinzipiell in vier Edi-tionen die Live-CD bdquoOneldquo die Installer-DVDbdquoFreeldquo die kommerzielle Version bdquoPowerpackldquound Mandriva bdquoFlashldquo als USB-Stick

Die Live-CD bdquoOneldquo eignet sich fuumlr all jene diesich noch unsicher sind In der Live-CD sindproprietaumlre Treiber und einige Codecs enthal-ten So laumlsst sich bereits im Live-Modus tes-ten ob die verbaute Hardware erkannt wird undob Mandriva den eigenen Anforderungen genuumlgtMandriva One gibt es dabei als KDE4- und alsGNOME-Version

Mandriva bdquoFreeldquo bietet als Installations-DVD dieFlexibilitaumlt einer Paketauswahl beinhaltet dage-gen aber keine proprietaumlren Treiber und Codecs

da hier nur quelloffene Software verwendet wirdNach oder waumlhrend der Installation lassen sichjedoch mit wenigen Klicks die Software-Quelleneinbinden in denen dann auch proprietaumlre Soft-ware enthalten ist

Mandriva Linux 2010 One mit KDE

Das bdquoPowerpackldquo als kommerzielle Edition istebenfalls eine Installations-DVD enthaumllt jedochbereits die proprietaumlren Treiber und Codecs dieselbst in den Non-Free-Quellen nicht enthaltensind Zudem ist der Fluendo-DVD-Player enthal-ten

Mandriva bdquoFlashldquo ist ein USB-Stick mit persisten-tem Speicher und einigen Codecs

Einen guten ersten Uumlberblick uumlber die Versio-nen erhaumllt man auf der Vergleichsseite vonMandriva [4] Fuumlr komplette Mandriva-Neulingescheint Mandriva bdquoOneldquo als Live-CD beson-ders interessant zu sein Hier im Test werden

Mandriva Linux bdquoFreeldquound bdquoOneldquo verwendet

SoftwareNatuumlrlich kommtMandriva Linux mit deraktuellsten SoftwareAls beliebte Desk-topumgebungen sindGNOME in der Version2281 KDE in Version432 und Xfce in Ver-sion 461 dabei FuumlrNetbooks stehen dieangepassten Oberflauml-chen Sugar und Mob-lin 2 bereit Die Basisvon Mandriva Linux2010 bildet der Ker-

nel 2631 inklusive der uumlblichen Patches vonMandriva Mozillas Browser Firefox wurde aufdie Version 355 OpenOfficeorg (basierend aufdem Projekt Go-OO [5]) auf die Version 311angehoben

Weiterhin wurde zur grafischen Darstellung desStartvorgangs Plymouth ins Boot geholt und er-setzt damit Splashy

copy freiesMagazin GNU FDL Ausgabe 032010 5

DISTRIBUTION

Als grafischer Server wird Xorg 73 mit dem X-Server 165 verwendet Der Pulsbo-Treiber (psb)unterstuumltzt 2-D und 3-D der Intel-Grafikgeraumlte

TesthardwareAls Hardware standen fuumlr den Test ein ThinkpadZ60m auf dem bis dato Mandriva Linux 2009 liefund ein alter Desktop-Rechner mit AMD AthlonXP 2000+ (17 GHz) 512 MB RAM und NVIDIAGForce 440MX zur Verfuumlgung Der zweite Rech-ner dient als Haumlrtetest Hier soll die KDE-Versionals Live-CD verwendet werden KDE4 hat denRuf nicht unbedingt ressourcensparend zu seinAls Live-CD auf einem Rechner mit 512 MB RAMduumlrfte das nicht unbedingt viel Freude bereitenDafuumlr sollte die alte Hardware problemlos er-kannt werden

InstallationBei beiden Installationen ist wenig Uumlberraschen-des zu berichten Sowohl die Live-Installationals auch der Installationsassistent der Free-DVDsind logisch aufgebaut und verlangen wenig Vor-kenntnisse vom Anwender Der Knackpunkt einerInstallation ist jeweils die Partitionierung Hier bie-tet Mandriva zwei Features die das Ganze klarermachen sollen Zum einen werden die drei Op-tionen (Partitionen beibehalten freien Platz derWindows-Partition nutzen und komplette Plattefuumlr Mandriva nutzen) grafisch dargestellt wobeidie Mandriva-Partition jeweils mit einem Sterngekennzeichnet wird Bei der benutzerdefinier-ten Partitionierung besteht zudem die Moumlglich-keit sich den Inhalt der Partitionen anzeigen zu

lassen Als Standard-Dateisystem fuumlr neu ange-legte Partitionen wird Ext4 genutzt

Negativ ist bei der Installation mit der Free-DVDaufgefallen dass keine Liste von Spiegelser-vern bereitstand bzw abgerufen werden konn-te Es wurde lediglich die Fehlermeldung an-gezeigt Anschlieszligend hatte man die Moumlglichkeit

Neues Feature bei der Partitionierung

eine Serveradresse anzugeben Dabei bestandzu dem Zeitpunkt bereits eine Verbindung zumInternet Das war jedoch nicht weiter schlimm dasich nach der Installation die Quellen problemloseinrichten lieszligen Bei der Installation des Boot-

loaders (GRUB 097 mit ext4-Unterstuumltzung) wur-de sowohl Windows als auch das zweite Linux-System auf dem Rechner erkannt

Positiv ist zu erwaumlhnen dass nach der Installa-tion der One-CD ein Dialog erscheint der anbie-tet nicht benoumltigte Sprachpakete und Treiber zudeinstallieren Obwohl in diesem Fall keine Pro-bleme auftraten sollte man bei diesem Schritt

stets vorsichtig sein undsich die Liste der zu ent-fernenden Pakete gut anse-hen

Beim ersten Neustart nachder Installation wird nochder Benutzer eingerichtetund ein Root-Passwort fest-gelegt Anschlieszligend er-scheint ein Wizard der einpaar Fragen stellt und bit-tet die Hardwareliste anMandriva zu senden Lei-der ist der bdquoCancelldquo-Buttonetwas versteckt am unte-ren rechten Rand

Wer die Umwelt schonenwill oder kein optischesLaufwerk besitzt kann sichsowohl die Live-CD als

auch die Free-DVD auf einen USB-Stick schie-ben Als Hilfsmittel dazu wird Mandriva-Seed [6]angeboten Mandriva-Seed gibt es als Windows-und als Linux-Version und macht das Aufspielenauf Sticks kinderleicht

copy freiesMagazin GNU FDL Ausgabe 032010 6

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 2: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

MAGAZIN

Editorial

Open Source in verschiedenen Variationen

Open Source ist boumlseBewegte letzten Monat noch die Zugriffssper-rung gewisser Staaten auf den Quellcode derbei SourceForge [1] lagert die Gemuumlter (siehebdquoEditorialldquo freiesMagazin 022010 [2]) sorgt die-sen Monat ein Antrag der International Intel-lectual Property Alliance (IIPA) ndash die entgegendes Namens nicht international arbeitet son-dern eine rein US-amerikanische Instituition istndash fuumlr Aufregung Diese hat sich an das US-Handelsministerium gewandt um alle Laumlnderdie Open-Source-Software empfehlen und ein-setzen auf eine gesonderte Beobachtungslistezu setzen denn Open Source sei eine Gefaumlhr-dung geistigen Eigentums (bdquoIntellectual Proper-tyldquo) [3]

Hinter diesem Antrag steht natuumlrlich die Angstder IIPA dass Laumlnder verstaumlrkt die eingesetzteSoftware selbst anpassen und sich nicht mehrin die Abhaumlngigkeit eines proprietaumlren Software-Herstellers begeben bei dem man bei Fehlernund neuen Funktionen nur hoffen kann dass die-ser sie irgendwann einmal ausbessert bzw um-setzt ndash dann natuumlrlich nur gegen bare Muumlnze

Dass Closed-Source-Software-Hersteller natuumlr-lich dank Open Source an Marktmacht verlierenwerden ist logisch und man kann es der IIPAnicht einmal wirklich vorwerfen dass sie sich andem hohen Ast festklammern auf dem sie sit-

zen ndash der Fall zuruumlck auf den Boden (der Tat-sachen) wuumlrde sehr weh tun Was aber Open-Source-Software mit Piraterie zu tun haben sollist unklar Und auch das Copyright wird ndash ne-ben den verschiedenen Lizenzen ndash in der Open-Source-Szene extrem geachtet Man darf nichtvergessen Die meisten Open-Source-Lizenzenwie die bekannte GNU General Public Licen-se [4] sind eine Erweiterung des Copyrightskein Ersatz Sie stellen sicher dass der Urhe-ber (bdquoCopyright-Holderldquo) der Software immer ge-nannt wird und auch nicht das Recht an seinemCode verliert Daneben gestatten solche Lizen-zen aber trotz dieser bdquoEinschraumlnkungldquo des Copy-rights die weitere Nutzung und Veraumlnderung vonQuellcode was eben den Kern der Open-Source-Software-Entwicklung ausmacht Aus diesemGrund spricht man auch von einem Copyleft

Ernst nehmen kann man den Antrag der IIPA da-her nicht selbst wenn er von der US-Regierungakzeptiert werden sollte

Open Source ist (wieder) gutUnd noch einmal zuruumlck zu SourceForge Kurznach unserem Editorial letzten Monat kam amMontag darauf die freudige Nachricht dassSourceForge die Sperre in die Haumlnde seiner Nut-zer legt [5] Jedes Projekt kann in den Einstellun-gen waumlhlen dass jeder Zugriff haben darf DerText laut SourceForge ist

Inhalt

Linux allgemeinMandriva Linux 2010 S 5Der Februar im Kernelruumlckblick S 13

AnleitungenPimp my Desktop S 15Eigene Paketquellen zusammenstellenmit local-apt

S 20

SoftwareDie Z-Shell (zsh) ndash Eine maumlchtigeAlternative zur Bash

S 22

Google Charts ndash Diagramme uumlber dasInternet erstellen

S 27

Vim und das Surround-Plug-in S 33Effektives automatisiertes Bearbeitenvon Daten mit sed

S 36

CommunityRezension GIMP ndash kurz amp gut S 44Rezension Python ndash kurz amp gut S 47

MagazinEditorial S 2Leserbriefe S 48Veranstaltungen S 50Vorschau S 50Impressum S 51

copy freiesMagazin GNU FDL Ausgabe 032010 2

MAGAZIN

bdquoThis project DOES incorporate access callupon or otherwise use encryption Postingof open source encryption is controlled un-der US Export Control Classification Num-ber bdquoECCNldquo 5D002 and must be simulta-neously reported by email to the US go-vernment You are responsible for submit-ting this email report to the US governmentin accordance with procedures described inhttpwwwbisdocgovencryptionPubAvailEncSourceCodeNotifyhtml and Section 74013(e) ofthe Export Administration Regulations (bdquoEARldquo)15 CFR Parts 730-772ldquo

Die Sperre betrifft also vor allem Projekte die mitVerschluumlsselung arbeiten was sicherlich nur einkleiner Bruchteil der SourceForge-Projekte be-trifft Im Nachhinein zeigt dies aber auch dassdie erste globale Sperre seitens SourceForge ab-solut unverhaumlltnismaumlszligig war

Open Source ist verwirrendAuch freiesMagazin muss sich mit Lizenzproble-men herumschlagen Es sind keine Problemeim engeren Sinne nur werden wir ab und angefragt wieso wir fuumlr die Artikel eine so bdquofrei-zuumlgigeldquo Lizenz wie die GNU Free Documenta-tion License [6] einsetzen Die Lizenz erlaubt (inknappen Stichpunkten) einen Artikel

1 anderswo unter Beruumlcksichtigung derGFDL zu verwenden ohne die Zustimmungdes jeweiligen Autors einholen zu muumlssen

2 unveraumlndert fuumlr Print- und Onlinepublika-tionen zu uumlbernehmen Die Kopie muss da-

bei vollstaumlndig erfolgen insbesondere ist derjeweilige Urheber und die Lizenz mit anzuge-ben

3 auch kommerziell zu nutzen also bei-spielsweise eine gedruckte Version zu verkau-fen

4 zu veraumlndern Insbesondere muss dabeiFolgendes gegeben seina) Die veraumlnderte Version oder das neue

Werk muss wieder unter der GFDL lizen-ziert sein

b) Der Autordie Autoren des Originalwerkesmuumlssen genannt werden

Einige Autoren sehen vor allem in Punkt 3 ei-ne Aushoumlhlung ihrer Rechte bzw eine Nicht-wuumlrdigung ihrer kreativen Arbeit ndash man koumlnnteauch bdquoIntellectual Propertyldquo sagen (siehe oben)Es gibt bei solchen Einschaumltzungen aber immerzwei Standpunkte Das bdquoFreeldquo in GFDL gibt ei-nem Lizenznehmer eben sehr viele Freiheiten ndashund das ist etwas was wir bei freiesMagazin ex-plizit wuumlnschen und foumlrdern wollen

Natuumlrlich kann man immer noch daruumlber strei-ten ob ein gemeinfreies Lizenzmodell (bdquoPublicDomainldquo genannt was es im deutschen Rechtaber nicht wirklich gibt) nicht noch viel freier waumlreschlieszliglich waumlre die Wiederverwertung eines Ar-tikels dann an gar keine Beschraumlnkungen mehrgebunden Hierin sehen wir aber wirklich eineNichtwuumlrdigung der kreativen Leistung eines Au-tors Der Urheber eines Werkes muss immer er-halten bleiben

Ob die virale Verbreitung unter der GFDL not-wendig ist daruumlber laumlsst sich diskutieren Ge-gebenfalls waumlre eine Lizenz wie die Creative-Commons-Attribution-Lizenz [7] die bessereWahl Bislang haben wir aber mit der GFDL nurgute Erfahrungen gemacht

Und ja auch eine kommerzielle Verwertung ist er-laubt Nicht zwingend durch freiesMagazin dasProjekt wird (hoffentlich) immer nichtkommerziellbleiben aber eben durch Dritte wie z B gedruck-te Linux-Zeitschriften die sich in der Vergangen-heit des Oumlfteren bei freien Linux-Magazinen (wiezum Beispiel bei dem ehemaligen Yalm [8]) be-dient haben Wir denken solange der Autor (unddie Lizenz) gewahrt werden ist dies okay Die Au-toren in solchen freien Magazin schreiben in derRegel um sich selbst zu verwirklichen anderenzu helfen Ruhm und Ehre einzuheimsen aber inden seltensten Faumlllen um einen finanziellen Ge-winn herauszuschlagen

Daneben ist es immer noch problematisch zu ent-scheiden was genau kommerziell bedeutet Klarist dass der Abdruck in einer Zeitschrift die dannfuumlr 10 Euro uumlber den Ladentisch geht als kom-merziell eingestuft werden kann Aber was ist mitder Veroumlffentlichung in einem Blog auf dem Wer-bung geschaltet ist Ab welchem Ertrag ist so einBlog als kommerziell zu sehen Sobald 1 CentGewinn gemacht wird Oder erst wenn der Ge-winn die Kosten der Webseite uumlberschreitet Die-sem Thema hat sich auch Creative Commonsletztes Jahr angenommen und dazu einen 255-seitigen Bericht veroumlffentlicht [9] Die Essenz Die

copy freiesMagazin GNU FDL Ausgabe 032010 3

MAGAZIN

Ansichten sind sehr unterschiedlich was genauunter bdquokommerziellldquo verstanden wird auch wennsich eine Mehrheit fuumlr den Punkt Gewinnerzie-lung ausspricht (S 167 ff im Bericht) Es reichtalso wenn der Urheber eines NC-Werkes ande-re Ansichten als der Nutzer und Wiederverwerterdes NC-Werkes hat damit es zu einem rechtli-chen Konflikt kommt

Wer also Angst hat dass seine Artikel kommer-ziell ausgebeutet werden koumlnnten kann dieseimmer noch unter eine NonCommercial-Lizenzstellen Nur ist dann leider kein Platz mehrin freiesMagazin dafuumlr (Anmerkung Bei denComics machen wir generelle Ausnahmen undbei den Bildern gelegentlich weil diese nurschmuumlckendes Beiwerk sind und leicht entferntwerden koumlnnen um den Artikel dann bdquokorrektldquoweiterverarbeiten zu koumlnnen)

Wie sehen Sie dieses Thema denn Haumllt Sie dieGFDL vor der Veroumlffentlichung eines Artikels infreiesMagazin ab Oder nutzen Sie selbst keine

NC-Lizenzen fuumlr Ihre verbreiteten Inhalte (z B inBlogs) weil es eine zu groszlige Einschraumlnkung istoder weil nicht klar definiert ist was bdquokommerziellldquobedeutet Wir freuen uns uumlber Ihre Meinung dieSie uumlber den Kommentarlink unten oder direktper E-Mail an sen-den koumlnnen

Aprilausgabe erscheint fruumlherDie meisten werden es sicher wissen Am 4 April2010 ist Ostersonntag Da ein Groszligteil desfreiesMagazin-Teams zu der Zeit mit Ostereiersuchen beschaumlftigt sein wird und kein Maga-zin korrigieren will haben wir uns entschiedendie Aprilausgabe etwas vorzuziehen und die-se einen Tag vor Karfreitag zu veroumlffentlichenUnd wer nun nachrechnet wird feststellen dassdies der 1 April ist Hoffentlich haumllt dann nie-mand die freiesMagazin-Aprilausgabe fuumlr einenScherz

Wir wuumlnschen Ihnen nun viel Spaszlig mit der neuenAusgabe

Ihre freiesMagazin-Redaktion

LINKS

[1] httpwwwsourceforgenet[2] httpwwwfreiesmagazindefreiesMagazin-2010-

02[3] httpwwwgullicomnewslobbyorganisation-

open-source-software-gleich-raubkopie-2010-02-25

[4] httpwwwgnuorglicensesgplhtml[5] httpsourceforgenetblogsome-good-news-

SourceForge-removes-blanket-blocking[6] httpwwwgnuorglicensesfdlhtml[7] httpcreativecommonsorglicensesby30deed

de[8] httpwwwfreiesmagazindeyalm[9] httpwikicreativecommonsorgDefining_

Noncommercial

Das Editorial kommentieren

bdquoSledding Discussionldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom529

copy freiesMagazin GNU FDL Ausgabe 032010 4

DISTRIBUTION

Mandriva Linux 2010 von Thorsten van Lil

Am 3 November 2009 hat MandrivaS A wie angekuumlndigt die neue Versionder gleichnamigen Linux-Distribution

Mandriva Linux 2010 veroumlffentlicht Glaubtman den Release Notes [1] so wird die neueVersion alle anderen Distributionen in denSchatten stellen und in der Tat sind nebenden uumlblichen Aktualisierungen einige inter-essante Neuerungen dabei ndash allen voran dersmarte Desktop

Redaktioneller Hinweis Der Artikel bdquoMandrivaLinux 2010ldquo erschien erstmals bei Pro-Linux [2]und wird unter der GNU Free Documentation Li-cense [3] veroumlffentlicht

Mandriva und die EditionenMandriva Linux gibt es prinzipiell in vier Edi-tionen die Live-CD bdquoOneldquo die Installer-DVDbdquoFreeldquo die kommerzielle Version bdquoPowerpackldquound Mandriva bdquoFlashldquo als USB-Stick

Die Live-CD bdquoOneldquo eignet sich fuumlr all jene diesich noch unsicher sind In der Live-CD sindproprietaumlre Treiber und einige Codecs enthal-ten So laumlsst sich bereits im Live-Modus tes-ten ob die verbaute Hardware erkannt wird undob Mandriva den eigenen Anforderungen genuumlgtMandriva One gibt es dabei als KDE4- und alsGNOME-Version

Mandriva bdquoFreeldquo bietet als Installations-DVD dieFlexibilitaumlt einer Paketauswahl beinhaltet dage-gen aber keine proprietaumlren Treiber und Codecs

da hier nur quelloffene Software verwendet wirdNach oder waumlhrend der Installation lassen sichjedoch mit wenigen Klicks die Software-Quelleneinbinden in denen dann auch proprietaumlre Soft-ware enthalten ist

Mandriva Linux 2010 One mit KDE

Das bdquoPowerpackldquo als kommerzielle Edition istebenfalls eine Installations-DVD enthaumllt jedochbereits die proprietaumlren Treiber und Codecs dieselbst in den Non-Free-Quellen nicht enthaltensind Zudem ist der Fluendo-DVD-Player enthal-ten

Mandriva bdquoFlashldquo ist ein USB-Stick mit persisten-tem Speicher und einigen Codecs

Einen guten ersten Uumlberblick uumlber die Versio-nen erhaumllt man auf der Vergleichsseite vonMandriva [4] Fuumlr komplette Mandriva-Neulingescheint Mandriva bdquoOneldquo als Live-CD beson-ders interessant zu sein Hier im Test werden

Mandriva Linux bdquoFreeldquound bdquoOneldquo verwendet

SoftwareNatuumlrlich kommtMandriva Linux mit deraktuellsten SoftwareAls beliebte Desk-topumgebungen sindGNOME in der Version2281 KDE in Version432 und Xfce in Ver-sion 461 dabei FuumlrNetbooks stehen dieangepassten Oberflauml-chen Sugar und Mob-lin 2 bereit Die Basisvon Mandriva Linux2010 bildet der Ker-

nel 2631 inklusive der uumlblichen Patches vonMandriva Mozillas Browser Firefox wurde aufdie Version 355 OpenOfficeorg (basierend aufdem Projekt Go-OO [5]) auf die Version 311angehoben

Weiterhin wurde zur grafischen Darstellung desStartvorgangs Plymouth ins Boot geholt und er-setzt damit Splashy

copy freiesMagazin GNU FDL Ausgabe 032010 5

DISTRIBUTION

Als grafischer Server wird Xorg 73 mit dem X-Server 165 verwendet Der Pulsbo-Treiber (psb)unterstuumltzt 2-D und 3-D der Intel-Grafikgeraumlte

TesthardwareAls Hardware standen fuumlr den Test ein ThinkpadZ60m auf dem bis dato Mandriva Linux 2009 liefund ein alter Desktop-Rechner mit AMD AthlonXP 2000+ (17 GHz) 512 MB RAM und NVIDIAGForce 440MX zur Verfuumlgung Der zweite Rech-ner dient als Haumlrtetest Hier soll die KDE-Versionals Live-CD verwendet werden KDE4 hat denRuf nicht unbedingt ressourcensparend zu seinAls Live-CD auf einem Rechner mit 512 MB RAMduumlrfte das nicht unbedingt viel Freude bereitenDafuumlr sollte die alte Hardware problemlos er-kannt werden

InstallationBei beiden Installationen ist wenig Uumlberraschen-des zu berichten Sowohl die Live-Installationals auch der Installationsassistent der Free-DVDsind logisch aufgebaut und verlangen wenig Vor-kenntnisse vom Anwender Der Knackpunkt einerInstallation ist jeweils die Partitionierung Hier bie-tet Mandriva zwei Features die das Ganze klarermachen sollen Zum einen werden die drei Op-tionen (Partitionen beibehalten freien Platz derWindows-Partition nutzen und komplette Plattefuumlr Mandriva nutzen) grafisch dargestellt wobeidie Mandriva-Partition jeweils mit einem Sterngekennzeichnet wird Bei der benutzerdefinier-ten Partitionierung besteht zudem die Moumlglich-keit sich den Inhalt der Partitionen anzeigen zu

lassen Als Standard-Dateisystem fuumlr neu ange-legte Partitionen wird Ext4 genutzt

Negativ ist bei der Installation mit der Free-DVDaufgefallen dass keine Liste von Spiegelser-vern bereitstand bzw abgerufen werden konn-te Es wurde lediglich die Fehlermeldung an-gezeigt Anschlieszligend hatte man die Moumlglichkeit

Neues Feature bei der Partitionierung

eine Serveradresse anzugeben Dabei bestandzu dem Zeitpunkt bereits eine Verbindung zumInternet Das war jedoch nicht weiter schlimm dasich nach der Installation die Quellen problemloseinrichten lieszligen Bei der Installation des Boot-

loaders (GRUB 097 mit ext4-Unterstuumltzung) wur-de sowohl Windows als auch das zweite Linux-System auf dem Rechner erkannt

Positiv ist zu erwaumlhnen dass nach der Installa-tion der One-CD ein Dialog erscheint der anbie-tet nicht benoumltigte Sprachpakete und Treiber zudeinstallieren Obwohl in diesem Fall keine Pro-bleme auftraten sollte man bei diesem Schritt

stets vorsichtig sein undsich die Liste der zu ent-fernenden Pakete gut anse-hen

Beim ersten Neustart nachder Installation wird nochder Benutzer eingerichtetund ein Root-Passwort fest-gelegt Anschlieszligend er-scheint ein Wizard der einpaar Fragen stellt und bit-tet die Hardwareliste anMandriva zu senden Lei-der ist der bdquoCancelldquo-Buttonetwas versteckt am unte-ren rechten Rand

Wer die Umwelt schonenwill oder kein optischesLaufwerk besitzt kann sichsowohl die Live-CD als

auch die Free-DVD auf einen USB-Stick schie-ben Als Hilfsmittel dazu wird Mandriva-Seed [6]angeboten Mandriva-Seed gibt es als Windows-und als Linux-Version und macht das Aufspielenauf Sticks kinderleicht

copy freiesMagazin GNU FDL Ausgabe 032010 6

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 3: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

MAGAZIN

bdquoThis project DOES incorporate access callupon or otherwise use encryption Postingof open source encryption is controlled un-der US Export Control Classification Num-ber bdquoECCNldquo 5D002 and must be simulta-neously reported by email to the US go-vernment You are responsible for submit-ting this email report to the US governmentin accordance with procedures described inhttpwwwbisdocgovencryptionPubAvailEncSourceCodeNotifyhtml and Section 74013(e) ofthe Export Administration Regulations (bdquoEARldquo)15 CFR Parts 730-772ldquo

Die Sperre betrifft also vor allem Projekte die mitVerschluumlsselung arbeiten was sicherlich nur einkleiner Bruchteil der SourceForge-Projekte be-trifft Im Nachhinein zeigt dies aber auch dassdie erste globale Sperre seitens SourceForge ab-solut unverhaumlltnismaumlszligig war

Open Source ist verwirrendAuch freiesMagazin muss sich mit Lizenzproble-men herumschlagen Es sind keine Problemeim engeren Sinne nur werden wir ab und angefragt wieso wir fuumlr die Artikel eine so bdquofrei-zuumlgigeldquo Lizenz wie die GNU Free Documenta-tion License [6] einsetzen Die Lizenz erlaubt (inknappen Stichpunkten) einen Artikel

1 anderswo unter Beruumlcksichtigung derGFDL zu verwenden ohne die Zustimmungdes jeweiligen Autors einholen zu muumlssen

2 unveraumlndert fuumlr Print- und Onlinepublika-tionen zu uumlbernehmen Die Kopie muss da-

bei vollstaumlndig erfolgen insbesondere ist derjeweilige Urheber und die Lizenz mit anzuge-ben

3 auch kommerziell zu nutzen also bei-spielsweise eine gedruckte Version zu verkau-fen

4 zu veraumlndern Insbesondere muss dabeiFolgendes gegeben seina) Die veraumlnderte Version oder das neue

Werk muss wieder unter der GFDL lizen-ziert sein

b) Der Autordie Autoren des Originalwerkesmuumlssen genannt werden

Einige Autoren sehen vor allem in Punkt 3 ei-ne Aushoumlhlung ihrer Rechte bzw eine Nicht-wuumlrdigung ihrer kreativen Arbeit ndash man koumlnnteauch bdquoIntellectual Propertyldquo sagen (siehe oben)Es gibt bei solchen Einschaumltzungen aber immerzwei Standpunkte Das bdquoFreeldquo in GFDL gibt ei-nem Lizenznehmer eben sehr viele Freiheiten ndashund das ist etwas was wir bei freiesMagazin ex-plizit wuumlnschen und foumlrdern wollen

Natuumlrlich kann man immer noch daruumlber strei-ten ob ein gemeinfreies Lizenzmodell (bdquoPublicDomainldquo genannt was es im deutschen Rechtaber nicht wirklich gibt) nicht noch viel freier waumlreschlieszliglich waumlre die Wiederverwertung eines Ar-tikels dann an gar keine Beschraumlnkungen mehrgebunden Hierin sehen wir aber wirklich eineNichtwuumlrdigung der kreativen Leistung eines Au-tors Der Urheber eines Werkes muss immer er-halten bleiben

Ob die virale Verbreitung unter der GFDL not-wendig ist daruumlber laumlsst sich diskutieren Ge-gebenfalls waumlre eine Lizenz wie die Creative-Commons-Attribution-Lizenz [7] die bessereWahl Bislang haben wir aber mit der GFDL nurgute Erfahrungen gemacht

Und ja auch eine kommerzielle Verwertung ist er-laubt Nicht zwingend durch freiesMagazin dasProjekt wird (hoffentlich) immer nichtkommerziellbleiben aber eben durch Dritte wie z B gedruck-te Linux-Zeitschriften die sich in der Vergangen-heit des Oumlfteren bei freien Linux-Magazinen (wiezum Beispiel bei dem ehemaligen Yalm [8]) be-dient haben Wir denken solange der Autor (unddie Lizenz) gewahrt werden ist dies okay Die Au-toren in solchen freien Magazin schreiben in derRegel um sich selbst zu verwirklichen anderenzu helfen Ruhm und Ehre einzuheimsen aber inden seltensten Faumlllen um einen finanziellen Ge-winn herauszuschlagen

Daneben ist es immer noch problematisch zu ent-scheiden was genau kommerziell bedeutet Klarist dass der Abdruck in einer Zeitschrift die dannfuumlr 10 Euro uumlber den Ladentisch geht als kom-merziell eingestuft werden kann Aber was ist mitder Veroumlffentlichung in einem Blog auf dem Wer-bung geschaltet ist Ab welchem Ertrag ist so einBlog als kommerziell zu sehen Sobald 1 CentGewinn gemacht wird Oder erst wenn der Ge-winn die Kosten der Webseite uumlberschreitet Die-sem Thema hat sich auch Creative Commonsletztes Jahr angenommen und dazu einen 255-seitigen Bericht veroumlffentlicht [9] Die Essenz Die

copy freiesMagazin GNU FDL Ausgabe 032010 3

MAGAZIN

Ansichten sind sehr unterschiedlich was genauunter bdquokommerziellldquo verstanden wird auch wennsich eine Mehrheit fuumlr den Punkt Gewinnerzie-lung ausspricht (S 167 ff im Bericht) Es reichtalso wenn der Urheber eines NC-Werkes ande-re Ansichten als der Nutzer und Wiederverwerterdes NC-Werkes hat damit es zu einem rechtli-chen Konflikt kommt

Wer also Angst hat dass seine Artikel kommer-ziell ausgebeutet werden koumlnnten kann dieseimmer noch unter eine NonCommercial-Lizenzstellen Nur ist dann leider kein Platz mehrin freiesMagazin dafuumlr (Anmerkung Bei denComics machen wir generelle Ausnahmen undbei den Bildern gelegentlich weil diese nurschmuumlckendes Beiwerk sind und leicht entferntwerden koumlnnen um den Artikel dann bdquokorrektldquoweiterverarbeiten zu koumlnnen)

Wie sehen Sie dieses Thema denn Haumllt Sie dieGFDL vor der Veroumlffentlichung eines Artikels infreiesMagazin ab Oder nutzen Sie selbst keine

NC-Lizenzen fuumlr Ihre verbreiteten Inhalte (z B inBlogs) weil es eine zu groszlige Einschraumlnkung istoder weil nicht klar definiert ist was bdquokommerziellldquobedeutet Wir freuen uns uumlber Ihre Meinung dieSie uumlber den Kommentarlink unten oder direktper E-Mail an sen-den koumlnnen

Aprilausgabe erscheint fruumlherDie meisten werden es sicher wissen Am 4 April2010 ist Ostersonntag Da ein Groszligteil desfreiesMagazin-Teams zu der Zeit mit Ostereiersuchen beschaumlftigt sein wird und kein Maga-zin korrigieren will haben wir uns entschiedendie Aprilausgabe etwas vorzuziehen und die-se einen Tag vor Karfreitag zu veroumlffentlichenUnd wer nun nachrechnet wird feststellen dassdies der 1 April ist Hoffentlich haumllt dann nie-mand die freiesMagazin-Aprilausgabe fuumlr einenScherz

Wir wuumlnschen Ihnen nun viel Spaszlig mit der neuenAusgabe

Ihre freiesMagazin-Redaktion

LINKS

[1] httpwwwsourceforgenet[2] httpwwwfreiesmagazindefreiesMagazin-2010-

02[3] httpwwwgullicomnewslobbyorganisation-

open-source-software-gleich-raubkopie-2010-02-25

[4] httpwwwgnuorglicensesgplhtml[5] httpsourceforgenetblogsome-good-news-

SourceForge-removes-blanket-blocking[6] httpwwwgnuorglicensesfdlhtml[7] httpcreativecommonsorglicensesby30deed

de[8] httpwwwfreiesmagazindeyalm[9] httpwikicreativecommonsorgDefining_

Noncommercial

Das Editorial kommentieren

bdquoSledding Discussionldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom529

copy freiesMagazin GNU FDL Ausgabe 032010 4

DISTRIBUTION

Mandriva Linux 2010 von Thorsten van Lil

Am 3 November 2009 hat MandrivaS A wie angekuumlndigt die neue Versionder gleichnamigen Linux-Distribution

Mandriva Linux 2010 veroumlffentlicht Glaubtman den Release Notes [1] so wird die neueVersion alle anderen Distributionen in denSchatten stellen und in der Tat sind nebenden uumlblichen Aktualisierungen einige inter-essante Neuerungen dabei ndash allen voran dersmarte Desktop

Redaktioneller Hinweis Der Artikel bdquoMandrivaLinux 2010ldquo erschien erstmals bei Pro-Linux [2]und wird unter der GNU Free Documentation Li-cense [3] veroumlffentlicht

Mandriva und die EditionenMandriva Linux gibt es prinzipiell in vier Edi-tionen die Live-CD bdquoOneldquo die Installer-DVDbdquoFreeldquo die kommerzielle Version bdquoPowerpackldquound Mandriva bdquoFlashldquo als USB-Stick

Die Live-CD bdquoOneldquo eignet sich fuumlr all jene diesich noch unsicher sind In der Live-CD sindproprietaumlre Treiber und einige Codecs enthal-ten So laumlsst sich bereits im Live-Modus tes-ten ob die verbaute Hardware erkannt wird undob Mandriva den eigenen Anforderungen genuumlgtMandriva One gibt es dabei als KDE4- und alsGNOME-Version

Mandriva bdquoFreeldquo bietet als Installations-DVD dieFlexibilitaumlt einer Paketauswahl beinhaltet dage-gen aber keine proprietaumlren Treiber und Codecs

da hier nur quelloffene Software verwendet wirdNach oder waumlhrend der Installation lassen sichjedoch mit wenigen Klicks die Software-Quelleneinbinden in denen dann auch proprietaumlre Soft-ware enthalten ist

Mandriva Linux 2010 One mit KDE

Das bdquoPowerpackldquo als kommerzielle Edition istebenfalls eine Installations-DVD enthaumllt jedochbereits die proprietaumlren Treiber und Codecs dieselbst in den Non-Free-Quellen nicht enthaltensind Zudem ist der Fluendo-DVD-Player enthal-ten

Mandriva bdquoFlashldquo ist ein USB-Stick mit persisten-tem Speicher und einigen Codecs

Einen guten ersten Uumlberblick uumlber die Versio-nen erhaumllt man auf der Vergleichsseite vonMandriva [4] Fuumlr komplette Mandriva-Neulingescheint Mandriva bdquoOneldquo als Live-CD beson-ders interessant zu sein Hier im Test werden

Mandriva Linux bdquoFreeldquound bdquoOneldquo verwendet

SoftwareNatuumlrlich kommtMandriva Linux mit deraktuellsten SoftwareAls beliebte Desk-topumgebungen sindGNOME in der Version2281 KDE in Version432 und Xfce in Ver-sion 461 dabei FuumlrNetbooks stehen dieangepassten Oberflauml-chen Sugar und Mob-lin 2 bereit Die Basisvon Mandriva Linux2010 bildet der Ker-

nel 2631 inklusive der uumlblichen Patches vonMandriva Mozillas Browser Firefox wurde aufdie Version 355 OpenOfficeorg (basierend aufdem Projekt Go-OO [5]) auf die Version 311angehoben

Weiterhin wurde zur grafischen Darstellung desStartvorgangs Plymouth ins Boot geholt und er-setzt damit Splashy

copy freiesMagazin GNU FDL Ausgabe 032010 5

DISTRIBUTION

Als grafischer Server wird Xorg 73 mit dem X-Server 165 verwendet Der Pulsbo-Treiber (psb)unterstuumltzt 2-D und 3-D der Intel-Grafikgeraumlte

TesthardwareAls Hardware standen fuumlr den Test ein ThinkpadZ60m auf dem bis dato Mandriva Linux 2009 liefund ein alter Desktop-Rechner mit AMD AthlonXP 2000+ (17 GHz) 512 MB RAM und NVIDIAGForce 440MX zur Verfuumlgung Der zweite Rech-ner dient als Haumlrtetest Hier soll die KDE-Versionals Live-CD verwendet werden KDE4 hat denRuf nicht unbedingt ressourcensparend zu seinAls Live-CD auf einem Rechner mit 512 MB RAMduumlrfte das nicht unbedingt viel Freude bereitenDafuumlr sollte die alte Hardware problemlos er-kannt werden

InstallationBei beiden Installationen ist wenig Uumlberraschen-des zu berichten Sowohl die Live-Installationals auch der Installationsassistent der Free-DVDsind logisch aufgebaut und verlangen wenig Vor-kenntnisse vom Anwender Der Knackpunkt einerInstallation ist jeweils die Partitionierung Hier bie-tet Mandriva zwei Features die das Ganze klarermachen sollen Zum einen werden die drei Op-tionen (Partitionen beibehalten freien Platz derWindows-Partition nutzen und komplette Plattefuumlr Mandriva nutzen) grafisch dargestellt wobeidie Mandriva-Partition jeweils mit einem Sterngekennzeichnet wird Bei der benutzerdefinier-ten Partitionierung besteht zudem die Moumlglich-keit sich den Inhalt der Partitionen anzeigen zu

lassen Als Standard-Dateisystem fuumlr neu ange-legte Partitionen wird Ext4 genutzt

Negativ ist bei der Installation mit der Free-DVDaufgefallen dass keine Liste von Spiegelser-vern bereitstand bzw abgerufen werden konn-te Es wurde lediglich die Fehlermeldung an-gezeigt Anschlieszligend hatte man die Moumlglichkeit

Neues Feature bei der Partitionierung

eine Serveradresse anzugeben Dabei bestandzu dem Zeitpunkt bereits eine Verbindung zumInternet Das war jedoch nicht weiter schlimm dasich nach der Installation die Quellen problemloseinrichten lieszligen Bei der Installation des Boot-

loaders (GRUB 097 mit ext4-Unterstuumltzung) wur-de sowohl Windows als auch das zweite Linux-System auf dem Rechner erkannt

Positiv ist zu erwaumlhnen dass nach der Installa-tion der One-CD ein Dialog erscheint der anbie-tet nicht benoumltigte Sprachpakete und Treiber zudeinstallieren Obwohl in diesem Fall keine Pro-bleme auftraten sollte man bei diesem Schritt

stets vorsichtig sein undsich die Liste der zu ent-fernenden Pakete gut anse-hen

Beim ersten Neustart nachder Installation wird nochder Benutzer eingerichtetund ein Root-Passwort fest-gelegt Anschlieszligend er-scheint ein Wizard der einpaar Fragen stellt und bit-tet die Hardwareliste anMandriva zu senden Lei-der ist der bdquoCancelldquo-Buttonetwas versteckt am unte-ren rechten Rand

Wer die Umwelt schonenwill oder kein optischesLaufwerk besitzt kann sichsowohl die Live-CD als

auch die Free-DVD auf einen USB-Stick schie-ben Als Hilfsmittel dazu wird Mandriva-Seed [6]angeboten Mandriva-Seed gibt es als Windows-und als Linux-Version und macht das Aufspielenauf Sticks kinderleicht

copy freiesMagazin GNU FDL Ausgabe 032010 6

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 4: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

MAGAZIN

Ansichten sind sehr unterschiedlich was genauunter bdquokommerziellldquo verstanden wird auch wennsich eine Mehrheit fuumlr den Punkt Gewinnerzie-lung ausspricht (S 167 ff im Bericht) Es reichtalso wenn der Urheber eines NC-Werkes ande-re Ansichten als der Nutzer und Wiederverwerterdes NC-Werkes hat damit es zu einem rechtli-chen Konflikt kommt

Wer also Angst hat dass seine Artikel kommer-ziell ausgebeutet werden koumlnnten kann dieseimmer noch unter eine NonCommercial-Lizenzstellen Nur ist dann leider kein Platz mehrin freiesMagazin dafuumlr (Anmerkung Bei denComics machen wir generelle Ausnahmen undbei den Bildern gelegentlich weil diese nurschmuumlckendes Beiwerk sind und leicht entferntwerden koumlnnen um den Artikel dann bdquokorrektldquoweiterverarbeiten zu koumlnnen)

Wie sehen Sie dieses Thema denn Haumllt Sie dieGFDL vor der Veroumlffentlichung eines Artikels infreiesMagazin ab Oder nutzen Sie selbst keine

NC-Lizenzen fuumlr Ihre verbreiteten Inhalte (z B inBlogs) weil es eine zu groszlige Einschraumlnkung istoder weil nicht klar definiert ist was bdquokommerziellldquobedeutet Wir freuen uns uumlber Ihre Meinung dieSie uumlber den Kommentarlink unten oder direktper E-Mail an sen-den koumlnnen

Aprilausgabe erscheint fruumlherDie meisten werden es sicher wissen Am 4 April2010 ist Ostersonntag Da ein Groszligteil desfreiesMagazin-Teams zu der Zeit mit Ostereiersuchen beschaumlftigt sein wird und kein Maga-zin korrigieren will haben wir uns entschiedendie Aprilausgabe etwas vorzuziehen und die-se einen Tag vor Karfreitag zu veroumlffentlichenUnd wer nun nachrechnet wird feststellen dassdies der 1 April ist Hoffentlich haumllt dann nie-mand die freiesMagazin-Aprilausgabe fuumlr einenScherz

Wir wuumlnschen Ihnen nun viel Spaszlig mit der neuenAusgabe

Ihre freiesMagazin-Redaktion

LINKS

[1] httpwwwsourceforgenet[2] httpwwwfreiesmagazindefreiesMagazin-2010-

02[3] httpwwwgullicomnewslobbyorganisation-

open-source-software-gleich-raubkopie-2010-02-25

[4] httpwwwgnuorglicensesgplhtml[5] httpsourceforgenetblogsome-good-news-

SourceForge-removes-blanket-blocking[6] httpwwwgnuorglicensesfdlhtml[7] httpcreativecommonsorglicensesby30deed

de[8] httpwwwfreiesmagazindeyalm[9] httpwikicreativecommonsorgDefining_

Noncommercial

Das Editorial kommentieren

bdquoSledding Discussionldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom529

copy freiesMagazin GNU FDL Ausgabe 032010 4

DISTRIBUTION

Mandriva Linux 2010 von Thorsten van Lil

Am 3 November 2009 hat MandrivaS A wie angekuumlndigt die neue Versionder gleichnamigen Linux-Distribution

Mandriva Linux 2010 veroumlffentlicht Glaubtman den Release Notes [1] so wird die neueVersion alle anderen Distributionen in denSchatten stellen und in der Tat sind nebenden uumlblichen Aktualisierungen einige inter-essante Neuerungen dabei ndash allen voran dersmarte Desktop

Redaktioneller Hinweis Der Artikel bdquoMandrivaLinux 2010ldquo erschien erstmals bei Pro-Linux [2]und wird unter der GNU Free Documentation Li-cense [3] veroumlffentlicht

Mandriva und die EditionenMandriva Linux gibt es prinzipiell in vier Edi-tionen die Live-CD bdquoOneldquo die Installer-DVDbdquoFreeldquo die kommerzielle Version bdquoPowerpackldquound Mandriva bdquoFlashldquo als USB-Stick

Die Live-CD bdquoOneldquo eignet sich fuumlr all jene diesich noch unsicher sind In der Live-CD sindproprietaumlre Treiber und einige Codecs enthal-ten So laumlsst sich bereits im Live-Modus tes-ten ob die verbaute Hardware erkannt wird undob Mandriva den eigenen Anforderungen genuumlgtMandriva One gibt es dabei als KDE4- und alsGNOME-Version

Mandriva bdquoFreeldquo bietet als Installations-DVD dieFlexibilitaumlt einer Paketauswahl beinhaltet dage-gen aber keine proprietaumlren Treiber und Codecs

da hier nur quelloffene Software verwendet wirdNach oder waumlhrend der Installation lassen sichjedoch mit wenigen Klicks die Software-Quelleneinbinden in denen dann auch proprietaumlre Soft-ware enthalten ist

Mandriva Linux 2010 One mit KDE

Das bdquoPowerpackldquo als kommerzielle Edition istebenfalls eine Installations-DVD enthaumllt jedochbereits die proprietaumlren Treiber und Codecs dieselbst in den Non-Free-Quellen nicht enthaltensind Zudem ist der Fluendo-DVD-Player enthal-ten

Mandriva bdquoFlashldquo ist ein USB-Stick mit persisten-tem Speicher und einigen Codecs

Einen guten ersten Uumlberblick uumlber die Versio-nen erhaumllt man auf der Vergleichsseite vonMandriva [4] Fuumlr komplette Mandriva-Neulingescheint Mandriva bdquoOneldquo als Live-CD beson-ders interessant zu sein Hier im Test werden

Mandriva Linux bdquoFreeldquound bdquoOneldquo verwendet

SoftwareNatuumlrlich kommtMandriva Linux mit deraktuellsten SoftwareAls beliebte Desk-topumgebungen sindGNOME in der Version2281 KDE in Version432 und Xfce in Ver-sion 461 dabei FuumlrNetbooks stehen dieangepassten Oberflauml-chen Sugar und Mob-lin 2 bereit Die Basisvon Mandriva Linux2010 bildet der Ker-

nel 2631 inklusive der uumlblichen Patches vonMandriva Mozillas Browser Firefox wurde aufdie Version 355 OpenOfficeorg (basierend aufdem Projekt Go-OO [5]) auf die Version 311angehoben

Weiterhin wurde zur grafischen Darstellung desStartvorgangs Plymouth ins Boot geholt und er-setzt damit Splashy

copy freiesMagazin GNU FDL Ausgabe 032010 5

DISTRIBUTION

Als grafischer Server wird Xorg 73 mit dem X-Server 165 verwendet Der Pulsbo-Treiber (psb)unterstuumltzt 2-D und 3-D der Intel-Grafikgeraumlte

TesthardwareAls Hardware standen fuumlr den Test ein ThinkpadZ60m auf dem bis dato Mandriva Linux 2009 liefund ein alter Desktop-Rechner mit AMD AthlonXP 2000+ (17 GHz) 512 MB RAM und NVIDIAGForce 440MX zur Verfuumlgung Der zweite Rech-ner dient als Haumlrtetest Hier soll die KDE-Versionals Live-CD verwendet werden KDE4 hat denRuf nicht unbedingt ressourcensparend zu seinAls Live-CD auf einem Rechner mit 512 MB RAMduumlrfte das nicht unbedingt viel Freude bereitenDafuumlr sollte die alte Hardware problemlos er-kannt werden

InstallationBei beiden Installationen ist wenig Uumlberraschen-des zu berichten Sowohl die Live-Installationals auch der Installationsassistent der Free-DVDsind logisch aufgebaut und verlangen wenig Vor-kenntnisse vom Anwender Der Knackpunkt einerInstallation ist jeweils die Partitionierung Hier bie-tet Mandriva zwei Features die das Ganze klarermachen sollen Zum einen werden die drei Op-tionen (Partitionen beibehalten freien Platz derWindows-Partition nutzen und komplette Plattefuumlr Mandriva nutzen) grafisch dargestellt wobeidie Mandriva-Partition jeweils mit einem Sterngekennzeichnet wird Bei der benutzerdefinier-ten Partitionierung besteht zudem die Moumlglich-keit sich den Inhalt der Partitionen anzeigen zu

lassen Als Standard-Dateisystem fuumlr neu ange-legte Partitionen wird Ext4 genutzt

Negativ ist bei der Installation mit der Free-DVDaufgefallen dass keine Liste von Spiegelser-vern bereitstand bzw abgerufen werden konn-te Es wurde lediglich die Fehlermeldung an-gezeigt Anschlieszligend hatte man die Moumlglichkeit

Neues Feature bei der Partitionierung

eine Serveradresse anzugeben Dabei bestandzu dem Zeitpunkt bereits eine Verbindung zumInternet Das war jedoch nicht weiter schlimm dasich nach der Installation die Quellen problemloseinrichten lieszligen Bei der Installation des Boot-

loaders (GRUB 097 mit ext4-Unterstuumltzung) wur-de sowohl Windows als auch das zweite Linux-System auf dem Rechner erkannt

Positiv ist zu erwaumlhnen dass nach der Installa-tion der One-CD ein Dialog erscheint der anbie-tet nicht benoumltigte Sprachpakete und Treiber zudeinstallieren Obwohl in diesem Fall keine Pro-bleme auftraten sollte man bei diesem Schritt

stets vorsichtig sein undsich die Liste der zu ent-fernenden Pakete gut anse-hen

Beim ersten Neustart nachder Installation wird nochder Benutzer eingerichtetund ein Root-Passwort fest-gelegt Anschlieszligend er-scheint ein Wizard der einpaar Fragen stellt und bit-tet die Hardwareliste anMandriva zu senden Lei-der ist der bdquoCancelldquo-Buttonetwas versteckt am unte-ren rechten Rand

Wer die Umwelt schonenwill oder kein optischesLaufwerk besitzt kann sichsowohl die Live-CD als

auch die Free-DVD auf einen USB-Stick schie-ben Als Hilfsmittel dazu wird Mandriva-Seed [6]angeboten Mandriva-Seed gibt es als Windows-und als Linux-Version und macht das Aufspielenauf Sticks kinderleicht

copy freiesMagazin GNU FDL Ausgabe 032010 6

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 5: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

Mandriva Linux 2010 von Thorsten van Lil

Am 3 November 2009 hat MandrivaS A wie angekuumlndigt die neue Versionder gleichnamigen Linux-Distribution

Mandriva Linux 2010 veroumlffentlicht Glaubtman den Release Notes [1] so wird die neueVersion alle anderen Distributionen in denSchatten stellen und in der Tat sind nebenden uumlblichen Aktualisierungen einige inter-essante Neuerungen dabei ndash allen voran dersmarte Desktop

Redaktioneller Hinweis Der Artikel bdquoMandrivaLinux 2010ldquo erschien erstmals bei Pro-Linux [2]und wird unter der GNU Free Documentation Li-cense [3] veroumlffentlicht

Mandriva und die EditionenMandriva Linux gibt es prinzipiell in vier Edi-tionen die Live-CD bdquoOneldquo die Installer-DVDbdquoFreeldquo die kommerzielle Version bdquoPowerpackldquound Mandriva bdquoFlashldquo als USB-Stick

Die Live-CD bdquoOneldquo eignet sich fuumlr all jene diesich noch unsicher sind In der Live-CD sindproprietaumlre Treiber und einige Codecs enthal-ten So laumlsst sich bereits im Live-Modus tes-ten ob die verbaute Hardware erkannt wird undob Mandriva den eigenen Anforderungen genuumlgtMandriva One gibt es dabei als KDE4- und alsGNOME-Version

Mandriva bdquoFreeldquo bietet als Installations-DVD dieFlexibilitaumlt einer Paketauswahl beinhaltet dage-gen aber keine proprietaumlren Treiber und Codecs

da hier nur quelloffene Software verwendet wirdNach oder waumlhrend der Installation lassen sichjedoch mit wenigen Klicks die Software-Quelleneinbinden in denen dann auch proprietaumlre Soft-ware enthalten ist

Mandriva Linux 2010 One mit KDE

Das bdquoPowerpackldquo als kommerzielle Edition istebenfalls eine Installations-DVD enthaumllt jedochbereits die proprietaumlren Treiber und Codecs dieselbst in den Non-Free-Quellen nicht enthaltensind Zudem ist der Fluendo-DVD-Player enthal-ten

Mandriva bdquoFlashldquo ist ein USB-Stick mit persisten-tem Speicher und einigen Codecs

Einen guten ersten Uumlberblick uumlber die Versio-nen erhaumllt man auf der Vergleichsseite vonMandriva [4] Fuumlr komplette Mandriva-Neulingescheint Mandriva bdquoOneldquo als Live-CD beson-ders interessant zu sein Hier im Test werden

Mandriva Linux bdquoFreeldquound bdquoOneldquo verwendet

SoftwareNatuumlrlich kommtMandriva Linux mit deraktuellsten SoftwareAls beliebte Desk-topumgebungen sindGNOME in der Version2281 KDE in Version432 und Xfce in Ver-sion 461 dabei FuumlrNetbooks stehen dieangepassten Oberflauml-chen Sugar und Mob-lin 2 bereit Die Basisvon Mandriva Linux2010 bildet der Ker-

nel 2631 inklusive der uumlblichen Patches vonMandriva Mozillas Browser Firefox wurde aufdie Version 355 OpenOfficeorg (basierend aufdem Projekt Go-OO [5]) auf die Version 311angehoben

Weiterhin wurde zur grafischen Darstellung desStartvorgangs Plymouth ins Boot geholt und er-setzt damit Splashy

copy freiesMagazin GNU FDL Ausgabe 032010 5

DISTRIBUTION

Als grafischer Server wird Xorg 73 mit dem X-Server 165 verwendet Der Pulsbo-Treiber (psb)unterstuumltzt 2-D und 3-D der Intel-Grafikgeraumlte

TesthardwareAls Hardware standen fuumlr den Test ein ThinkpadZ60m auf dem bis dato Mandriva Linux 2009 liefund ein alter Desktop-Rechner mit AMD AthlonXP 2000+ (17 GHz) 512 MB RAM und NVIDIAGForce 440MX zur Verfuumlgung Der zweite Rech-ner dient als Haumlrtetest Hier soll die KDE-Versionals Live-CD verwendet werden KDE4 hat denRuf nicht unbedingt ressourcensparend zu seinAls Live-CD auf einem Rechner mit 512 MB RAMduumlrfte das nicht unbedingt viel Freude bereitenDafuumlr sollte die alte Hardware problemlos er-kannt werden

InstallationBei beiden Installationen ist wenig Uumlberraschen-des zu berichten Sowohl die Live-Installationals auch der Installationsassistent der Free-DVDsind logisch aufgebaut und verlangen wenig Vor-kenntnisse vom Anwender Der Knackpunkt einerInstallation ist jeweils die Partitionierung Hier bie-tet Mandriva zwei Features die das Ganze klarermachen sollen Zum einen werden die drei Op-tionen (Partitionen beibehalten freien Platz derWindows-Partition nutzen und komplette Plattefuumlr Mandriva nutzen) grafisch dargestellt wobeidie Mandriva-Partition jeweils mit einem Sterngekennzeichnet wird Bei der benutzerdefinier-ten Partitionierung besteht zudem die Moumlglich-keit sich den Inhalt der Partitionen anzeigen zu

lassen Als Standard-Dateisystem fuumlr neu ange-legte Partitionen wird Ext4 genutzt

Negativ ist bei der Installation mit der Free-DVDaufgefallen dass keine Liste von Spiegelser-vern bereitstand bzw abgerufen werden konn-te Es wurde lediglich die Fehlermeldung an-gezeigt Anschlieszligend hatte man die Moumlglichkeit

Neues Feature bei der Partitionierung

eine Serveradresse anzugeben Dabei bestandzu dem Zeitpunkt bereits eine Verbindung zumInternet Das war jedoch nicht weiter schlimm dasich nach der Installation die Quellen problemloseinrichten lieszligen Bei der Installation des Boot-

loaders (GRUB 097 mit ext4-Unterstuumltzung) wur-de sowohl Windows als auch das zweite Linux-System auf dem Rechner erkannt

Positiv ist zu erwaumlhnen dass nach der Installa-tion der One-CD ein Dialog erscheint der anbie-tet nicht benoumltigte Sprachpakete und Treiber zudeinstallieren Obwohl in diesem Fall keine Pro-bleme auftraten sollte man bei diesem Schritt

stets vorsichtig sein undsich die Liste der zu ent-fernenden Pakete gut anse-hen

Beim ersten Neustart nachder Installation wird nochder Benutzer eingerichtetund ein Root-Passwort fest-gelegt Anschlieszligend er-scheint ein Wizard der einpaar Fragen stellt und bit-tet die Hardwareliste anMandriva zu senden Lei-der ist der bdquoCancelldquo-Buttonetwas versteckt am unte-ren rechten Rand

Wer die Umwelt schonenwill oder kein optischesLaufwerk besitzt kann sichsowohl die Live-CD als

auch die Free-DVD auf einen USB-Stick schie-ben Als Hilfsmittel dazu wird Mandriva-Seed [6]angeboten Mandriva-Seed gibt es als Windows-und als Linux-Version und macht das Aufspielenauf Sticks kinderleicht

copy freiesMagazin GNU FDL Ausgabe 032010 6

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 6: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

Als grafischer Server wird Xorg 73 mit dem X-Server 165 verwendet Der Pulsbo-Treiber (psb)unterstuumltzt 2-D und 3-D der Intel-Grafikgeraumlte

TesthardwareAls Hardware standen fuumlr den Test ein ThinkpadZ60m auf dem bis dato Mandriva Linux 2009 liefund ein alter Desktop-Rechner mit AMD AthlonXP 2000+ (17 GHz) 512 MB RAM und NVIDIAGForce 440MX zur Verfuumlgung Der zweite Rech-ner dient als Haumlrtetest Hier soll die KDE-Versionals Live-CD verwendet werden KDE4 hat denRuf nicht unbedingt ressourcensparend zu seinAls Live-CD auf einem Rechner mit 512 MB RAMduumlrfte das nicht unbedingt viel Freude bereitenDafuumlr sollte die alte Hardware problemlos er-kannt werden

InstallationBei beiden Installationen ist wenig Uumlberraschen-des zu berichten Sowohl die Live-Installationals auch der Installationsassistent der Free-DVDsind logisch aufgebaut und verlangen wenig Vor-kenntnisse vom Anwender Der Knackpunkt einerInstallation ist jeweils die Partitionierung Hier bie-tet Mandriva zwei Features die das Ganze klarermachen sollen Zum einen werden die drei Op-tionen (Partitionen beibehalten freien Platz derWindows-Partition nutzen und komplette Plattefuumlr Mandriva nutzen) grafisch dargestellt wobeidie Mandriva-Partition jeweils mit einem Sterngekennzeichnet wird Bei der benutzerdefinier-ten Partitionierung besteht zudem die Moumlglich-keit sich den Inhalt der Partitionen anzeigen zu

lassen Als Standard-Dateisystem fuumlr neu ange-legte Partitionen wird Ext4 genutzt

Negativ ist bei der Installation mit der Free-DVDaufgefallen dass keine Liste von Spiegelser-vern bereitstand bzw abgerufen werden konn-te Es wurde lediglich die Fehlermeldung an-gezeigt Anschlieszligend hatte man die Moumlglichkeit

Neues Feature bei der Partitionierung

eine Serveradresse anzugeben Dabei bestandzu dem Zeitpunkt bereits eine Verbindung zumInternet Das war jedoch nicht weiter schlimm dasich nach der Installation die Quellen problemloseinrichten lieszligen Bei der Installation des Boot-

loaders (GRUB 097 mit ext4-Unterstuumltzung) wur-de sowohl Windows als auch das zweite Linux-System auf dem Rechner erkannt

Positiv ist zu erwaumlhnen dass nach der Installa-tion der One-CD ein Dialog erscheint der anbie-tet nicht benoumltigte Sprachpakete und Treiber zudeinstallieren Obwohl in diesem Fall keine Pro-bleme auftraten sollte man bei diesem Schritt

stets vorsichtig sein undsich die Liste der zu ent-fernenden Pakete gut anse-hen

Beim ersten Neustart nachder Installation wird nochder Benutzer eingerichtetund ein Root-Passwort fest-gelegt Anschlieszligend er-scheint ein Wizard der einpaar Fragen stellt und bit-tet die Hardwareliste anMandriva zu senden Lei-der ist der bdquoCancelldquo-Buttonetwas versteckt am unte-ren rechten Rand

Wer die Umwelt schonenwill oder kein optischesLaufwerk besitzt kann sichsowohl die Live-CD als

auch die Free-DVD auf einen USB-Stick schie-ben Als Hilfsmittel dazu wird Mandriva-Seed [6]angeboten Mandriva-Seed gibt es als Windows-und als Linux-Version und macht das Aufspielenauf Sticks kinderleicht

copy freiesMagazin GNU FDL Ausgabe 032010 6

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 7: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

Erscheinungsbild und erster Eindruck

Nach der Installation startet Mandriva erfreulichzuumlgig Vor allem fiel der schnelle Start von KDEauf Dauerte das Starten von KDE in fruumlherenVersionen etwa eine halbe Minute so brauchtKDE jetzt nur noch wenige Sekunden bis esin voller Pracht erscheint Als Erstes faumlllt dabeiauf dass neben den angelegten Benutzern auchein Gast-Account vorhanden ist Dieser erlaubtGaumlsten einen passwortlosen Zugang allerdingswerden alle Daten nur temporaumlr in einem tmpfs-Dateisystem angelegt und nach dem Abmeldenwieder geloumlscht Wer sich an dem Gast-Zugangstoumlrt kann ihn jedoch im Mandriva Control Cen-ter deaktivieren

In der neuen Version praumlsentiert sich Mandrivaaufgeraumlumt und klar Mandriva kommt je nachEdition in einem unterschiedlichen Theme Oneund Powerpack aumlhneln sich dabei sehr DasTheme der Free-Version praumlsentiert sich dage-gen unterschiedlich Innerhalb der Testdauer wur-de nichts am Standardaussehen veraumlndert wasauch daran liegt dass an den Hauptkritikpunk-ten des Designs gearbeitet wurde Unter KDEwird jetzt ein eigenes Plasma-Theme verwendetAuszligerdem wurde die Fensterdekoration bdquoIa-Oraldquouumlberarbeitet Auch wenn bdquoIa-Oraldquo immer nochnicht uumlberwaumlltigend schoumln ist so wirkt es zumin-dest nicht mehr wie ein Fremdkoumlrper Das eigenePlymouth-Theme wirkt in allen Versionen gefaumllligohne verspielt zu sein So laumlsst sich eigentlichdas gesamte Erscheinungsbild von Mandriva zu-sammenfassen

Die unterschiedlichen Desktopumgebungen wur-den gleichermaszligen angepasst sodass auch al-le Programme gleich mit welchem Toolkit sichin die unterschiedlichen Umgebungen gut einpas-sen OpenOfficeorg nutzt zudem unter KDE dasOxygen-Icon-Theme um eine bessere Integrati-on zu erreichen Bei der One war das Abspielenvon MP3s und das Ansehen von YouTube-Videossofort moumlglich Die gesamte Hardware der Test-rechner wurde sofort erkannt und richtig konfigu-riert LAN WLAN Grafik und selbst Bluetoothfunktionierte auf Anhieb Der eingebaute Karten-leser arbeitet ebenfalls zur vollsten Zufriedenheit

Das komplette System mit seinen Tools arbei-tet zuumlgig und schnell Auch die Softwareverwal-tung hat an Geschwindigkeit zugelegt und dadie wichtigsten Quellen bereits eingerichtet sindkann direkt losgelegt werden

Das Einzige was den positiven Gesamteindrucketwas truumlbte war eine falsche Upgrade-Meldungdie anbot ein Upgrade auf Mandriva Linux20091 durchzufuumlhren Ein Update behob diesesProblem jedoch

Mandriva verwaltenEin groszliges Plus von Mandriva Linux war undist seit jeher das Mandriva Control Center Al-le administrativen Aufgaben lassen sich dort er-ledigen wobei in der Standardkonfiguration vorallem Werkzeuge fuumlr Endanwender vorhandensind Installiert man entsprechende Pakete nachstehen aber umfangreiche Werkzeuge zum Ein-richten unterschiedlicher Server bereit

Mandriva Free mit KDE

Mandriva One mit GNOME

Mandriva Powerpack mit KDE

copy freiesMagazin GNU FDL Ausgabe 032010 7

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 8: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

SoftwareverwaltungDie Softwareverwaltung ist zweifellos eine derwichtigsten Werkzeuge im Leben eines Linux-systems Im Falle von Mandriva ist es URPMIbzw die grafische Oberflaumlche Rpmdrake AllesWichtige dazu findet sich im Mandriva ControlCenter in der Rubrik bdquoSoftware verwaltenldquo Hiermuumlssen zuerst in der Quellenverwaltung die be-noumltigten Softwarequellen eingerichtet werdenWaumlhlt man rechts bdquoHinzufuumlgenldquo hat man die Moumlg-lichkeit einen vollstaumlndigen Quellen-Satz odernur Update-Quellen hinzuzufuumlgen Waumlhlt manersteres werden alle offiziellen Quellen (MainContrib Non-Free Backports Testing mit ihren

Mandrivas Softwareverwaltung Rpmdrake

jeweiligen Update-Quellen) eingerichtet wobeinur die ersten drei mit den Update-Quellen akti-viert werden Dabei wird jedoch kein speziellerServer gewaumlhlt sondern die MIRRORLIST ver-wendet Mit der MIRRORLIST wird vor jeder Ak-tion von URPMI ein Server ausgesucht der aktu-ell ist und eine gute Verbindung erlaubt Moumlchteman jedoch einen speziellen Server verwendenkann man uumlber das Menuuml bdquoDateirarrAdd a specificmedia mirror ldquo einen aus einer Liste waumlhlen Alter-nativ kann man auch den Service SmartUrpmi [7]der deutschen Mandriva-Community nutzenDieser bietet zudem eine erweiterte Quellen-Auswahl In den PLF-Quellen finden sich einige

Extras wie libdvdcsseinige Codecs lameund vieles mehr

Rpmdrake als grafi-sche Oberflaumlche bie-ten zudem einige Ex-tras die hier kurz er-waumlhnt werden sollenUumlber die Drop-DownMenuumls in der linkenoberen Ecke kann dasSuchergebnis beein-flusst werden Hierkann eingestellt wer-den ob nur nach Pa-keten mit grafischerOberflaumlche gesuchtoder ob nur Metapa-kete angezeigt werdensollen Druumlckt man auf

das Lupen-Symbol in der Suchleiste kann manwaumlhlen wo gesucht werden soll also ob bei-spielsweise nur in den Paketnamen gesuchtwerden soll oder in den gesamten Dateilistender einzelnen Pakete Uumlber das bdquoAnsichtldquo-Menuumlkann man die Kategorie waumlhlen die im linkenTeil des Fensters angezeigt wird

Neu seit der Version 2010 ist die Moumlglichkeit dieregelmaumlszligige Uumlberpruumlfung nach Updates zu kon-figurieren Hier laumlsst sich die Frequenz waumlhlenund wann der erste Check nach dem Systemstartstattfinden soll

Uumlber die Konsole hat man die Moumlglichkeit ver-waiste Pakete zu entfernen Dazu muss man denBefehl

urpme --auto-orphans

ausfuumlhren Hier gilt jedoch besondere Vor-sicht Entfernt man zum Beispiel das Metapakettask-kde wird die gesamte KDE als verwaist dar-gestellt Moumlchte man einzelne Pakete als nicht-verwaist markieren so muss man sie lediglichmit urpmi aufrufen Das Paket wird dann nicht er-neut installiert sondern nur als manuell installiertmarkiert und ist somit nicht mehr verwaist

HardwareeinrichtungAuch bei der Einrichtung der Hardware unter-stuumltzt einen das Mandriva Control Center Werdie Free-Version zur Installation nutzt will viel-leicht den proprietaumlren Treiber fuumlr die Grafikkartenachinstallieren und verwenden Dazu waumlhlt manin der Rubrik bdquoHardwareldquo den Punkt bdquoGrafischen

copy freiesMagazin GNU FDL Ausgabe 032010 8

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 9: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

Server einrichtenldquo An dieser Stelle muss mannur die Einrichtung der Grafikkarte erneut durch-gehen (die Vorauswahl bestaumltigen) und wird amEnde gefragt ob man den proprietaumlren Treibernutzen moumlchte Bejaht man diese Frage wird derentsprechende Treiber heruntergeladen und ein-gerichtet Das Ganze funktioniert aber auch an-dersherum Will man lieber den freien Treiber ver-wenden verneint man die Frage

Die Hardwarerubrik im MCC

Aumlhnlich komfortabel laumluft die Einrichtung von ka-bellosen Netzwerken Unter bdquoNetzwerk amp Inter-netldquo kann man neue Schnittstellen hinzufuumlgenWerden Treiber fuumlr das Geraumlt benoumltigt werdendiese heruntergeladen und installiert Bei derOne-Edition sollten jedoch schon alle Treiber vor-handen sein

In der Rubrik bdquoHardwareldquo gibt es zudem denPunkt bdquoBetrachten und Konfigurieren der Hard-wareldquo Hier kann die gesamte verbaute Hardware

angezeigt werden Waumlhlt man aus der Liste einbestimmtes Element an kann auch ein jeweiligerEinrichtungsassistent gestartet werden

Weiterhin gibt es ein Sicherheitscenter in demsich regelmaumlszligige Checks einstellen lassen Eineinteraktive Firewall sowie eine Kindersicherungsind auch dabei Letztere bietet jetzt auch dieMoumlglichkeit Benutzern den Zugang zum Internetnur in einer bestimmten Zeitspanne zu erlauben

Der semantische Dateidialog

Der smarte Desktop

Ja wer hat nicht schon immer auf den smartenDesktop gewartet Jetzt soll er da sein Aller-dings bleibt er vorerst nur KDE-Nutzern zugaumlng-lich Hinter dem smarten Desktop verbirgt sichdie Integration des semantischen Desktops [8]mit Nepomuk Da Mandriva mit Sebastian Truegeinen Hauptentwickler von Nepomuk bezahltwundert es wenig dass Mandriva damit wirbt die

copy freiesMagazin GNU FDL Ausgabe 032010 9

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 10: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

erste Distribution mit der Integration zu sein Da-bei gehen die Moumlglichkeiten weit uumlber das Tag-gen und Kommentieren von Dateien hinaus Ineinem kleinen Video [9] zeigt Mandriva auch wiedas funktionieren soll

Zuerst musste aber das Paket nepomuk-scriboinstalliert und Nepomuk in den KDE-System-Settings aktiviert werden Anschlieszligend kannman sich das bdquoTask Management Widgetldquo aufden Desktop legen oder das Programm Tasktopstarten Mit Tasktop lassen sich Aufgaben (mitUnteraufgaben) definieren und den AufgabenRessourcen zuordnen Als Ressourcen sind

Tasktop zum Verwalten von Aufgaben

bisher Kontakte E-Mails DateienOrdner undWebseiten moumlglich Webseiten koumlnnen dabei mitzwei Klicks aus dem Konqueror heraus mit ei-ner Aufgabe verbunden werden Fuumlr Dateien undOrdner gilt das Gleiche mit Dolphin

Wer E-Mails mit Aufgaben verknuumlpfen willbraucht das Paket kmail-nepomuk das eine ver-aumlnderte Version von KMail darstellt Nach derInstallation wird man jedoch darauf hingewie-sen dass es sich dabei um eine Technologie-Vorschau handelt und man diese Version auf kei-nen Fall fuumlr wichtige E-Mails nutzen soll Schadeeigentlich denn so konnten die Funktionen nur

angetestet werden Kon-takte muumlssen in Tasktopkomplett neu angelegtwerden Eine Funktionzum Importieren der Kon-takte aus dem KAdress-book war nicht aufzufin-den Hat man mehrereKontakte mit einer Aufga-be verknuumlpft kann manso eine E-Mail an alleKontakte dieser Aufgabeschicken

In allen KDE-Anwen-dungen steht zum Oumlffnenund Speichern neben dennormalen Dialogen aucheine semantische Ansichtzur Verfuumlgung Diese er-laubt das Suchen von Da-

teien anhand eines Filters und Kalenders Bei-spielsweise koumlnnen damit alle Dateien anzeigtwerden die heute bearbeitet wurden Die Filter-funktion erwies sich dagegen als wenig hilfreichEs erschienen hunderte Eintraumlge zu Nepomukderen Sinn nicht ersichtlich war

Alles in allem laumlsst sich mit semantischen Desk-tops erstmals vernuumlnftig arbeiten Bei der Er-stellung dieses Berichtes haben sie sich alsdurchaus nuumltzlich erwiesen Interessante Web-seiten wurden aus dem Konqueror heraus perMausklick mit der Aufgabe bdquoReview 2010ldquo ver-knuumlpft Bilder Ordner und andere Dateien dieim Zusammenhang wichtig erschienen ebensoaus Dolphin An einigen Stellen hakte es jedochnoch sodass man sich auf kommende Versionenfreuen kann

Ausblick auf GNOME3GNOME kommt in der aktuellen Version 228Auch wenn in diesem Artikel der Fokus aufKDE liegt soll GNOME nicht vergessen werdenMandriva wird oftmals als KDE-Distribution be-zeichnet Das liegt zum einen an der sehr gutenIntegration von KDE und zum anderen an denNutzern Laut Umfrage im offiziellen Mandriva-Forum nutzen ca 75 aller Nutzer Mandriva mitKDE Dennoch gibt sich Mandriva jedes Mal vielMuumlhe GNOME mit Erfolg auf einen gleichwerti-gen Level zu bringen Fensterdekoration und Hin-tergrund sind die gleichen wie in KDE Die Menuumlssind aufgeraumlumt und gut sortiert Lediglich dasverwendete Icon-Theme ist wenig gefaumlllig

copy freiesMagazin GNU FDL Ausgabe 032010 10

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 11: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

In GNOME 228 ist mit Zeitgeist [10] undGNOME Shell [11] ein Ausblick auf GNOME3 da-bei Durch den Aufruf des Befehls

$ gnome-shell --replace

wird die GNOME-Shell gestartet Uumlber das Kon-zept hinter der GNOME-Shell mit den Aktivitauml-ten wurde in letzter Zeit genug geschrieben ImTest hat es gut funktioniert war leicht zu verste-hen und die Effekte liefen fluumlssig Lediglich beim

GNOME Shell

ersten Oumlffnen des Programm-Menuumls gab es einpaar Sekunden Verzoumlgerung

Insgesamt war der Eindruck sehr positiv und mandarf auf die weitere Entwicklung gespannt seinschlieszliglich vergeht bis GNOME3 noch fast einJahr

Weitere OberflaumlchenNeben GNOME und KDE kommt Mandriva mitvielen weiteren Oberflaumlchen Xfce und LXDE ge-

houmlren ja schon zum guten Ton Daneben gibt esnoch fuumlr alle Netbook-Besitzer Sugar und MoblinMit dem jeweiligen Metapaket (task-sugar bzwtask-moblin) sind die Umgebungen schnell in-stalliert Dabei beiszligen sich allerdings die Paketevon mutter und moblin-mutter sodass man dieGNOME Shell nicht parallel zu Moblin installierthaben kann

Moblin selbst bietet eine ansprechende undleicht verstaumlndliche Oberflaumlche Auch dasNetzwerk-Center funktionierte im Test problem-los sodass mit wenigen Klicks eine WLAN-Verbindung erstellt werden konnte Allerdingsstellt einen das Verlassen der Oberflaumlche vor ei-ne Herausforderung Es gab keine Moumlglichkeitsich abzumelden auch die Tastenkombinationzum Neustarten des X-Servers brachte keinenErfolg Der Wechsel auf die Konsole per Tasten-kombination klappte jedoch

Mandriva hat angekuumlndigt dass nach dem Er-scheinen von Moblin 21 auch wieder eineMandriva-Moblin-Live-CD erscheinen wird dochbis jetzt ist das nicht geschehen

Der HaumlrtetestWie bereits angekuumlndigt wurde fuumlr den TestMandriva Linux 2010 mit der KDE-Live-CD auf ei-nem Desktop-PC mit 512 MB Arbeitsspeicher in-stalliert Die Installation selbst war wie zu erwar-ten sehr zaumlhfluumlssig Der Bootvorgang dauertebereits mehrere Minuten und endete auf der Kon-sole Die verbaute GeForce-4-Grafikkarte wur-de zwar korrekt erkannt und mit dem proprie-

copy freiesMagazin GNU FDL Ausgabe 032010 11

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 12: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DISTRIBUTION

taumlren Treiber eingerichtet doch dieser scheinthier Probleme zu verursachen Nach dem Wech-seln zum freien Treiber uumlber das Tool XFdrakestartete KDE problemlos wenngleich auch dasweitere Minuten brauchte Nach dem Start wur-den nicht benoumltigte Hintergrundprogramme wiedraksnapshot beendet um den Platz im Ar-beitsspeicher frei zu machen

Anschlieszligend lieszlig sich die Installation startenund verlief reibungslos Nach der Installationlieszlig sich mit dem Rechner uumlberraschend gutarbeiten Der Startvorgang in KDE4 mit allenHintergrundprogrammen dauerte ziemlich genau60 Sekunden Nach dem Start waren dabei et-wa 30 des Arbeitsspeichers belegt also etwa180 MB Nach dem Start von Amarok Firefox undOpenOfficeorg waren jedoch auch schon uumlber45 des Arbeitsspeichers belegt Das Navigie-ren mit Dolphin auch in Ordnern mit vielen Datei-en verlief zuumlgig Programme wie OpenOfficeorgund Firefox brauchten fuumlr den Erststart wenigeSekunden

Zusammenfassend laumlsst sich also sagen dass512 MB Arbeitsspeicher genug ist fuumlr eine volleInstallation mit KDE4 Als Installationsweg emp-fiehlt sich jedoch eher die Free-DVD und wenigerdie Live-CD

Die CommunityDie Gemeinschaft der Mandriva-Nutzer [12] istim deutschsprachigen Raum eher etwas kleiner

aber dafuumlr an einer Stelle zentriert Dort fin-det sich neben einem aktiven Forum [13] einWiki [14] Newsportal [15] Spiegel-Server undein eigenes Paket-Repository Zu dem Ange-bot haben sich vor wenigen Wochen auch eineNetbook-Edition [16] und eine LXDE-Edition [17]gesellt

FazitMandriva Linux 2010 hat sich innerhalb der letz-ten Wochen als gut durchdachtes und leicht zubedienendes System erwiesen Das System ar-beitet schnell und wirkt trotz KDE4 leicht undspritzig Es hat groszlige Freude bereitet das Sys-tem zu nutzen und negative Punkte muumlssen wirk-lich gesucht werden aber es gibt sie Dazu zaumlh-len die falsche Upgrade-Meldung (was aber miteinem Update behoben wurde) und die eine oderandere fehlende Uumlbersetzung Alles in allem istMandriva Linux 2010 aber eine rundum gelunge-ne Version die ich jedem nur empfehlen kannDie Berichte uumlber Mandriva 2010 die bisher ver-oumlffentlicht wurden sind aumlhnlich positiv sodass je-der der gerade auf der Suche nach einer neuenDistribution ist sich Mandriva ansehen sollte

Seit Mandriva Linux 20090 hat sich somitMandriva mit jeder Version deutlich gesteigertMan darf also gespannt sein wo die Reise nochhingeht

LINKS

[1] httpwikimandrivacomde20100_Notes

[2] httpwwwpro-linuxdeNB3artikel2360mandriva-linux-2010html

[3] httpwwwgnuorgcopyleftfdlhtml[4] httpwww2mandrivacomlinuxwhich[5] httpgo-ooorg[6] ftpftpmandrivauserdemandriva_isos20100[7] httpwwwmandrivauserdesmarturpmi[8] httpdoc4mandrivaorgbinviewlabsNepomuk-

mdv2010-RC[9] httpwwwdailymotioncomvideoxbc6a2_

nepomuk-semantic-desktop-under-mand_tech

[10] httplivegnomeorgZeitgeist[11] httplivegnomeorgGnomeShell[12] httpwwwmandrivauserde[13] httpwwwmandrivauserdeforum[14] httpwwwmandrivauserdedokudokuphp[15] httpwwwmandrivauserdewordpress[16] httpwwwmandrivauserdewordpressp=443[17] httpwwwmandrivauserdewordpressp=454

Autoreninformation

Thorsten van Lil nutzt Mandriva pri-vat seit 2007 Er ist verantwortlich fuumlrdas offizielle deutsche Mandriva-Wikiund ist daruumlber hinaus Administratordes MandrivaUser-Newsportals

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 12

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 13: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

LINUX ALLGEMEIN

Der Februar im Kernelruumlckblick von Mathias Menzer

B asis aller Distributionen ist der Linux-Kernel der fortwaumlhrend weiterentwi-ckelt wird Welche Geraumlte in einem

halben Jahr unterstuumltzt werden und welcheFunktionen neu hinzukommen erfaumlhrt manwenn man den aktuellen Entwickler-Kernel imAuge behaumllt

Linux 2633In unter drei Monaten und nach nur acht Vorab-versionen veroumlffentlichte Torvalds Ende Februarnoch den Kernel 2633 [1] Der trotz Weihnachts-zeit und des Jahreswechsels vergleichsweiseschnell fertiggestellte Neuling der Linux-Kernel-Reihe kann dennoch mit bedeutenden Neuerun-gen aufwarten So befindet sich der freie Trei-ber bdquoNouveauldquo fuumlr NVIDIA-Grafik-Chipsaumltze nunim Kernel Er wurde mittels Reverse Engineeringohne Hilfe von NVIDIA entwickelt bietet jedochbereits gute 2-D-Unterstuumltzung und eine einge-schraumlnkte 3-D-Beschleunigung Die Arbeiten dar-an laufen weiter unter anderem mit dem Ziel dieAbhaumlngigkeit von der Firmware ctx_voodoo zuentfernen Die Nouveau-Entwickler erhoffen sicheine bessere und laumlngerfristige Unterstuumltzungvon Grafikhardware da Anwender unterstuumltzterKarten nun nicht mehr allein auf das Wohlwollendes Herstellers angewiesen sind

Ebenfalls populaumlr war die Aufnahme des Kernel-Moduls von DRBD (Distributed Replicated BlockDevice) Diese Software ermoumlglicht die Replika-tion eines Blockspeichergeraumltes uumlber das Netz-

werk auf andere Systeme Damit lassen sich zumBeispiel Partitionen erstellen die auf mehrerenServern synchron gehalten werden und somitbeim Ausfall eines Systems noch zur Verfuumlgungstehen ndash sei es durch einen Festplattendefekt ei-ne Stoumlrung des Netzwerks oder sonstige Ausfaumlllebedingt

Etwas Schutz vor boumlsen Absichten sollen bdquoTCPCookie Transactionsldquo (TCPCT) bieten ndash eine Er-weiterung des TCP-Protokolls die die Wirksam-keit von Denial-of-Service-Attacken vermindertDabei wird beim Verbindungsaufbau ein Cookiemitgesendet mit dessen Hilfe auf der Gegensei-te eben jener Verbindungsaufbau ohne die Nut-zung weiterer Ressourcen durchgefuumlhrt werdenkann Ebenso werden direkt nach Beendigungder Verbindung Ressourcen auf dem Server wie-der freigegeben

Auch von ReiserFS gibt es wieder etwas zu houml-ren Allerdings von der etwas aumllteren Version 3die bislang immer noch Gebrauch vom Big Ker-nel Lock (BKL) machte Diese mittlerweile veral-tete Variante zur Verhinderung gleichzeitiger Zu-griffe auf den Kernelspace sperrt den gesamtenKernel im Gegensatz zur aktuellen Methode nureinzelne Zweige zu sperren ReiserFS machtehiervon exzessiv Gebrauch und erleichterte esden Entwicklern dadurch nicht gerade ihm denBKL auszutreiben Sie bedienten sich daher re-kursiver Locks (mehrfacher Sperren durch eineneinzigen Thread) Dies wird auch nicht als saube-

re Loumlsung gesehen allerdings haumltte eine Imple-mentierung aktueller Sperrmechanismen ein Um-schreiben groszliger Teile von ReiserFS erfordert

Auch diesmal ist die Anzahl der Aumlnderungen wie-der zu groszlig um sie alle beschreiben zu koumln-nen Spieler und Bastler koumlnnen sich uumlber die Un-terstuumltzung fuumlr Sonys Wii und Nintendos Game-cube freuen Entwickler uumlber weitere Werkzeugezur Leistungsmessung des Kernels Der Radeon-Treiber wurde verbessert und arbeitet nun auchmit R6xx- und R7xx-Modellen neue Treiber ka-men in allen Bereichen hinzu Eine umfassen-de englischsprachige Auflistung bietet Kernel-newbies [2]

Android fliegt rausSeit 2633 sind die Android-spezifischen Anpas-sungen nicht laumlnger im Linux-Kernel enthaltenEinmal mehr betonte der Verwalter des staging-Zweiges Greg Kroah-Hartman bdquostaging ist keinAbladeplatz fuumlr ungepflegten Codeldquo und warf dieentsprechenden Treiber kurzerhand raus [3] An-droid nutzt ein anderes Verfahren zum Sperrengenutzter Bereiche im Kernelspace und verfuumlgtauch uumlber ein abweichendes Sicherheitsmodellwodurch zusaumltzliche Anpassungen benoumltigt wer-den damit Android-Treiber in den Linux-Kernelaufgenommen werden koumlnnten Leider machteGoogle bislang keine Anstalten um diese not-wendigen Aumlnderungen vorzunehmen NachdemJan Wildeboer nun einen Fork des Kernels [4]befuumlrchtete kam wieder Leben in das Thema

copy freiesMagazin GNU FDL Ausgabe 032010 13

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 14: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

LINUX ALLGEMEIN

In einem Interview mit Linux-Magazin lieszlig Kroah-Hartman durchsickern dass Google die Zusam-menarbeit mit den Entwicklern des Mainstream-Kernels aufnehmen moumlchte und auch das Sicher-heitsmodell von Android uumlberarbeiten wolle [5]

Optimierungen fuumlr den DesktopAuch Con Kolvias der ein ausgepraumlgtes Faiblefuumlr Scheduler hat meldet sich zuruumlck ndash mit ei-nem umfassenden Satz an Patches fuumlr den Ker-nel 2633 der sich auf die Leistung des Ker-nels auf einem Desktop-System positiv auswir-ken soll [6] So findet sich darin unter ande-rem der von ihm erdachte Brain Fuck Schedu-ler (BFS) mit dem er sich im September vergan-genen Jahres nach zweijaumlhriger Pause wiederbei der Kernel-Entwicklergemeinde zuruumlckmelde-te (siehe bdquoDer September im Kernel-RuumlckblickldquofreiesMagazin 102009 [7]) BFS nutzt die Res-sourcen auf Systemen mit vier oder weniger Pro-zessoren besser als der derzeit verwendete Com-pletely Fair Scheduler (CFS) Weitere enthaltenePatches verringern Latenzzeiten oder optimierendas Swap-Verhalten

KspliceEine Methode um Kernelaktualisierungenohne Neustart des Systems zu installierenstellt Ksplice dar (siehe bdquoKernel-RuumlckblickldquofreiesMagazin 052008 [8]) Das am MIT (Massa-chusetts Institute of Technology) [9] entwickel-te Verfahren wird nun durch das UnternehmenKsplice [10] als Dienstleistung namens bdquoKspliceUptrackldquo vertrieben Dabei stellt Ksplice ange-passte Aktualisierungen bereit die per Abon-

nement durch ein auf dem System installiertenProgramm heruntergeladen und als Modul zurLaufzeit in den Kernel eingehaumlngt werden Waumlh-rend das Abonnement fuumlr Red Hat EnterpriseLinux CentOS Debian und Ubuntu 804 LTS kos-tenpflichtig ist steht es Anwendern von Ubuntu904 und 910 kostenfrei zur Verfuumlgung [11]

Was kostet LinuxLinux ist Freie Software Dass damit nicht freiim Sinne von Freibier gemeint ist darauf wiesschon Richard M Stallman hin Eine Forschungs-gruppe an der Universitaumlt von Oviedo (Spani-en) hat diese Aussage nun mit harten Zahlenuntermauert [12] Die Forscher ermittelten nachdem Constructive Cost Model (COCOMO) [13]den Wert des Kernels 2630 mit uumlber einer Mil-liarde Euro Bei einer Entwicklungszeit von 14Jahren wuumlrden von Anfang an 985 Personen ander Kernel-Entwicklung mitarbeiten muumlssen DieForscher weisen darauf hin dass die verwen-deten Kostenmodelle der Komplexitaumlt der Open-Source-Software-Entwicklung nicht ganz gerechtwerden da hier Code bestaumlndig einflieszligt aberauch wieder entfernt wird Dies wuumlrde ein Uumlber-denken dieser Modelle erfordern um zum Bei-spiel auch die Wiederverwendung und Weiterent-wicklung des Codes zu beruumlcksichtigen [14]

LINKS

[1] httplkmlorglkml2010224301[2] httpkernelnewbiesorgLinux_2_6_33[3] httpwwwpro-linuxdeNB3news115260

android-und-der-linux-kernelhtml

[4] httpjanwildeboernet201002is-google-forking-the-linux-kernel

[5] httpwwwlinux-magazindeNEWSVideo-Android-und-der-Linux-Kernel

[6] httpwwwlinux-communitydeInternalNachrichtenCon-Kolivas-meldet-sich-mit-Patchset-fuer-2633-zurueck

[7] httpwwwfreiesmagazindefreiesMagazin-2009-10

[8] httpwwwfreiesmagazindefreiesMagazin-2008-05

[9] httpmitedu[10] httpwwwksplicecom[11] httpwwwpro-linuxdeNB3news115293

ksplice-uptrack-ermoeglicht-kernel-updates-ohne-neustarthtml

[12] httpwwwpro-linuxdeNB3news115350was-kostet-die-entwicklung-des-kernels-2630html

[13] httpdewikipediaorgwikiCOCOMO[14] httpirijrceceuropaeuconcord-2010posters

Garcia-Garciappt

Autoreninformation

Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung ummehr uumlber die Funktion von Linux zuerfahren

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 14

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 15: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DESKTOP

Pimp my Desktop von Ralf Hersel

D ie Arbeitsoberflaumlche der Linux Desk-tops ist von Haus aus eine Wuumlste diezu 5 aus Panels Menuumls und Startern

besteht und zu 95 ein Hintergrundbild ohneweitere Information oder Funktion zeigt Vie-le Anwender sind mit diesem Zustand zufrie-den andere wuumlnschen sich mehr Inhalt aufder Oberflaumlche In diesem Artikel werden Maszlig-nahmen beschrieben um den Informations-gehalt des Desktops zu erhoumlhen und ihn op-tisch ansprechender zu gestalten

Status quoDie grafische Benutzeroberflaumlche wurde ab 1973von der Firma Xerox mit dem Xerox Alto er-funden Zu einem kommerziellen Erfolg wurdejedoch erst der Xerox Star [1] im Jahr 1981Die Oberflaumlche des Xerox Star zeigt die wesent-lichen Elemente des Konzepts grafische Dar-stellung Anwendungen in eigenstaumlndigen Fens-tern Icons als Links auf Anwendungen Ver-zeichnisse oder Dateien Der Xerox Star verdeut-licht die Schreibtisch-Metapher Es liegen geoumlff-nete Briefe herum es gibt Posteingangs- und-ausgangskorb einen Papierkorb Taschenrech-ner und Drucker sowie Ordner fuumlr die verschie-denen Dokumententypen

In den vergangenen 30 Jahren hat sich an die-sem Grundkonzept nicht viel veraumlndert Seienes die Apple- Windows- oder Linux-Desktopsim Grunde genommen sieht es immer noch auswie damals Auf einem modernen Desktop wie

z B GNOME ist von der Schreibtisch-Metaphernicht mehr viel uumlbrig geblieben Der Schreibtischist so gut wie leer lediglich der Papierkorb istnoch vorhanden versteckt sich aber rechts untenim Panel Der Grund fuumlr das Verschwinden derurspruumlnglichen Desktopelemente liegt auf derHand ndash ein geoumlffnetes Dokument oder Programm

Screenlet-Verwaltung

verdeckt in der Regel groszlige Teile des Schreib-tischs und damit auch die nuumltzlichen HelferleinIm Panel sind diese Elemente jedoch auch beimaximierten Programmfenstern jederzeit erreich-bar

Folgt man den Forendiskussionen zu diesemThema [2] so besteht hier kein HandlungsbedarfDie meisten Anwender sind mit dem Desktop zu-frieden Die Minimalisten unter ihnen bevorzugen

einen aufgeraumlumten Schreibtisch auf dem fastnichts herumliegt Bei der anderen Fraktion aumlh-nelt der Desktop einem Schachbrett voller Star-ter und Dokumentenicons

Wer jedoch mehr Informationen auf seiner gra-fischen Oberflaumlche haben moumlchte fuumlr den

bieten die aktuellen Linux-Desk-tops kleine Applikationen soge-nannte Applets Bei KDE heiszligensie Plasmoide bei GNOME gibtes die GDesklets und die Screen-lets [3] Mit ihnen laumlsst sich der In-formationsgehalt des Desktop er-weitern

Mehr InfosAls Beispiele fuumlr informative Ap-plets unter Ubuntu mit GNOME-Oberflaumlche dienen das Clear-Weather-Screenlet und das Feed-Reader-Screenlet Bevor dieseeingerichtet werden koumlnnen muss

man das Paket screenlets wie gewohnt uumlber dasSoftware-Center installieren Nach der Instal-lation kann die Screenlet-Verwaltung aus demMenuuml bdquoZubehoumlr ldquo gestartet werden

Diese Verwaltung gibt einen Uumlberblick uumlber dieverfuumlgbaren Screenlets erlaubt das Starten undStoppen sowie das Konfigurieren der ausgewaumlhl-ten Screenlets Auszligerdem kann uumlber das Inter-net [4] die Sammlung erweitert werden Wer

copy freiesMagazin GNU FDL Ausgabe 032010 15

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 16: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DESKTOP

moumlchte kann die Screenlets seiner Wahl einma-lig starten oder per Eintrag in die Startprogram-me bei jedem Sitzungsstart automatisch auf denDesktop bringen

Die Wettervorhersage (Clear-Weather-Screen-let) geht uumlber den Standard-Wetterbericht imGNOME-Panel hinaus indem auch Informatio-nen zur Tag-Nachttemperatur der Luftfeuchtig-keit und dem voraussichtlichen Wetter der naumlchs-ten Tage angezeigt werden Der wesentlicheAspekt ist jedoch die permanente Anzeige aufdem Desktop im Gegensatz dazu muumlssen dieWetterinformationen aus dem GNOME-Panel im-mer aktiv geoumlffnet werden Das ist als grundsaumltz-licher Vorteil der Applets zu sehen ndash Informatio-nen koumlnnen im Voruumlbergehen konsumiert wer-den es muss kein Programm gestartet werden

Clear-Weather-Screenlet

Bevor das Wetter fuumlr den eigenen Standort an-gezeigt wird muss man in den Einstellungendes Clear-Weather-Screenlets die lokale Positi-on angeben Diesen sogenannten ZIP-Code fin-

det man auf der Seite von weathercom [5] Dortkann nach dem Namen der Stadt gesucht wer-den worauf der gesuchte ZIP-Code als Teil derURL angezeigt wird Bei der Stadt Zuumlrich siehtdie URL von weathercom so aus

httpwwwweathercomweathertodayZurich+Switzerland+SZXX0033from=enhsearch

Der ZIP Code lautet SZXX0033 und wird im FeldbdquoZIPldquo bei den Einstellungen des Clear-Weather-Screenlets erwartet

Ein weiteres Beispiel fuumlr die Erhoumlhung des In-formationsgehalts des Desktops ist das Feed-Reader-Screenlet Mit ihm kann ein RSS-Feedabonniert werden Das Screenlet zeigt die Uumlber-schriften der Feeds an oumlffnet beim Daruumlberfah-ren mit der Maus den Kurztext der Nachrichtund beim Klicken die zugehoumlrige InternetseiteMoumlchte man mehrere Feeds im Auge behaltenso koumlnnen weitere Instanzen des Feed-Reader-Screenlets gestartet und auf dem Desktop ange-ordnet werden

Die beiden vorgestellten Screenlets beziehen ih-re Informationen aus dem Internet somit ist ei-ne Internetverbindung erforderlich um keine lee-ren Screenlets auf dem Desktop zu haben Wassich trivial und selbstverstaumlndlich anhoumlrt birgteine kleine Tuumlcke Beim Starten erwarten dieScreenlets eine bestehende Internetverbindungansonsten zeigen sie keinen Inhalt an Wer nunzu Hause oder unterwegs seinen Zugang zum In-ternet uumlber WLAN herstellt wird feststellen dasses einige Sekunden dauert bis eine Verbindung

aufgebaut wird In dieser Zeit sind alle Screen-lets gestartet und haben natuumlrlich keine Verbin-dung zum Internet bekommen Das ist nicht sehrschoumln zumal die Screenlets erst nach einigen Mi-nuten ein Update des Inhalts holen solange blei-ben sie leer

Abhilfe schafft hier ein Skript welches dieScreenlets erst dann startet wenn eine Inter-netverbindung besteht Hierzu gibt es eine kor-rekte aber komplizierte Loumlsung und eine Quick-and-Dirty-Loumlsung Bei der korrekten Loumlsung war-tet ein Skript solange bis tatsaumlchlich eine Inter-netverbindung besteht bevor die Screenlets ge-startet werden Die einfachere Loumlsung wartet einpaar Sekunden und startet die Screenlets dann

binbash wait until internet is up before screenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy

Listing 1 start-screenletssh

Zuerst wird zwoumllf Sekunden lang gewartet ndash dasist ein Erfahrungswert den jeder fuumlr seinen PCermitteln muss In den nachfolgenden Zeilen wer-den die beiden Screenlets gestartet Wichtig istdass am Ende der Zeile das Zeichen amp stehtDamit wird der Befehl als Hintergrundprozessgestartet Laumlsst man es aus wird der Feed-

copy freiesMagazin GNU FDL Ausgabe 032010 16

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 17: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DESKTOP

Reader erst gestartet wenn das Clear-Weather-Screenlets beendet wird

Das Skript interessiert sich nicht dafuumlr ob nachzwoumllf Sekunden die Internetverbindung tatsaumlch-lich besteht Wer es gerne etwas kompliziertermoumlchte kann das zweite Skript verwenden

binbashPING_URL=wwwgooglecomWAIT_FOR=30 secondstrap exit 1 SIGTERMsleep $WAIT_FOR ampamp kill $$ ampwhile ping -c1 $PING_URL 2gtdevynull 1gtamp2 do sleep 1 donekill -exit 0

Listing 2 test-inetsh

Zuerst werden zwei Variablen definiert Eine mitder Testadresse und eine Weitere mit der ma-ximalen Wartezeit fuumlr die Verbindung Die Zeiledanach sorgt dafuumlr dass ein exit 1 gesendetwird falls das Skript mit kill beendet werdensollte Danach wird die Wartezeit gestartet dienach Ablauf der Zeit diesem Skript mit kill denGaraus macht ndash das ist sozusagen der Selbst-zerstoumlrungsmechanismus fuumlr den Fall dass uumlber-haupt keine Internetverbindung hergestellt wer-den kann In der while-Schleife wird die URLangepingt und eine Sekunde gewartet bis derping erfolgreich war also die Internetverbindungbesteht Nach der Schleife koumlnnten nun die Start-kommandos fuumlr die Screenlets stehen denn dieSchleife wird erst bei bestehender Internetverbin-dung verlassen Da nun alles bestens ist wird die

zuvor gestartete Selbstzerstoumlrung abgeschaltetindem ein kill an den letzten Hintergrundpro-zess geschickt wird Zum Schluss wird das Skripterfolgreich verlassen Falls das Skript bei Zeit-ablauf durch den Hintergrundprozess zwangsbe-endet wird geschieht dies mit exit 1 um einennicht erfolgreichen Skriptablauf zu signalisieren

Der Desktop Zwei Feedreader das Wetter und eine Notiz

Wie man sieht ist das zweite Skript nicht soeinfach zu verstehen wie das erste obwohl die-ses fuumlr den gewuumlnschten Zweck voumlllig ausrei-chend ist Moumlchte man es verwenden so muumls-sen die Aufrufe fuumlr die Screenlets aus den Start-programmen entfernt werden Lediglich der Ein-trag bdquoScreenlets Daemonldquo muss dort bestehenbleiben Anschlieszligend fuumlgt man den Aufruf deseigenen Skripts zu den Startprogrammen hinzu

Desktop verschoumlnernNachdem der Desktop nun durch die Screen-lets um einiges informativer geworden ist kannman sich uumlber die Verschoumlnerung Gedanken ma-chen Hierfuumlr gibt es vielfaumlltige Moumlglichkeiten dievon eigenen Hintergrundbildern bis zu anderenDesktop-Themen reichen Die Hintergrundbilder

haben den Nachteil dasssie in der Regel statischsind so dass man jedenTag das gleiche sieht

Seit Ubuntu 910 gibt eszwar die wechselnden Bil-der die sich jedoch le-diglich auf eine Handvollverschiedener Bilder be-schraumlnken Es ist interes-santer von einer dynami-schen Quelle bei jedemSystemstart ein neues Bildzu beziehen Das funktio-niert einfacher als mandenkt

Der Trick besteht darin ei-ne Internetseite zu finden auf der sich eine Bild-datei eindeutig identifizieren laumlsst Die meistenLeser kennen wohl die Suchmaschine von Micro-soft mit dem Namen bdquoBingldquo [6] Ob man dieseSuchseite gut findet und verwenden moumlchte seijedem selbst uumlberlassen ndash was man Microsoft je-doch zugestehen muss ist die gute Auswahl derHintergrundbilder Uumlber Geschmack laumlsst sichbekanntlich nicht streiten aber diese Bilder sind

copy freiesMagazin GNU FDL Ausgabe 032010 17

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 18: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DESKTOP

wirklich schoumln Deshalb sind sie eine gute Quellezur Verschoumlnerung des Desktops Mit einem sim-plen Python-Skript lassen sich die Bilder auf denDesktop zaubern

Die Programmiersprache Python ist bei den po-pulaumlren Linuxdistributionen bereits vorhandenund muss daher nicht erst installiert werden DasSkript ist sehr einfach und wird im Folgenden er-klaumlrt

usrbinenv python Get the background image from Bing and make it the wallpaper

import urllib

def main()page = urlliburlopen(httpwwwbingcom)read()start = pagefind(fdhpk2 0)end = pagefind(jpg start)url = httpwwwbingcom + page[startend+3]urlliburlretrieve(url bingjpg)

if __name__ == rsquo__main__ rsquo main()

Listing 3 bingsterpy

Hinweis Grundlagen von Python werden im Fol-genden nicht erklaumlrt

Zuerst wird mit import die Bibliothek urllibgeladen um auf Internetseiten zugreifen zukoumlnnen Die Hauptfunktion liest zuerst die Sei-te httpwwwbingcom als String in die Va-riable page ein Die naumlchste Zeile sucht inder Seite nach der signifikanten Zeichenfolge

fghpk2 die das Verzeichnis darstellt indem Microsoft die Bing-Bilder ablegt Anschlie-szligend wird nach der Zeichenfolge jpg gesuchtwas das Ende der gesuchten Bildadresse mar-kiert Danach wird nun die Adresse des Bildeskonstruiert indem man httpwwwbingcommit der gefundenen Bildadresse kombiniertZum Schluss wird das Bild unter der Adres-se in url bei Bing abgeholt und im aktuellen

Verzeichnis unter demNamen bingjpg abge-speichert

Jetzt fehlen noch zweiSachen das Python-Skript muss in die vonder Internetverbindungabhaumlngigen Startpro-gramme aufgenommenwerden Das erweiterteShellskript sieht dannwie in Listing 4 aus

Man sollte nicht verges-sen den vorhergehen-den Befehl mit einem amp

abzuschlieszligen damit er als Hintergrundprozessgestartet wird

Auszligerdem muss dem Desktop gesagt werdenwo das neue Hintergrundbild zu finden ist Dazuoumlffnet man den Dialog zur Einstellung des Hinter-grundbildes verweist auf das Bing-Bild und stelltje nach Geschmack den Stil auf bdquozentriertldquo oderbdquoBildschirm fuumlllenldquo Nun wird bei jedem Start das

aktuelle Bild von Bing geholt und auf dem Desk-top gezeigt

binbash wait until internet is up before yscreenlets are startedsleep 12python -u usrsharescreenletsyClearWeatherClearWeatherScreenletypy amppython -u usrsharescreenletsyFeedReaderFeedReaderScreenletpy amppython -u ~bingsterpy

Listing 4 inetwaitsh

In ZukunftUumlber die Zukunft des Desktops gibt es diverseMeinungen Die einen glauben an eine Verstaumlr-kung der Schreibtisch-Metapher wie im Bumptop-Video [7] schoumln zu sehen ist Andere sehen allesin die Wolke wandern und stellen sich den Desk-top im Browser vor und nennen ihn Webtop BeiUbuntu und dem GNOME-Desktop zeigen sichdrei Entwicklungen [8]

1 staumlrkere Integration von sozialen Elementenwie beim bdquoMe Menuldquo [9]

2 Ausrichtung auf Aktivitaumlten und multiple Desk-tops in der neuen GNOME Shell

3 die Zeit als Organisationskriterium fuumlr Doku-mente in GNOME Zeitgeist

Betrachtet man den Eingangsbildschirm von ak-tuellen Smartphones so steht hier die Anzei-ge von wichtigen Informationen im Vordergrund

copy freiesMagazin GNU FDL Ausgabe 032010 18

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 19: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

DESKTOP

Praktisch alle Smartphone-Desktops zeigen PIM-Informationen (Personal Information Manage-ment) an Dazu gehoumlren naumlchste Aktivitaumlten (Ka-lender und Aufgaben) haumlufige Kontakte (Perso-nen) Nachrichten (E-Mail SMS Messenger Te-lefonate) Geo-Infos (Landkarten) haumlufige An-wendungen und Dokumente (Programme Doku-mente inklusive Multimedia-Inhalte) Die Hinter-grundbilder von fruumlheren Smartphone-Desktopssind mittlerweile vollstaumlndig von den oben ge-nannten Info-Inhalten verdraumlngt worden DieseEntwicklung ist auf PC-Desktops bisher nicht zubeobachten

FazitEine Renovierung der 30 Jahre alten Desktop-Metapher ist uumlberfaumlllig Die grafische Benutzer-oberflaumlche als reines Abbild des realen Schreib-tisches wird den heutigen Beduumlrfnissen nach

Information Kommunikation und optischer Ge-staltung nicht mehr gerecht Moderne Desktopsbieten vielfaumlltige Moumlglichkeiten zur Anreicherungnach den persoumlnlichen Anforderungen Dennochder Desktop an und fuumlr sich wirkt verstaubtDie staumlndige Weiterentwicklung der wichtigstenLinux-Desktops KDE und GNOME wird noch indiesem Jahr fuumlr frischen Wind und neue Konzep-te sorgen Das ist gut so denn die Wuumlste lebt

LINKS

[1] httpwwwareslunaorgattachedusabilityarticlesbiurkonaekraniepicsxerox

[2] httpforumubuntuusersdetopicden-desktop-aktiv-nutzen

[3] httpwikiubuntuusersdeDesklets[4] httpscreenletsorgindexphpDownload[5] httpwwwweathercom[6] httpwwwbingcom

[7] httpwwwyoutubecomwatchv=M0ODskdEPnQ

[8] httpswikiubuntucomMeMenu[9] httplivegnomeorgThreePointZeroPlan

Autoreninformation

Ralf Hersel schreibt in erster Liniefuumlr Ein- und Umsteiger auf LinuxSein Fokus liegt auf relevantenInformationen die die taumlgliche Arbeitmit Linux erleichtern und anreichernEr ist uumlberzeugt davon dass Linuxdas beste Betriebssystem fuumlr Compu-terneulinge ist

Diesen Artikel kommentieren

bdquoTurn-Onldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom474

copy freiesMagazin GNU FDL Ausgabe 032010 19

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 20: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

PAKETVERWALTUNG

Eigene Paketquellen zusammenstellen mit local-apt von Hauke Goos-Habermann

D ieser Artikel zeigt eine weitere Metho-de Pakete mit Abhaumlngigkeiten herun-terzuladen Anders als in dem Artikel

bdquoRaus aus der Ubuntu-Paketabhaumlngigkeits-houmllleldquo freiesMagazin 012010 [1] funktioniertdiese Variante ohne Root-Rechte und unab-haumlngig von der verwendeten Distribution so-lange diese die APT-Programme wie apt-getbereitstellt

Da APT bereits alle noumltigen Funktionen enthaumlltum Pakete inklusive aller Abhaumlngigkeiten herun-terzuladen besteht der eigentliche bdquoTrickldquo darinAPT so zu konfigurieren dass eine Paketquelleunabhaumlngig von der des uumlbrigen Systems ange-legt und verwaltet werden kann In jedem belie-bigen Verzeichnis kann eine Datei- und Verzeich-nisstruktur angelegt werden die von APT akzep-tiert wird

VorbereitungenVerzeichnisstruktur anlegenDie folgenden Schritte werden in einer Shell alsnormaler Benutzer ausgefuumlhrt Zuerst legt manein neues Verzeichnis an und wechselt hinein Indiesem Verzeichnis werden dann alle weiterenSchritte ausgefuumlhrt

$ mkdir tmptestquelle$ cd tmptestquelle

APT benoumltigt einen Satz von Dateien und Ver-zeichnissen um die Pakete und zusaumltzliche Infor-

mationen ablegen zu koumlnnen Unter lists undlistspartial werden die Paketindizes gespei-chert Diese enthalten die Liste aller herunterlad-baren Dateien abhaumlngig von der sourceslist(mehr dazu spaumlter)

$ mkdir -p listspartial$ mkdir -p archivespartial$ mkdir -p cache$ touch listslock status

APT speichert die komplett heruntergeladenenPakete unter archives und noch nicht vollstaumln-dige Pakete unter archivespartial Fuumlr diePaketsuche wird das Verzeichnis cache von APTerwartet Damit waumlhrend der Aktualisierung derPaketindizes kein weiterer APT-Aufruf gestartetwerden kann benoumltigt APT noch die leere Dateilistslock

Die Datei status wuumlrde in einem normalen Sys-tem schlieszliglich Informationen uumlber deinstallierteund installierte Pakete enthalten Zum Herunter-laden von Paketen wird sie zwar nicht direkt ge-braucht aber APT beginnt nicht mit der Arbeitwenn sie fehlt

Paketquellendatei erstellenDebian und alle von Debian abgeleiteten Distri-butionen (z B UbuntuKubuntu) verwenden ei-ne Datei in der die Paketquellen (normalerweiseServer im Internet) eingetragen sind von der dieSoftwarepakete heruntergeladen werden Diese

Datei heiszligt sourceslist und befindet sich imNormalfall im Verzeichnis etcapt

Moumlchte man Pakete fuumlr die gerade verwen-dete Distribution aus dem Internet laden sogenuumlgt ein simples Kopieren von etcaptsourceslist in das aktuelle Verzeichnis

$ cp etcaptsourceslist

Dann hat man aber nur die Pakete die sich auchso herunterladen und installieren lassen

Interessant wird die Sache allerdings wenn maneine neue sourceslist anlegt bzw die kopier-te veraumlndert und in dieser die Paketquelle(n) ei-ner fremden Distribution angibt Hierdurch kannman gaumlnzlich andere Pakete als die der einge-setzten Distribution herunterladen Beispielswei-se koumlnnte man folgende Zeile eintragen wennman Pakete aus Debian unstable haben moumlchteselbst wenn man Ubuntu einsetzt

deb httpftp2dedebianorgydebian unstable main non-free ycontrib

Pakete suchen und herunterladenPaketindex heruntergeladenDamit APT weiszlig welche Pakete es uumlberhauptgibt laumldt es hierfuumlr Indexdateien herunter Hier-bei ist der apt-get update-Aufruf so zu erwei-tern dass alles auf dem aktuellen Verzeichnis ar-beitet

copy freiesMagazin GNU FDL Ausgabe 032010 20

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 21: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

PAKETVERWALTUNG

$ apt-get update -o=DirCachey=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist

Pakete suchenBeim Suchen im lokalen Verzeichnis werden diegleichen Anpassungen vorgenommen

$ apt-cache search -o=DiryCachearchives=archives -o=yDirStatestatus=status -o=yDirState= -o=DirEtcysourcelist=sourceslist ltySuchbegriff gt

Pakete herunterladenDas Herunterladen von Paketen geschieht eben-falls mit den Anpassungen und dem uumlblichenAPT-Befehl Wichtig hierbei ist dass zusaumltzlichder Parameter -d angegeben wird damit APTdie Pakete nur herunterlaumldt und nicht versuchtdiese zu installieren Nach Abschluss des Down-loads befinden sich die Pakete inklusive derbenoumltigten Abhaumlngigkeiten im Unterverzeichnisarchives

$ apt-get install -d -o=DiryCache=cache -o=DirCacheyarchives=archives -o=DiryStatestatus=status -o=DiryState= -o=DirEtcsourcelisty=sourceslist ltPaketegt

Quellpakete herunterladenDas Herunterladen von Quellpaketen geschiehtanalog Dabei ist der Parameter install durchsource zu ersetzen und darauf zu achten dassin der sourceslist die zugehoumlrige Quelle fuumlrQuellpakete eingetragen ist Zum Beispiel gehoumlrtzu dem oben angegebenen Repository das fol-gende Quellrepository

deb-src httpftp2dedebianyorgdebian unstable main non-yfree contrib

local-aptUm die Anwendung einfacher zu gestalten gibtes die Skriptsammlung local-apt [2] als ferti-ges Paket das die vorgestellten Schritte in einfa-chen Kommandos zusammenfasst und nach An-legen einer sourceslist in jedem beliebigenVerzeichnis verwendet werden kann

local-apt-update aktualisiert den Paketin-dex

local-apt-search ltSuchbegriffgt suchtein Paket im Paketindex

local-apt-download ltPaket(e)gt laumldt einPaket herunter

local-apt-source ltPaket(e)gt laumldt denQuellcode eines Paketes herunter

local-apt-mkpackages erzeugt die Paket-indexdateien die benoumltigt werden um diePakete zu installieren (muss im Verzeichnisarchives ausgefuumlhrt werden)

local-apt installierenMoumlchte man local-apt haumlufiger benutzen sobietet sich an das Paket fest im System zu instal-lieren Hierzu laumldt man das local-apt-Paket vonder Dodger-Tools-Seite [3] herunter und instal-liert es z B mit folgendem Aufruf

$ cd tmp$ wget httpdodger-toolsysourceforgenetdebslocal-yapt_10-38_alldeb dpkg -i local-apt_10-38_allydeb

LINKS

[1] httpwwwfreiesmagazindefreiesMagazin-2010-01

[2] httpdodger-toolssourceforgenet[3] httpdodger-toolssourceforgenetdebsend

Autoreninformation

Hauke Goos-Habermann arbeitetfreiberuflich als Entwickler und Trainerfuumlr Linux und Open-Source-SoftwareEr ist zudem Hauptentwickler desSoftwareverteilungssystems m23und weiterer Open-Source-Softwaresowie Mitorganisator der Kieler Linux-und Open-Source-Tage

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 21

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 22: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

SYSTEM

Die Z-Shell (zsh) ndash Eine maumlchtige Alternative zur Bash von Marcel Jakobs

D ie Standardshell auf den meisten Li-nux-Systemen ist die Bash [1] Sie istsehr maumlchtig und erlaubt es viele Auf-

gaben zu automatisieren Dieser Artikel sollsich einer sehr interessanten noch maumlchtige-ren Shell widmen der Z-Shell ndash kurz zsh [2]

Installation und StartDie zsh laumlsst sich auf den meisten Linux-Systemen aus der Paketverwaltung uumlber das Pa-ket zsh installieren Danach kann man sie mitdem Aufruf von

$ zsh

ausfuumlhren Um sie zur Standardshell zu machengenuumlgt der Befehl

$ chsh -s usrbinzsh yBENUTZERNAME

wobei BENUTZERNAME durch den entsprechendeneigenen Benutzernamen ersetzt werden und derPfad zu zsh stimmen muss Wo zsh liegt kannman mit dem folgenden Befehl herausfinden

$ which zsh

Auf manchen Systemen liegt zsh beispielsweisein bin

Die zsh bedient sich Elementen der Bash derKorn-Shell (ksh) und der TENEX-C-Shell (tcsh ndash

eine erweiterte C-Shell) Sie ist sehr gut konfigu-rierbar und fast jedes Verhalten der Bash kannnachgeahmt werden sodass der Umstieg sehrleicht faumlllt Bestehende Bash-Scripte koumlnnen na-tuumlrlich weiterhin genutzt werden wenn der She-bang entsprechend gesetzt ist (siehe bdquoShebangndash All der Kramldquo freiesMagazin 112009 [3])

binbash

BeispieleIm Folgenden sollen einige interessante Vortei-le der zsh kurz durch Beispiele beschrieben wer-den Da die zsh sehr viele Moumlglichkeiten bietetist es aber nicht moumlglich alles im Detail zu erlaumlu-tern

Hinweis Optionen werden mit dem Befehlsetopt gesetzt gelten aber nur fuumlr die aktuelleSitzung Um sie dauerhaft zu aktivieren mussman diese in die Konfigurationsdatei ~zshrcschreiben

AutokorrekturDie zsh beherrscht einen Mechanismus der klei-ne Tippfehler automatisch korrigiert Hat manin einem Ordner eine Datei testfiletxt undmoumlchte diese nach file2txt kopieren so fuumlhrtman in der Regel folgenden Befehl aus

$ cp testfiletxt file2txt

Wie von der Bash gewohnt nutzt man dafuumlrdie Autovervollstaumlndigung mittels Tab Bei einem

Verschreiber wird dieser in der zsh automatischkorrigiert

Beispiel

$ cp tsetfltTABgt

wird automatisch korrigiert und zu

$ cp testfiletxt

vervollstaumlndigt

Die Autokorrektur aktiviert man mit der Optioncorrect

Globale AliaseNeben den normalen Aliasen fuumlr Kommandoswie man sie aus der Bash kennt gibt es in derzsh noch globale Aliase die uumlberall im Befehl ge-nutzt werden koumlnnen nicht nur am Anfang

Zwei Beispiele verdeutlichen dies

$ alias -g G=rsquo| greprsquo$ alias -g L=rsquo| lessrsquo

Dies erzeugt die globalen Aliase G und L die manhinter alle moumlglichen Befehle schreiben kann umdie Ausgabe des entsprechenden Befehls in grepoder less umzuleiten

$ ls G txt

entspricht dem Befehl

$ ls | grep txt

copy freiesMagazin GNU FDL Ausgabe 032010 22

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 23: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

SYSTEM

oder

$ ps -e L

entspricht

$ ps -e | less

Natuumlrlich ist dann auch Folgendes moumlglich

$ ls G txt L

was folgendem Befehl entspricht

$ ls | grep txt | less

Suffix-AliaseMit Suffix-Aliasen kann man Programme festle-gen mit denen bestimmte Dateitypen (anhand ih-rer Endung) geoumlffnet werden sollen Man brauchtdann nur noch den Namen der Datei eingebenund sie wird mit dem entsprechenden Programmgeoumlffnet

Beispiel

$ alias -s pdf=evince

legt einen Alias fuumlr PDF-Dateien an die mitEvince geoumlffnet werden sollen Danach reicht dieEingabe von

$ dokumentpdf

und die Datei dokumentpdf wird mit Evince ge-oumlffnet

Aliase fuumlr Verzeichnisse Hashes

Mit sogenannten Hashes lassen sich Aliase fuumlrbeliebige Verzeichnisse anlegen Auf diese kanndann sehr einfach zugegriffen werden Mit demBefehl

$ hash -d perl=~developmentyscriptingperl

legt man einen Hash namens perl fuumlr das Ver-zeichnis ~developmentscriptingperl anAuf dieses Verzeichnis kann man jetzt mit ~perlzugreifen ndash auch innerhalb eines Befehls wie fol-gendes Beispiel zeigt

$ cp testscriptpl ~perl

Dieser Befehl kopiert die Datei testscriptplin das Verzeichnis ~developmentscriptingperl

Auto-CD

Mit der Option autocd kann man zum Wechselnin ein Verzeichnis einfach den Namen eines Ver-zeichnisses eingeben und das Kommando cd da-vor weglassen Wenn es keinen Befehl gibt derso heiszligt wie das Verzeichnis wird in das Ver-zeichnis gewechselt ndash falls es existiert

Kurze for-Schleifen

Statt einem

$ for i in eps do epstopdf y$i done

um alle EPS-Dateien in einem Verzeichnis inPDF-Dateien umzuwandeln genuumlgt unter zshdie kuumlrzere Form

$ for i (eps) epstopdf $i

Globale HistoryDie History die man mit der uarr -Taste durchgehenkann kann man in der zsh so einstellen dass siein jeder zsh-Instanz gleich ist Das heiszligt man hatnicht mehr fuumlr jedes Fenster eine eigene Histo-ry sondern kann mit der Taste uarr auch Befehleauswaumlhlen die in anderen Fenstern eingegebenwurden

Die History wird jedoch nur nach jedem Befehlaktualisiert Das heiszligt man muss gegebenfallseinmal Return druumlcken damit die Befehle auseinem anderen Fenster verfuumlgbar sind

Dieses Verhalten kann mit der Optionshare_history aktiviert werden

Directory StackWie die Bash hat die zsh auch einen DirectoryStack Mit dem Befehl pushd kann man das ak-tuelle Verzeichnis auf den Stack legen und mitpopd das jeweils letzte Verzeichnis vom Stacknehmen und dorthin springen

Mit der Option auto_pushd legt die zsh automa-tisch jedes Verzeichnis auf den Directory Stackaus welchem man in ein anderes Verzeichniswechselt So hat man immer eine History der Ver-zeichnisse in denen man war und kann mit popdsehr einfach wieder in Verzeichnisse wechselndie man vorher besucht hatte

copy freiesMagazin GNU FDL Ausgabe 032010 23

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 24: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

SYSTEM

GlobbingDie Nutzung von Wildcards ndash unter zsh bdquoGlob-bingldquo genannt ndash ist bei der Z-Shell etwas maumlch-tiger als in der Bash

Zunaumlchst gibt es rekursives Globbing So kannman mit dem Befehl

$ ls html

alle HTML-Dateien im aktuellen Verzeichnis undallen Unterverzeichnissen auflisten lassen

Es gibt jedoch auch noch Qualifier um Datei-en mit bestimmten Eigenschaften auszuwaumlhlenDiese schreibt man in runde Klammern So kannman mit normale Dateien mit Verzeichnis-se und mit symbolische Verweise pruumlfen Prak-tisch ist das beispielsweise wenn man allen Ver-zeichnissen ab einem bestimmten Verzeichnisdie Rechte 755 und allen Dateien 644 verge-ben moumlchte Dies kann man mit den folgendenzwei Befehlen bewerkstelligen anstatt mit findund exec zu arbeiten

$ chmod 755 ()$ chmod 644 ()

Zusaumltzlich gibt es auch Qualifier fuumlr verschiedeneDateirechte Folgender Befehl listet alle Dateienauf die von allen beschrieben werden koumlnnen

$ ls (W)

Auch nach der Dateigroumlszlige laumlsst sich suchen

$ print (L0)

listet alle leeren Dateien auf

Auch die Sortierung laumlsst sich beliebig anpassenMit dem Befehl

$ print (oL)

listet man alle Dateien der Groumlszlige nach von kleinnach groszlig auf Mit groszligem O wird die Sortierungumgekehrt

Somit laumlsst sich mittels Globbing in der zsh dasKommando find fast komplett ersetzen

Die hier gezeigten Beispiele sehen auf den ers-ten Blick recht kompliziert und kryptisch ausWenn man das Prinzip erst einmal verstandenhat und die wichtigsten Qualifier kennt ist esaber ganz einfach und sehr praktisch

Es gibt noch jede Menge weiterer Qualifier undMoumlglichkeiten fuumlr das Globbing (z B nur das ers-te oder eine bestimmte Anzahl von Elementenauszuwaumlhlen) Im zsh-Manual [4] gibt es eine Lis-te der Glob-Qualifier

Um alle Moumlglichkeiten nutzen zu koumlnnen solltedie Option extended_glob gesetzt werden

VervollstaumlndigungDie zsh hat wie die Bash einen Vervollstaumlndi-gungsmechanismus sodass man mit Tab Kom-mandos Dateinamen und vieles mehr vervoll-staumlndigen kann In der zsh ist dieser Mechanis-mus jedoch extrem gut konfigurier- und program-mierbar So kann man beispielsweise beim scp-Befehl der Dateien uumlber SSH kopiert die Ver-zeichnisse auf dem entfernten Rechner vervoll-

staumlndigen [5] und genau definieren welche Pro-gramme mit welchen Dateitypen zusammenar-beiten koumlnnen Fuumlr sehr viele Programme ist diesschon vorgefertigt sodass ein

$ latex dokultTABgt

automatisch zu

$ latex dokumenttex

vervollstaumlndigt wird

Sehr praktisch ist auch die Menuumlfunktion So wirdbeim ersten Druck auf die Tab -Taste wie in derBash so weit vervollstaumlndigt bis nicht mehr ein-deutig entschieden werden kann welche Datei(bzw welcher Befehl) gemeint ist Ein weitererDruck auf die Tab -Taste listet alle weiteren Moumlg-lichkeiten auf und jeder weitere Druck geht dieseMoumlglichkeiten durch

Wenn man also Dateien testtxt testfile1txt und testfile2txt hat und Folgen-des eingibt

$ ls teltTABgt

so wird zuerst auf test vervollstaumlndigt Ein wei-terer Druck gibt alle Moumlglichkeiten aus

testfile1txt testfile2txttesttxt

und ein dritter Druck auf die Tab -Taste vervoll-staumlndigt den Befehl zu

$ ls testfile1txt

copy freiesMagazin GNU FDL Ausgabe 032010 24

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 25: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

SYSTEM

Das ist viel schneller als erst ein f einzugebenum erneut Tab zu druumlcken und dann die 1 ein-zugeben um wiederum Tab zu druumlcken bis derDateiname endguumlltig vervollstaumlndigt wird

Ein weiterer Druck auf Tab nimmt dann dienaumlchste Moumlglichkeit In diesem Beispiel also

$ ls testfile2txt

und so weiter

ExpansionMit der Tab -Taste kann man in der zsh nicht nurKommandos Dateinamen etc vervollstaumlndigensondern auch Variablen expandieren Viele ken-nen die spezielle Variable die den zuletzt aus-gefuumlhrten Befehl enthaumllt Wenn man

$

eingibt und Tab druumlckt wird dies automatischzum zuletzt ausgefuumlhrten Befehl expandiert Ge-nauso kann man auch jede andere Variable ex-pandieren

$ $PWD

und Tab wird beispielsweise zu homezimondevelopment wenn man sich gerade in diesemVerzeichnis befindet

History-KontrolleWie bei der Bash auch kann man in der zshdie History durchsuchen Die zsh geht jedoch soweit dass man auch nach bestimmten Parame-tern suchen kann

Ein Beispiel

$ cp perlfoopl ~ydevelopmentprojektordner

Danach kommen ein paar andere KommandosMoumlchte man nun eine andere Datei in den glei-chen Projektordner kopieren reicht folgende Ein-gabe

$ cp perlbarpl proj3

Mit wird nach einem vorherigen Befehl ge-sucht Das proj ist eine Zeichenkette die in die-sem Befehl vorkam Mit dem 3 wird das dritteArgument genutzt Durch Expansion (siehe oben)kann man durch einen Druck auf Tab diesenAusdruck auch noch expandieren um sicherzu-gehen dass das richtige Argument ausgewaumlhltwurde Man kann zwar mit Alt + + wie in derBash die jeweils letzten Argumente durchgehenAuf diese Weise kann man aber auch das zweitevon drei Argumenten suchen

Es gibt noch wesentlich mehr Moumlglichkeiten dieHistory zu durchsuchen und zu verwenden

Ein Beispiel-Prompt der zsh

Hochkonfigurierbarer PromptIn der Z-Shell kann man nicht nur die linke Seitedes Prompts sondern auch die rechte Seite kon-

figurieren Der Prompt in der Abbildung ist eineabgeaumlnderte Version von Phils ZSH Prompt [6])

Die Anzeige der Uhrzeit inklusive Sekunden istrecht praktisch da man daran sieht wie langeein Befehl gedauert hat oder wann man ihn aus-gefuumlhrt hat Es gibt jedoch auch die Moumlglichkeitautomatisch die Ausgabe von time bei der Be-endigung eines Befehls ausgeben zu lassen derlaumlnger als eine vorher definierte Zeit benoumltigt hat

ZLE-WidgetsDer Z-Line-Editor (ZLE [7]) ist sozusagen die Ein-gabezeile in der zsh Mit diesem kann man sichkleine Programme schreiben die einem das Le-ben vereinfachen

Ein Beispiel waumlre ein Programm dass bei derEingabe von diese zu umwandelt Je-der weitere Punkt wird wieder umgewandelt Sokann man recht einfach folgendes eingeben

$ cd directory

Auf dem Bildschirm erscheint jedoch folgendes

$ cd directory

Diese Erweiterung ist nicht Standard der Z-ShellMan kann sie aber durch folgenden Code in derKonfigurationsdatei ~zshrc erzeugen

copy freiesMagazin GNU FDL Ausgabe 032010 25

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 26: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

SYSTEM

rationalise -dot() if [[ $LBUFFER = ]] then

LBUFFER+=else

LBUFFER+=fi

zle -N rationalise -dotbindkey rationalise -dot

Automatisches tee-ingIn der Z-Shell kann man die Ausgabe eines Kom-mandos recht einfach in mehrere verschiedeneDateien umleiten Statt wie in der Bash

$ ls | tee -a all | tee actual

zu schreiben kann man in der zsh einfach

$ ls gtgtall gtactual

eingeben Beide Befehle fuumlhren ls aus und haumln-gen die Ausgabe an die Datei all an und schrei-ben sie in die Datei actual wobei der Inhalt derletzten dabei uumlberschrieben wird Moumlchte mandie Ausgabe wie beim original tee-Befehl auchauf dem Bildschirm sehen so leitet man sie auchnoch auf STDOUT um

$ ls gtgtall gtactual gtamp1

Verzeichnisse durch Ersetzung wechselnEin Beispiel sollte dies am besten erklaumlrenAngenommen man hat die zwei Verzeichnis-se ~developmentscriptingperlmodulesund ~developmentscriptingpythonmodu

les und befindet sich in ~developmentscriptingperlmodules so kann man durch denBefehl

$ cd perl python

in das Verzeichnis ~developmentscriptingpythonmodules wechseln

Bei einem cd-Kommando mit zwei Parameternwird im aktuellen Verzeichnis-String das ersteWort durch das zweite ersetzt Hier also perldurch python

FazitViele der hier beschriebenen Beispiele sind si-cherlich auch mit Erweiterungen in der Bashmoumlglich Sie zeigen aber auf jeden Fall dass dieZ-Shell jede Menge interessante Moumlglichkeitenbietet Die oben gezeigten Funktionen sind abermeist nur angerissen und liefern nur eine klei-ne Auswahl von dem was die Z-Shell zur Verfuuml-gung stellt Daruumlber hinaus besitzt die Z-Shell ei-ne ganze Reihe Module (z B fuumlr Matheoperatio-nen oder einen eigenen FTP-Client) die man beiBedarf laden kann Sehr schoumln ist auch die Moumlg-lichkeit den Screen-Titel von der zsh aus zu set-zen [8] Es lohnt sich auf jeden Fall diese Shelletwas genauer zu betrachten

Im Netz findet man sehr viele Seiten welchedie Funktionen der zsh naumlher beschreiben dar-unter Michael Prokops zsh-Liebhaberseite [9]das ZshWiki [10] oder bdquoZzappers Best of ZSHTipsldquo [11]

LINKS

[1] httptiswwwcaseeduphpchetbashbashtophtml

[2] httpzshsourceforgenet[3] httpwwwfreiesmagazindefreiesMagazin-2009-

11[4] httpzshsourceforgenetDocReleasezsh_toc

html[5] httpblogpimpmyshellde20070121ssh-

completion-mit-zsh[6] httpaperiodicnetphilprompt[7] httpzshsourceforgenetDocReleasezsh_17

html[8] httpzinformatikdelinuxtitel-von-screen-

fenstern-automatisch-von-vim-bash-und-zsh-setzen

[9] httpmichael-prokopatcomputertools_zsh_liebhaberhtml

[10] httpzshwikiorg[11] httprayninfocouktipszshtipshtml

Autoreninformation

Marcel Jakobs arbeitet gerne aufder Kommandozeile Auf Anregungeines zsh-Nutzers hin hat er sichdiese Shell genauer angesehen undist aufgrund der vielen Moumlglichkeitendabei geblieben

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 26

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 27: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

BUumlRO

Google Charts ndash Diagramme uumlber das Internet erstellen von Jochen Schnelle

D ie Google Charts API [1] stellt eineMoumlglichkeit dar Diagramme schnellund einfach zu generieren ohne zu-

saumltzliche Software nur mit Hilfe eines Web-Browsers

EinleitungViele Diagramme die Daten graphisch visuali-sieren werden mit Hilfe der bekannten Office-Programme wie OpenOfficeorg Calc GnumericMicrosoft Excel etc erstellt Dies hat auch Vortei-le wenn man aus einer Vielzahl von Einzeldatengezielt bestimmte Ausschnitte darstellen moumlchteWill (oder muss) man jedoch dynamisch generier-te Daten beispielsweise aus einer Datenbank-Abfrage visualisieren und moumlchte das Diagrammdann auch noch in eine Internet-Seite einbin-den so ist dies mit den Office-Programmen nurschwerlich moumlglich

Fuumlr viele der gaumlngigen Programmiersprachengibt es Bibliotheken welche ebenfalls das Er-stellen von Diagrammen ermoumlglichen Allerdingsmuumlssen diese erst auf dem System installiert wer-den und erfordern eine mehr oder minder steileLernkurve und Programmiererfahrung in der ent-sprechenden Sprache

Eine Alternative stellt hier die Google ChartsAPI [1] dar Mit Hilfe von Google Charts koumln-nen Diagramme einfach per Web-Browser er-stellt werden in dem man alle Parameter in derURL uumlbergibt Als Ergebnis wird dann eine PNG-

Grafik mit dem entsprechendem Diagramm zu-ruumlck geliefert

DiagrammartenUumlber die Google Chart API lassen sich allegaumlngigen Diagrammtypen wie Balken- Linien-Punkt- und Tortendiagramme generieren Wei-terhin koumlnnen Venn-Diagramme [2] Landkarten-Diagramme QR-Barcodes [3] und sogenanntenGoogle-O-Meter-Diagramme erzeugt werden Ei-ne vollstaumlndige Uumlbersicht findet man auf derChart-Gallery-Seite [4] Je nach Diagrammartstehen diverse Optionen bei der Diagrammerstel-lung zur Verfuumlgung [5] wie z B AchsbeschriftungAnzeigen von Werten Markierung Einfaumlrben vonDiagrammbereichen oder eine zweite Achse

NutzungsbedingungenIm Gegensatz zu anderen Serviceangebotenund Applikationen von Google ist weder eine Re-gistrierung noch ein Benutzerkonto bei Googlenotwendig Google Charts kann direkt und oh-ne Weiteres benutzt werden Google erlaubt biszu 250000 Diagramme pro Tag mehr sind aufAnfrage moumlglich Auch wenn die Nutzungsbedin-gungen sehr moderat sind empfiehlt es sich vordem Einbinden von Diagrammen auf der eigenenWebseite die bdquoTerms of Servicesldquo [6] und die bdquoPri-vacy Policyldquo [7] zu lesen

Diagramm erzeugenIm Folgenden werden einige der moumlglichen Dia-grammtypen sowie diverse Optionen bei der Dia-

grammerzeugung gezeigt Dabei wird von demfiktiven Beispiel ausgegangen dass die Besu-cherzahlen einer Webseite pro Quartal der Jah-re 2009 und 2008 visualisiert werden sollen AlsZahlen werden fuumlr 2009 die Werte 1210 980670 und 1050 und fuumlr 2008 die Werte 1100 1025890 und 960 angenommen

Wie oben bereits erwaumlhnt werden die Daten fuumlrdie Diagramme komplett in der URL uumlbergebenDie Grund-URL fuumlr alle Abfragen lautet dabei

httpchartapisgooglecomchart

Danach folgen die Daten bzw Parameter jeweilsdurch ein Und-Zeichen amp getrennt

Benoumltigte ParameterUnabhaumlngig von der Diagrammart werden dreiAngaben immer benoumltigt Dies sind die Dia-grammart die Groumlszlige des Diagramms in Pixelnsowie die Daten welche dargestellt werden sol-len Alle weiteren Angaben sind optional

Die Art des Diagramms wird mit dem Parametercht= gefolgt von einem zwei oder drei-stelligenBuchstaben-Zahlencode angegeben So wuumlrdez B cht=bvg ein Balkendiagramm mit senkrech-ten Balken erzeugen oder cht=lc ein einfachesLiniendiagramm Eine Uumlbersicht uumlber alle Dia-gramme und deren Abkuumlrzung findet man auf derChart-Gallery-Seite [4]

Die Groumlszlige des Diagramms wird dem Parame-ter chs= gefolgt von der Groumlszligenangabe in Pi-

copy freiesMagazin GNU FDL Ausgabe 032010 27

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 28: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

BUumlRO

xel angegeben Die Groumlszlige muss dabei immerin der Form bdquoBreitetimesHoumlheldquo angegeben werdenalso z B chs=500x400 Die Gesamtgroumlszlige desDiagramms ist allerdings auf 30000 Pixel be-schraumlnkt

Die Daten die im Diagramm dargestellt werdensollen werden mit dem Parameter chd= uumlberge-ben Die Daten werden grundsaumltzlich codiert an-gegeben was im folgenden Abschnitt genauer er-klaumlrt wird

Ein vertikales Balkendiagramm mit einer Groumlszligevon 300times200 Pixeln und Extended Codierung ndashhier werden die Daten 2009 aus dem oben ge-nannten Beispiel dargestellt ndash ist uumlber folgendeURL abrufbar

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=eS6PUKeQA

Ein einfaches Google-Chart-Diagramm

Da die Charts API ein PNG-Bild zuruumlckliefertwelches von allen gaumlngigen Browsern dargestelltwerden kann kann man das Diagramm auch ein-fach in eine HTML-basierte Webseite einbinden

lthtmlgtltbodygt

lth1gtEin Google Charts Diagrammylth1gtltimg src=httpchartapisygooglecomchartcht=bvgampchsy=300x200ampchd=eS6PUKeQAgt

ltbodygtlthtmlgt

Listing 1 google-charts-diagrammhtml

Daten und DatencodierungWie oben bereits erwaumlhnt werden die Daten fuumlrdas Diagramm an Google Charts codiert uumlberge-ben wobei codiert hier nicht im Sinne von bdquover-schluumlsseltldquo gemeint ist Es gibt drei verschiedeneCodierungen Text Simple und Extended [8] DieCodierung wird in Form eines einzelnen Buchsta-bens festgelegt welcher an der Parameter chd=angehaumlngt wird

chd=t fuumlr Text chd=s fuumlr Simple und chd=e fuumlr Extended

Die Textcodierung ist eigentlich gar keine Codie-rung da hier die Werte als Zahl unveraumlndertuumlbergeben werden Der vollstaumlndige Parameterfuumlr die Zugriffszahlen 2009 gemaumlszlig Beispiel ist al-so chd=t12109806701050 Allerdings gehtdie Textcodierung per Voreinstellung davon ausdass alle Werte im Bereich von 0 bis 100 liegenAlles was daruumlber liegt wird einfach bei 100 ab-geschnitten Daher ist bei Zahlen groumlszliger 100 zu-saumltzlich eine Angabe der Skalierung notwendigin der der Min- und Max-Wert explizit angegebenwird Der entsprechende Parameter lautet chds=

fuumlr das Beispiel hier also chds=01210 Der Min-und Max-Wert muumlssen dabei nicht den tatsaumlch-lichen Werten entsprechen Google Charts be-nutzt die Werte um die Datenpunkte in Relati-on zur Houmlhe der Y-Achse welche dem Max-Wertentspricht zu setzen Moumlchte man also dass dasDiagramm etwas houmlher ist als der houmlchste Daten-punkt dann wuumlrde man hier z B chds=01500setzen So deckt die Y-Achse den Bereich von 0bis 1500 ab Liegen alle Datenwerte im Bereich0 bis 100 wie z B Prozentwerte dann ist die An-gabe von chds= nicht notwendig

Bei der Codierung bdquoSimpleldquo stehen 63 Werte zurVerfuumlgung die uumlber die 26 Buchstaben des Al-phabets in Groszlig- und Kleinschreibung und dieZahlen von 0 bis 9 dargestellt werden Die Co-dierung bdquoExtendedldquo nutzt die gleichen Zeichenwie Simple und zusaumltzlich noch den Punkt so-wie das Minus-Zeichen - aber es werden im-mer Paare von Zeichen verwendet wie man auchim obigen Beispiel sieht Dadurch ist ein Werte-bereich von 0 bis 4095 moumlglich Natuumlrlich kannman auch groumlszligere Werte mit Hilfe von Simpleund Extended darstellen Dazu muss man diedarzustellenden Werte auf 63 bzw 4095 normie-ren Auf der Uumlbersichtsseite [9] findet man eineJavaScript-Funktion welche dies fuumlr die Simple-Codierung direkt durchfuumlhrt

Die Verwendung von Simple- und Extended-Codierungen hat zwei Vorteile Zum einen wirddie URL kuumlrzer was nicht zu unterschaumltzen istgerade wenn man komplexe Diagramme mit vie-len Parametern erzeugt Zum anderen wird die

copy freiesMagazin GNU FDL Ausgabe 032010 28

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 29: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

BUumlRO

Y-Achse immer automatisch richtig skaliert DerNachteil ist dass die Daten nicht direkt ablesbarsind was gerade bei der Uumlberpruumlfung von Dia-grammen hinderlich sein kann

Natuumlrlich ist es auch egal fuumlr welche Codierungmoumlglich mehr als einen Datensatz an die ChartsAPI zu uumlbergeben Dazu muumlssen die einzelnenDatensaumltze mittels Pipe-Zeichen | getrennt wer-den Moumlchte man die Werte von 2009 und 2008aus dem Beispiel in einem Balkendiagramm dar-stellen so lautet die entsprechenden URL unterVerwendung der Text-Codierung

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300

Nun ist dieses Diagramm nicht besonders aus-sagekraumlftig weil Google Charts fuumlr beide Da-tenreihen die gleiche Farbe verwendet Mankann jedoch ohne weiteres eigene Farbvorga-ben machen indem man den Parameter chco=uumlbergibt Die Farbwerte werden in den HTML-uumlblichen Hexadezimal-Werten fuumlr den RGB-Farbraum uumlbergeben Im folgenden Beispiel wirddie erste Datenreihe rot die zweite blau darge-stellt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ff

Moumlchte man die Diagrammart aumlndern so tauschtman einfach den Wert von cht= aus z B

cht=lc (statt cht=bvg) fuumlr ein Liniendiagrammcht=p3 fuumlr ein Torten-Diagramm oder cht=bhgfuumlr ein horizontales Balkendiagramm

Balkendiagramm mit zwei Datenreihen undeigener Farbeinstellung

Beschriftungen fuumlr DiagrammeWie man in den obigen Beispielen sieht er-zeugt Google Charts ndash im Gegensatz zu Office-Programmen ndash keine Achsenbeschriftungen Le-genden etc fuumlr die Diagramme Beschriftungenmuumlssen explizit als Parameter in der URL ange-geben werden

Einen Diagrammtitel erzeugt man mit dem Pa-rameter chtt= Besteht der Titel aus mehr alseinem Wort so muumlssen die Worte per Plus-Zeichen verbunden werden Ein Zeilenumbruchwird per Pipe-Zeichen erzeugt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchtt=yBesucher+Website|pro+Quartal+2009

Diagramm mit Titel und Umbruch

Eine Legende erzeugt man mit dem Parameterchdl= gefolgt von dem Text der in der Legen-de erscheinen soll Mehrere Worte muumlssen wie-der per Plus-Zeichen verbunden werden die Be-schriftungen fuumlr die einzelnen Datenreihen wer-den per Pipe-Zeichen getrennt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchdly=2009|2008

Um Werte auf der X- und Y-Achse anzuzeigenmuss man den Parameter chxt= angeben undals Wert spezifizieren fuumlr welche Achsen dieWerte angezeigt werden sollen Google Chartskennt vier verschiedene Achsen wobei hier nurdie X- und Y-Achse genutzt werden d h der vol-le Parameter lautet chxt=xy

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01300ampchxt=xyy

copy freiesMagazin GNU FDL Ausgabe 032010 29

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 30: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

BUumlRO

Allerdings beschriftet Google Charts die Wer-te so nur mit den Standardvorgaben d h dieX-Achse wird 12 n durchnummeriert die Y-Achse wird von 0 bis 100 beschriftet unabhaumln-gig von den tatsaumlchlich uumlbergebenen Daten Ent-spricht die Beschriftung nicht den eigenen Wer-ten wie in diesem Beispiel so muss man denText fuumlr die Beschriftung zusaumltzlich angebenDies geschieht mit dem Parameter chxl= DieUumlbergabe der Werte ist hier etwas komplexer Alserstes muss die fortlaufende Nummer der Ach-se angegeben werden Die Nummerierung ent-spricht der Reihenfolge der Achsen bei chxt=die Zaumlhlung beginnt jedoch bei 0 Dann werdendie Werte getrennt durch ein Pipe-Zeichen ange-geben

Gemaumlszlig dem hier verwendeten Beispiel soll die X-Achse mit bdquo1Q 2Q 3Q 4Qldquo beschriftet werdendie Y-Achse von 0 bis 1500 in 500er Schritten

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|500|1000|1500

Per Voreinstellung wird die Beschriftung aumlquidi-stant angeordnet was fuumlr das obige Beispiel pas-send ist Benoumltigt man jedoch eine Beschriftungbei der eine Positionierung nicht-aumlquidistant er-folgen soll so muss man zusaumltzlich die Positi-on der Beschriftung uumlber den Parameter chxp=angeben Dabei wird zuerst die Achse angege-ben und dann die Position der Werte Die Posi-tion wird im Bereich von 0 bis 100 angegeben

Diagramm mit X- und Y-Achsen-Beschriftung

Im Folgenden wird die Y-Achse aus dem Dia-gramm gemaumlszlig dem vorherigen Beispiel mit denWerten 0 150 750 und 1500 beschriftet

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050ampchds=01500ampchxt=xyyampchxl=0|1Q|2Q|3Q|4Qy|1|0|150|750|1500ampchxp=101550100

Zusaumltzlich zur Achsenbeschriftung koumlnnen dieDatenpunkte im Diagramm beschriftet werdenDazu wird der Parameter chm= benoumltigt Die zuuumlbergebenden Werte muten etwas kryptisch anund koumlnnen variieren mehr Details findet man inder Chart Feature List [10] An dritter Stelle wirdaber immer die Nummer der zugehoumlrigen Daten-reihe angegeben die Zaumlhlung beginnt auch hiermit 0

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchm=Nyf00000000-111|Nf0y0000001-111

Diagramm mit beschrifteten Datenpunkten

X-Achse verschiebenEs besteht die Moumlglichkeit die X-Achse zu ver-schieben Dies ist hilfreich wenn z B Unter-schiede zwischen zwei Datenreihen visualisiertwerden sollen Im hier verwendeten Beispielkann so die Differenz der Besucherzahl pro Quar-tal im Vergleich zum Vorjahr gezeigt werden DieX-Achse wird uumlber das Parameter chp= verscho-ben Der Wert muss eine Zahl zwischen 0 und1 sein 0 entspricht dabei der uumlblichen X-Achseam unteren Rand bei 1 laumlge die Achse am obe-ren Ende des Diagramms Im folgenden wird dieX-Achse genau in die Mitte des Diagramms ge-legt

httpchartapisgooglecomchartchty=bvgampchs=300x200ampchd=ty120-45-23090ampchds=-250250ampchp=05

Wichtig ist dass durch die Verschiebung der X-Achse nicht automatisch der dargestellte Werte-Bereich verschoben wird Daher sollte zusaumltzlichimmer der Parameter chds= angegeben werdendamit die Werte korrekt angezeigt werden

copy freiesMagazin GNU FDL Ausgabe 032010 30

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 31: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

BUumlRO

Weitere FormatierungenDie Google Charts API kennt noch eine Reihevon weiteren hier nicht gezeigten MoumlglichkeitenDazu zaumlhlen u a eine farbliche Formatierungder Achsen das Einfaumlrben von Diagrammberei-chen das Aumlndern des Linienstils das Einblendenvon Gitternetzlinien spezielle Marker doppelteX- und Y-Achsen Beschriftung etc Die entspre-chenden Informationen findet man in der ChartFeature List [11]

Google-o-Meter-DiagrammeEin einfaches aber nuumltzliches Diagramm ist dassogenannte Google-o-Meter kurz GoM Hierbeihandelt es sich um eine Art Tachonadel diestandardmaumlszligig Werte im Bereich von 0 bis 100auf einer farbigen Skala darstellt Die gaumlngigenOffice-Programme bieten hier kein AumlquivalentDas GoM kann z B dazu genutzt werden umeine Auslastung oder einen Erfuumlllungsgrad dar-zustellen

httpchartapisgooglecomchartchty=gomampchs=300x200ampchd=t75

Google-o-Meter-Diagramm

Karten-Diagramm

Auch hier funktionieren dieoben genannten Parameterwie Diagrammtitel und Be-schriftung des Datenpunk-tes Uumlber chco= kann dieFarbeinteilung der Skala ge-aumlndert werden

Karten-DiagrammeEine weitere interessanteDiagrammart welche in die-ser Form in den uumlblichenOffice-Programmen auchnicht vorhanden ist sindKarten-Diagramme Dabeikoumlnnen Laumlnder auf einer (Welt-)Karte gemaumlszligdem ihnen zugeordneten Datenwert eingefaumlrbtwerden Eine Uumlbersicht uumlber die vorhanden Kar-ten gibt die Map-Charts-Uumlbersichtsseite [12] DieKarte wird uumlber den Parameter cht=tampchtm=gefolgt vom Namen der Karte festgelegt

Die Namen der Laumlnder werden als zweistelligerISO-3316-Code uumlbergeben (eine vollstaumlndigeListe der Codes findet man bei der ISO [13]) derentsprechende Parameter heiszligt chld= Weiter-hin muumlssen bei Karten-Diagrammen mindestensdrei Farben definiert werden die erste Farbeist die Vorgabe-Farbe fuumlr alle Laumlnder fuumlr diekein Datenwert vorliegt Hier empfiehlt sich im-mer weiszlig (=ffffff) als Farbe zu nutzen Dienaumlchsten beiden Farbwerte definieren die Start-und die Endfarbe den Verlauf dazwischen kanndie Charts API selber berechnen Des Weiteren

empfiehlt es sich bei Karten immer den Para-meter chf=bgsEAF7FE zu nutzen wodurch derHintergrund ndash bei Karten also die Meeresflaumlchendash in einem Blauton eingefaumlrbt wird Die Datenkoumlnnen in den bekannten Codierungen vorliegenEine Einschraumlnkung ist dass Kartendiagrammemaximal 440times220 Pixel groszlig sein koumlnnen Im fol-genden als Beispiel eine Europa-Karte bei derden Laumlndern Deutschland Belgien SchwedenItalien und Rumaumlnien ein Wert zugewiesen wird

httpchartapisgooglecomchartchty=tampchtm=europeampchs=440x220ampchd=ty7540951060ampchld=DEBESEITROampchco=yffffffff0000 00ff00ampchf=bgsEAF7FE

Nachteile und SchwierigkeitenAuch wenn sich Diagramme mit Hilfe der GoogleCharts API schnell und einfach erzeugen las-sen und dazu hinreichend Optionen zur Forma-

copy freiesMagazin GNU FDL Ausgabe 032010 31

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 32: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

BUumlRO

tierung der Diagramme vorhanden sind so gibtes doch einige negative Punkte

Hat man einen Fehler in der URL z B wenn manversehentlich ein Pipe-Zeichen statt eines Kom-mas verwendet so erhaumllt man entweder ein lee-res Diagramm oder eine wenig aussagekraumlftigeFehlermeldung bdquoBad data requestldquo Den Fehlermuss man haumlndisch suchen was sehr schwierigsein kann Nur wenn einer der immer benoumltigtenParameter wie z B die Diagrammgroumlszlige fehlt er-haumllt man eine konkretere Fehlermeldung

Des Weiteren koumlnnen die URLs der Diagrammesehr lang sein wenn man viele der Optionennutzt z B fasst

httpchartapisgooglecomchartchty=bvgampchs=400x200ampchd=ty12109806701050|11001025890960ampychds=01300ampchco=ff0000 0000ffampchtt=yBesucher+pro+Quartalampchxt=xyampchxly=0|1Q|2Q|3Q|4Q|1|0|500|1000|1500ampampychdl=2009|2008ampchm=Nf0y0000000-111|Nf00000001-111

alle obigen Beispiel zur Besucherstatistik 2008und 2009 in einem Diagramm zusammen DieLaumlnge der URL macht das Suchen von Fehlernschwierig Abhilfe koumlnnen hier Bibliotheken schaf-fen die fuumlr verschiedene Programmiersprachenwie Python [14] [15] oder Perl [16] existieren

Die Dokumentation der Google Charts API istzwar vollstaumlndig allerdings ist sie wenn auch

strukturiert auf mehrere Seiten verteilt Auszliger-dem werden immer nur kurze Schnipsel der Pa-rameter gezeigt selten vollstaumlndige Parameter-saumltze und fast nie komplette URL-Beispiele Diesmacht den Einsteig etwas schwierig auch wenndie API an sich sehr einfach ist

ZusammenfassungDie Google Charts API stellt eine schnelle und ndashnach etwas Einarbeitung ndash einfache Art dar Dia-gramme zu erstellen Die Diagramme koumlnnen di-rekt in eine HTML-Seite eingebettet werden DieAPI ist komplett uumlber die URL aufrufbar und so-mit von jedem Browser aus und plattformunab-haumlngig nutzbar Die Auswahl der Diagrammartenund die Formatierungsmoumlglichkeiten sind sehrgut mit dem Google-o-Meter QR-Barcodes undden Karten-Diagrammen stehen drei Diagramm-typen zur Auswahl die mit konventionellen Office-Programmen nur schwer zu realisieren sind

LINKS[1] httpcodegooglecomintlde-DEapis

charttools[2] httpdewikipediaorgwikiVenn-Diagramm[3] httpdewikipediaorgwikiBAR-CodeQR-Code[4] httpcodegooglecomintlde-DEapischart

docsgallerychart_gallhtml[5] httpcodegooglecomintlde-DEapischart

docsmaking_chartshtml[6] httpcodegooglecomintlde-DEtermshtml[7] httpwwwgooglecomintlde-DEprivacy

html

[8] httpcodegooglecomintlde-DEapischartdocsdata_formatshtml

[9] httpcodegooglecomintlde-DEapischartdocsdata_formatshtmlencoding_data

[10] httpcodegooglecomintlde-DEapischartdocschart_paramshtmlgcharts_line_markers

[11] httpcodegooglecomintlde-DEapischartdocschart_paramshtml

[12] httpcodegooglecomintlde-DEapischartdocsgallerymap_chartshtml

[13] httpwwwisoorgisoenglish_country_names_and_code_elements

[14] httpcodegooglecompgoogle-chartwrapper

[15] httppygooglechartslowchopcompygooglechart

[16] httpsearchcpanorg~dmakiGoogle-Chart-005014libGoogleChartpm

Autoreninformation

Jochen Schnelle nutzt GoogleCharts beruflich fuumlr diverse Projekteund Intranet-Seiten Privat ist erUbuntu-Nutzer und seit mehreren Jah-ren im Wiki-Team von ubuntuusersdeaktiv

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 32

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 33: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Vim und das Surround-Plug-in von Volker Duetsch

D er Editor Vim [1] bzw sein grafischesPendant GVim bieten von Haus ausein enormes Leistungsspektrum Die-

ses kann mit sogenannten Plug-ins erweitertwerden In diesem Artikel soll das Surround-Plug-in vorgestellt werden

Wer noch nie etwas mit dem Vim-Editor zu tunhatte findet im Artikel bdquoVim ndash Ein Schnellein-stiegldquo freiesMagazin 082008 [2] eine Einstiegs-hilfe in die Materie die auch das Verstehen undNachvollziehen der Beispiele vereinfacht

Die Plug-insErweiterungen in Vim werden inder Regel in Vimscript erstellt Eine dieserErweiterungen ist das Plug-in surroundvimDieses erleichtert vor allem den Umgang mitMarkup-Dateien (z B HTML XML DocBook-XML) ist aber auch bei der Erstellung von LATEX-Dokumenten und generell bei der Programmie-rung sehr hilfreich Das Surround-Plug-in stelltTastenkombinationen zur Verfuumlgung die das Er-stellen Veraumlndern und Entfernen von Tags Klam-merpaaren Anfuumlhrungszeichen und deren Inhal-te vereinfachen

Hinweis Dieser Artikel wird nicht explizit Vim-script behandeln Wer sich dafuumlr interessiert fin-det auf der Website von IBM developerWorks ei-nige sehr interessante Artikel [3] [4]

Modi und ModiwechselVim ist ein modaler Editor d h er bietet ver-schiedene Modi zum Erstellen Bearbeiten und

Veraumlndern von Dateiinhalten Dieses Konzept istauf den ersten Blick ungewoumlhnlich boumlse Zungenwuumlrden behaupten nicht mehr zeitgemaumlszlig Abernach einer gewissen Lern- und Einarbeitungs-phase lernt man die Vorzuumlge dieses Bedienkon-zeptes schaumltzen

Nach dem Start des Vim-Editors befindet sichdieser im Normalmodus (Voraussetzung manstartet Vim ohne modiveraumlndernde Kommando-zeilenparameter) Der einfachste Weg um inden Einfuumlgemodus zu gelangen ist die TasteI Um den Einfuumlgemodus wieder zu verlassenwird Esc betaumltigt Den Kommandozeilenmoduserreicht man mit (also Umschalt + ) und ver-laumlsst ihn wieder mit Esc Eine recht hilfreicheGrafik zum Modi-Wechsel findet man im englisch-sprachigen Dokument bdquoVim Introduction and Tu-torialldquo [5]

Download und InstallationDas gerade mal 94 KB groszlige Plug-in muss nachdem Download [6] noch installiert werden Dazuentpackt man die ZIP-Datei in den verstecktenOrdner vim im Homeverzeichnis

$ unzip surroundzip -d ~vim

Das ZIP-Archiv enthaumllt zwei Dateien surroundvim und surroundtxt Durch die Ausfuumlhrungdes unzip-Befehls wird surroundvim das ei-gentliche Plug-in in ~vimplugin abgelegtDie Datei surroundtxt welche den Hilfetext

bereitstellt landet in ~vimdoc Der Hilfetextist damit aber noch nicht im Editor abrufbar Diesgeschieht mittels helptags ~vimdoc Die-ses Kommando wird im Editor im Kommandozei-lenmodus eingegeben Das war auch schon dieInstallation

AnwendungDie Funktionsweise laumlsst sich am besten anhandvon Beispielen beschreiben

Folgende Konventionen gelten fuumlr die Beispiele

bdquoVorherldquo beschreibt die Ausgangssituation der zubearbeitendenveraumlndernden Textpassage

bdquoNachherldquo stellt das Ergebnis nach der Ausfuumlh-rung des Kommandos dar

bdquoCursorpositionldquo beschreibt wo bzw innerhalbwelches Bereichs sich der Cursor befinden mussdamit das Kommando korrekt ausgefuumlhrt wird

bdquoKommandoldquo stellt den Befehl fuumlr die Verarbei-tung dar Alle Kommandos werden wenn nichtanders angegeben im Normalmodus eingebenEin Nachteil dabei ist dass die Kommandos uumlber-wiegend bdquoblindldquo eingegeben werden Sollte mansich dabei einmal vertippen bzw unsicher seinwas man gerade eingegeben hat kann man denVorgang mittels Esc abbrechen Sieht das Er-gebnis nach dem Ausfuumlhren des Kommandosnicht so aus wie man es erwartet hat ndash kein Pro-blem Dafuumlr gibt es die Undo-Funktion von VimMittels U im Normalmodus oder earlier im

copy freiesMagazin GNU FDL Ausgabe 032010 33

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 34: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Kommandozeilenmodus ist die Ausgangssituati-on wieder hergestellt

Abschlieszligend wird versucht jedes Beispiel zu er-klaumlren Dies soll die auf den ersten Blick teilweiserecht kryptischen Kommandos entschluumlsseln unddas Erlernen erleichtern

Beispiel 1Vorher Hello World

Nachher ltH1gtHello WorldltH1gt

Cursorposition Cursor befindet sich innerhalb derAnfuumlhrungszeichen

Kommando cstH1

Veraumlndere (c=change) die Hello World umgeben-den (s=surrounding) doppelten Anfuumlhrungszei-chen () zu einem Tag (t) der Form H1

Beispiel 2Vorher ltpgtIch bin ein Absatzltpgt

Nachher Ich bin ein Absatz

Cursorposition Cursor steht innerhalb des oumlffnen-den ltpgt- und schlieszligenden ltpgt-Tag

Kommando dst

Entferne (d=delete) die umgebenen (s=sur-rounding) Tags (t) die bdquoIch bin ein Absatzldquo um-geben

Beispiel 3Vorher (22)+4

Nachher 22+4

Cursorposition Cursor steht innerhalb des Klam-merpaares

Kommando ds(

Entferne (d=delete s=surrounding) das Klam-mernpaar (() welches den Ausdruck bdquo22ldquo um-gibt Alternativ kann auch das Kommando ds)verwendet werden

Beispiel 4Vorher Eine kurze Textzeile

Nachher ltpgtEine kurze Textzeileltpgt

Cursorposition Cursor befindet sich in der ZeileKommando ysstp

Umgib (y=yank s=surrounding) den gesamtenSatz (s=sentence) bdquoEine kurze Textzeileldquo mitdem Tag (t) der Form p

Beispiel 5Vorher Hello World

Nachher Hello (World)

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw)

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammernpaar ())

Beispiel 6Vorher Hello World

Nachher Hello ( World )

Cursorposition Cursor befindet sich auf dem Buch-staben W

Kommando ysw(

Umgib (y=yank s=surrounding) das Wort(w=word) bdquoWorldldquo mit einem Klammerpaar (()Man beachte den Unterschied zu dem vorherge-henden Beispiel durch die Eingabe von ( statt) wird zusaumltzlich innerhalb des Klammerpaares

ein Leerzeichen zu Beginn und Ende des WortesbdquoWorldldquo eingefuumlgt

Beispiel 7Vorher Hello World

Nachher Hello World

Cursorposition Cursor befindet sich auf HelloKommando ysiw

Umgib (y=yank s=surrounding) das Wort(i=inner w=word) bdquoHelloldquo mit einem doppeltenAnfuumlhrungszeichen ()

Warum ysiw und nicht yswDie Wirkungsweise der beiden Kommandos istnur dann identisch wenn sich der Cursor waumlh-rend der Ausfuumlhrung des Kommandos direkt aufdem Buchstaben bdquoHldquo von bdquoHello Worldldquo befindetBefindet sich der Cursor z B auf dem Buchsta-ben bdquoeldquo von bdquoHello Worldldquo passiert Folgendesysw wird zu Hello World waumlhrend dies beiysiw zu Hello World fuumlhrt

w definiert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung rechts Der Unterschied zwi-schen w und iw (inner word) besteht darin wieWortgrenzen definiert bzw behandelt werden iwdefiniert die Wortgrenze von der aktuellen Cur-sorposition bis zum naumlchsten auftretenden Leer-zeichen in Richtung links und rechts

iw oder auch aw sind sogenannte TextobjectsDiese Textobjects stehen nur zur Verfuumlgungwenn Vim mit der Option +textobjects kompi-liert wurde Um diese Einstellung zu uumlberpruumlfen

copy freiesMagazin GNU FDL Ausgabe 032010 34

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 35: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

wird im Ex-Mode ve eingegeben Erscheint inder Ausgabe +textobjects steht diese Optionzu Verfuumlgung Erscheint -textobjects stehendiese Optionen nicht zur Verfuumlgung und die Bei-spiele koumlnnen nur eingeschraumlnkt nachvollzogenwerden

Die Textobjects sind eine sehr maumlchtige Funktiondes Vim-Editors Mehr Informationen dazu findetman in der Hilfe mittels help text-objects

Waumlre die Cursorposition in den Beispielen 5 und6 also abweichend sollte man auf Textobjectszuruumlckgreifen und das Kommando entsprechendfuumlr Beispiel 5 ysiw) oder ysiw( fuumlr Beispiel 6 an-passen

Beispiel 8Vorher ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

Nachher ltulgt

ltligtListeneintrag 1ltligt

ltligtListeneintrag 2ltligt

ltulgt

Cursorposition Cursor befindet sich auf lt vonltligtListeneintrag 1

Kommando ystul

Umschlieszlige (y=yank s=surrounding) den Absatz(=paragraph) mit einen Tag (t) der Form ul

Beispiel 9Vorher $varIn = [Hello World]

Nachher $varIn = [rsquoHello Worldrsquo]

Cursorposition Cursor befindet sich auf HelloKommando csrsquo

Veraumlndere (c=change) die bdquoHello Worldldquo umge-benden (s=surrounding) doppelten Anfuumlhrungs-zeichen () in einfache Anfuumlhrungszeichen (rsquo)

Weitere AnwendungDas Surround-Plug-in ist auf den Normalmodusausgelegt Einige Funktionen stehen aber auchim visuellen Modus und im Einfuumlgemodus zurVerfuumlgung

Der visuelle Modus ist eine Vim-Verbesserungund aumlhnelt dem Normalmodus Mit Hilfe derMaus oder Tastenkombinationen koumlnnen Berei-che markiert werden in denen dann auch nurdas Kommando wirkt

Im Einfuumlgemodus ist gerade die FunktionStrg + S gefolgt von z B rsquo ( [ oder inter-essant da gleichzeitig zum oumlffnenden auch dasschlieszligende Symbol erzeugt wird Ein unschoumlnerNebeneffekt der bei der Konsolenversion vonVim auftreten kann ist dass die Eingabe vonStrg + S dazu fuumlhrt dass bei einigen Terminalsdie Bildschirmausgabe unterbrochen wird DasTerminal erweckt den Eindruck als waumlre es ein-gefroren aber Strg + Q aktiviert die Bildschirm-ausgabe wieder

Weitere InformationenWeitere Informationen zum Surround-Plug-in bie-tet die Dokumentation des Plug-ins welcheim Kommandozeilenmodus mit help surroundaufgerufen wird

Eine Erweiterung die die Wiederholung der Kom-mandos mittels ermoumlglicht stellt das Plug-in

repeatvim [7] dar welches ebenfalls vom Au-tor des Surround-Plug-ins Tim Pope stammt

Besonders fuumlr einen vertiefenden Einstieg istbdquoSpeaking UNIX The new and improved Vim edi-torldquo [8] zu empfehlen

LINKS

[1] httpwwwvimorg[2] httpwwwfreiesmagazindefreiesMagazin-2008-

08[3] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-1indexhtml[4] httpwwwibmcomdeveloperworkslinuxlibrary

l-vim-script-2indexhtml[5] httpbloginterlinkedorgtutorialsvim_tutorial

html[6] httpwwwvimorgscriptsscriptphpscript_id=

1697[7] httpwwwvimorgscriptsscriptphpscript_id=

2136[8] httpwwwibmcomdeveloperworksaixlibrary

au-speakingunix_vimindexhtml

Autoreninformation

Volker Duetsch ist uumlberzeugterNutzer des modalen Editierens aufverschiedenen Betriebssystemen undsetzt dafuumlr Vim ein

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 35

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 36: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Effektives automatisiertes Bearbeiten von Daten mit sed von Christian Brabandt

D ieser Artikel gibt einen Uumlberblick uumlberGNU sed [1] und seine Anwendungs-moumlglichkeiten Andere sed-Versionen

sollten genauso funktionieren koumlnnen sichaber in Details leider durchaus unterscheidenEine schoumlne Uumlbersicht uumlber Inkompatibiltauml-ten finden sich in den sed-FAQ auf Source-Forge [2]

Was ist sedsed ist eine Abkuumlrzung und steht fuumlr bdquoStream Edi-torldquo was bedeutet dass es sich dabei um einennicht-interaktiven Editor handelt der somit fuumlr dieStapelverarbeitung sehr gut geeignet ist

Waumlhrend man bei einem interaktiven Editor typi-scherweise den Cursor bewegt und an bestimm-ten Stellen auf dem Monitor Veraumlnderungen vor-nimmt arbeitet man bei sed in Ermangelungeines Cursors mit Aktionen die typischerweisedurch Muster oder Zeilennummern spezifiziertwerden Das klingt im ersten Moment etwas selt-sam aber man kann damit sehr flexibel mit ei-nem Einzeiler Aktionen durchfuumlhren

Das heiszligt sed liest die zu bearbeitende Dateinormalerweise zeilenweise in einen Puffer (denbdquoPattern Spaceldquo) pruumlft ob die angegebenen Be-dingungen zutreffen und falls ja fuumlhrt es die Aumln-derungen durch und gibt diesen Puffer wiederaus

So kann man zum Beispiel einfach in einer Ein-gabe alle Vorkommen von dem falschen eng-

lischen Artikel bdquotehldquo durch die korrekte Versionbdquotheldquo ersetzen Oder man kann alle Kommentar-zeichen aus einer Konfigurationsdatei entfernenEs gab sogar schon Leute die mit sed Spiele pro-grammiert einen Debugger implementiert odereinen Webserver umgesetzt haben

Dies alles obwohl die Sprache keine Variablenkennt und nur eingeschraumlnkte KontrollstrukturenSeine Sprachelemente erscheinen auf den ers-ten Blick etwas kryptisch und sehen oft auch auswie feinster Buchstabensalat

sed hat wie so viele praktische Werkzeuge sei-nen Ursprung in der Unix-Welt und wurde 1973oder 1974 (Unix Version 4) als Erweiterung bzwNachfolger von grep und ed entwickelt Die ver-wendete Syntax und Lexik beeinflusste auchmaszliggeblich Programme wie vi perl awk und ver-mutlich auch die ein oder andere Shell

Da sed so weit verbreitet ist gehoumlrt es auch zurPOSIX Single Unix Specification beziehungswei-se zum Standard IEEE 10031 (beide Standardsbezeichnen dasselbe nachzulesen auf der Seitevon bdquoThe Open Groupldquo [3]) Beide Standards de-finieren u a Schnittstellen und Werkzeuge dieauf einem System vorhanden sein muumlssen umden Markennamen UNIX tragen zu duumlrfen

Damit ist der grundsaumltzliche Befehlssatz und dieGrammatik von sed die man erwarten kannauch schon standardisiert Falls wider Erwartenkein sed enthalten sein sollte kann man es leicht

uumlber die Paketverwaltung uumlber das gleichnamigePaket nachinstallieren

sed und regulaumlre Ausdruumlckesed arbeitet wie oben erwaumlhnt mit Mustern diebestimmte Teile definieren an denen Aumlnderun-gen vorgenommen werden sollen Diese Musterwerden typischerweise durch regulaumlre Ausdruumlckedefiniert

GNU sed unterstuumltzt dabei einfache regulaumlreAusdruumlcke (Basic Regular Expressions) bzw mitdem Schalter -r erweiterte regulaumlre Ausdruumlcke(Extended Regular Expressions) z B regulaumlreAusdruumlcke die von egrep benutzt werden

Etwas vereinfacht ausgedruumlckt ist der Un-terschied zwischen einfachen regulaumlren Aus-druumlcken und erweiterten regulaumlren Ausdruumlckender dass bei den ersten der genutzt wird umdie Sonderbedeutung der Zeichen einzuschaltenwaumlhrend bei letzteren der die Sonderbedeu-tung der Zeichen ausschaltet

Regulaumlre Ausdruumlcke kurz erklaumlrtBei regulaumlren Ausdruumlcken steht normalerweisejedes Zeichen fuumlr sich selbst Besondere Bedeu-tung haben jedoch folgende Zeichen die mansich einmal genauer anschauen sollte

Ankerˆ steht fuumlr den Zeilenanfang

$ steht fuumlr das Zeilenende

steht fuumlr irgendein Zeichen

copy freiesMagazin GNU FDL Ausgabe 032010 36

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 37: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Zeichenklassen[] steht fuumlr irgendein Zeichen innerhalb der

eckigen Klammer

[a-z] passt auf alle Kleinbuchstaben des Al-phabets [abc] entweder auf a oder aufb oder auf c

[ˆ] passt auf irgendein Zeichen welchesnicht innerhalb der eckigen Klammer an-gegeben ist

ˆ[a-z] passt auf alle Zeichen die keine Klein-buchstaben sind (Der Bereich derdurch diese Angabe definiert ist wirdmaszliggeblich durch die Lokalisierung aufdem jeweiligen System bestimmt Hier-fuumlr sind vor allem die beiden Umge-bungsvariablen LC_ALL und LC_CTYPEverantwortlich)

Quantifier steht fuumlr kein bis beliebig haumlufiges Auftreten

dabei wird ein laumlngerer passender Ausdruckbevorzugt (sogenannte Greediness bdquoGierldquo)a passt also auf bdquo ldquo bdquoaldquo bdquoaaldquo bdquoaaaldquo und soweiter bei einer Zeichenkette bdquobaahldquo wird esaber immer auf bdquoaaldquo passen

steht fuumlr kein- oder einmaliges Auftreten (alserweiterter regulaumlrer Ausdruck )

+ steht fuumlr genau ein- oder mehrmaliges Auftre-ten (bei erweiterten regulaumlren Ausdruumlcken +)Laumlngere Treffer werden dabei bevorzugt Ur-spruumlnglich kennen die elementaren regulaumlrenAusdruumlcke diesen Quantifier nicht Mittlerwei-le wird aber + auch meist unterstuumltzt Falls

es die Unterstuumltzung fuumlr + nicht vorhandensein sollte so kann man diesen Quantifierauch mit nachbilden a+ ist naumlmlich gleich-bedeutend mit aa (findet eine beliebige An-zahl a aber mindestens 1)

Verschachtelung( ) steht fuumlr Klammerung (bei erweiterten re-

gulaumlren Ausdruumlcken ohne Backslash al-so ( )) Damit kann man sich Ausdruumlckemerken und sie spaumlter mit den Variablen0 bis 9 referenzieren Das heiszligt mankann maximal zehn verschiedene Zeichen-ketten referenzieren mehr geht nicht Da-bei zaumlhlt immer die Reihenfolge der oumlffnen-den Klammer 0 bezieht sich dabei aufden kompletten Match und bedeutet dasgleiche wie amp (a)b1 passt auf bdquoabaldquoaber nicht auf bdquoabbaldquo

Sonstiges| passt entweder auf den vorherigen Ausdruck

oder den nachfolgenden Ausdruck (bei erwei-terten regulaumlren Ausdruumlcken ||) a|b passtauf a oder auf b

n steht fuumlr den Zeilenumbruch Hier sollte manauch beachten dass sed seine Eingabe zei-lenorientiert liest Das heiszligt normalerweisewird ein Muster mit einem n fuumlr einen Zei-lenumbruch nicht passen Man kann zwar da-mit arbeiten aber man sollte das im Hinter-kopf behalten wenn man n benutzt)

$ passt auf ein $-Zeichen (denn $ steht jafuumlr das Ende der Zeile So kann man mit

dem Backslash nachstehende Zeichen mas-kieren passt auf einen amp passt auf dasKaufmanns-Und usw

Das ist soweit das Wichtigste zu den regulaumlrenAusdruumlcken die von sed unterstuumltzt werden DieSyntax ist nicht so schwer man sollte sich nurmerken welche der vielen Dialekte der regulaumlrenAusdruumlcke sed beherrscht

Daruumlber hinaus unterstuumltzt GNU sed diePOSIX Zeichenklassen d h das Muster[[lower]] passt auf alle Kleinbuchstabenund [[upper]] auf alle Groszligbuchstaben Au-szligerdem beherrscht GNU sed noch Muster diemit einem Backslash anfangen w passt zumBeispiel auf ein bdquoWord-Characterldquo als Zeichen-klasse ausgedruumlckt [A-Za-z0-9_] W passtauf ein bdquoNon-Word-Characterldquo und ist somit dieUmkehrung von w (also [ˆa-zA-Z0-9_]) Diebeiden Muster lt und gt bedeuten den Startbeziehungsweise das Ende des Wortes Weitere-Muster werden auch unterstuumltzt dafuumlr sei aberletzten Endes auf die Manpages bzw Infopagesverwiesen

Sed und fortgeschrittene Eigenschaften regu-laumlrer AusdruumlckeSo fortgeschrittene Sachen wie bdquoLook-AroundAssertionsldquo bdquoNon-Greedy Matchesldquo bdquoNon-Capturing Groupsldquo oder auch rekursive Aus-druumlcke der perlkompatiblen regulaumlren Ausdruumlckebeherrscht sed leider nicht Eine gute Uumlbersichtuumlber die vorhandenen Moumlglichkeiten gibt schlieszlig-lich die Wikipedia [4]

copy freiesMagazin GNU FDL Ausgabe 032010 37

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 38: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Adressierung von ZeilenDiese Ausdruumlcke definieren nun wo etwas ge-macht wird Anstelle von Mustern kann man aberauch die Zeilennummern angeben $ als Zeilen-nummer passt dabei immer auf die letzte Zeile

Die Adressierung erfolgt entweder durch Anga-be genau der Zeile fuumlr die etwas gemacht wer-den soll oder alternativ durch Angabe eines Be-reiches Einen Bereich trennt man dann durchein Komma ab Die Angabe 1$ ist gleichbedeu-tend mit der Angabe von der ersten Zeile bis zurletzten und kann alternativ durch angegebenwerden

Zusaumltzlich erlaubt es GNU sed noch Schrittfol-gen zu definieren Also zum Beispiel von Zeile 1ausgehend jede zweite (also 1 3 5 7 ) 1~2passt genau auf dieses Muster waumlhrend 0~2 je-de gerade Zeile ausgibt Verallgemeinert gesagtbezeichnet x~y also ein Muster in dem x dieStartzeile angibt und y die Schrittfolge

KommandosWelche Aktionen durchgefuumlhrt werden bestim-men die Kommandos Diese Kommandos verste-hen entweder keine Adressen (z B Sprunganga-ben und Kommentare) eine oder keine Adres-sen oder zwei Adressen (naumlmlich Start- und End-Adresse)

Die folgenden Kommandos kennt dabei GNUsed

Die Raute kennzeichnet einen Kommentar

sxy ersetze x durch y

Der Doppelpunkt definiert bei sed eineSprungmarke

= Das Gleichheitszeichen gibt die Zeilennum-mer aus

aText haumlngt bdquoTextldquo als neue Zeile an

iText fuumlgt bdquoTextldquo vor der aktuellen Zeile ein

cText ersetzt die aktuelle Zeile durch bdquoTextldquo

q beendet sed

r foobar haumlngt den Inhalt der Datei foobar hin-ter die aktuelle Zeile an

R foobar fuumlgt eine Zeile der Datei foobar hin-ter die aktuelle Zeile an

b foobar weist sed an zur Sprungmarkefoobar zu springen

p Gib die Treffer aus

t foobar Springe zur Sprungmarke foobarwenn das letzte s-Kommando erfolgreich war

T foobar Springe zur Sprungmarke foobarwenn das letzte Kommando nicht erfolgreichwar

d Loumlsche die aktuelle eingelesene Zeile undfange von vorne an

n Lies die naumlchste Zeile ein

N Lies die naumlchste Zeile ein und haumlnge sie andie aktuelle Zeile an

w foobar Schreibe den aktuellen Inhalt in dieDatei foobar

W foobar Schreibe ausschlieszliglich die erste Zei-le des aktuellen Puffers in die Datei foobar

yab Ersetze a durch b funktioniert so aumlhn-lich wie tr Mit yabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ wer-den alle Kleinbuchstaben durch Groszligbuchsta-ben ersetzt

weist sed an das jeweils nachfolgende Kom-mando fuumlr alle Zeilen auszliger der aktuellen Zei-le auszufuumlhren

Normalerweise liest sed die Eingabe (bis zumZeilenende n) in den Arbeitspuffer (den soge-nannten bdquoPattern Spaceldquo) fuumlhrt die Kommandosdort aus und gibt anschlieszligend die Aumlnderungenaus Daneben gibt es noch einen extra Pufferden sogenannten bdquoHold Spaceldquo In ihm kann manDaten zwischenspeichern und spaumlter wieder ver-wenden Dafuumlr gibt es die folgenden Komman-dos

D Loumlsche bis zum ersten Zeilenumbruch im Pat-tern Space und fange dann wieder von vornean

x Tausche die Inhalte des Pattern Spaces undHold Spaces aus

h Kopiere den Pattern Space an den HoldSpace Puffer

H Haumlnge den Pattern Space an den Hold SpacePuffer an

g Kopiere den Hold Space Puffer in den PatternSpace

G Haumlnge den Hold Space Puffer an den PatternSpace an

copy freiesMagazin GNU FDL Ausgabe 032010 38

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 39: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Adressen und Kommandos definieren die Ak-tionenDurch Klammerung mit kann man definie-ren welche Kommandos logisch zusammen-gehoumlren und entsprechend zusammen aus-gefuumlhrt werden Der Aufbau eines Komman-dos und der Adressangabe ist dabei folgen-der Adresse1Adresse2 Kommando1 Kommando2 Kommando3 KommandoN Mus-ter werden durch Slashes getrennt ange-geben Muster1Muster2 Kommando1Kommando2

Durch die Angabe zweier Adressen definiert maneinen Bereich in dem die nachfolgenden Kom-mandos ausgefuumlhrt werden (inklusive der Start-und Endzeilen) Wenn man nur eine Adresseangibt dann wird das Kommando nur an die-ser einen Stelle ausgefuumlhrt Wenn man nur einKommando ausfuumlhren will kann man die Klam-merung auch weglassen Werden alle Adressenweggelassen bezieht sich das Kommando im-mer auf deie komplette Eingabe (also von Zeile1 bis zur letzten Zeile)

sed anhand von Beispielen erklaumlrtNachdem nun die Grundlagen bekannt sind wirdsed abschlieszligend noch anhand von Beispielenerklaumlrt Einige dieser Beispiele sind den bdquoSed 1Linersldquo [5] entnommen

$ sed -n rsquo3prsquo

Hier gibt sed die Zeile 3 und auschlieszliglich dieZeile 3 aus

$ sed -n rsquo35prsquo

Und hier wird alles von Zeile 3 bis 5 ausgegeben(inklusive dieser Zeilen) Normalerweise wird beised der Input immer auch ausgegeben mit -nunterdruumlckt man das und nur wenn man es expli-zit verlangt (Kommando p) wird etwas ausgege-ben

Das einfachste Kommando ist das -KommandoAllein fuumlr sich macht das gar nichts und gibt ein-fach alles aus

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Alternativ kann man auch das leere Kommandoangeben

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das Gleiche erreicht man auch mit dem bdquoKom-mandoldquo welches eigentlich verschiedene Kom-mandos trennt In diesem Fall fuumlhrt es ein bdquoNullldquo-Kommando aus und gibt daher alles aus was eseinliest

$ sed rsquorsquo foobarDer Fuchs ist rot und rot sind auchyAepfel

Das verbreitetste Kommando ist sicherlich das s-Kommando Damit kann man nach einem Muster

suchen und dieses durch ein anderes ersetzenZum Beispiel ersetzt

$ sed rsquosrotgruenrsquo foobar

die Zeichenfolge bdquorotldquo durch bdquogruenldquo und gibt dieAumlnderung aus

$ sed rsquosrotgruenrsquo foobarDer Fuchs ist gruen und rot sind yauch Aepfel

Naja aber eigentlich ist der Fuchs ja rot und Aumlp-fel sind gruumln Daher kann man dem s-Kommandonoch zusaumltzliche Flags mitgeben Das bekann-teste Flag ist das g-Flag Damit werden alle ge-fundenen Muster ersetzt

$ sed rsquosrotgruengrsquo foobarDer Fuchs ist gruen und gruen sind yauch Aepfel

Man kann aber auch nur bestimmte Muster erset-zen zum Beispiel nur das 2 Muster

$ sed rsquosrotgruen2rsquo foobarDer Fuchs ist rot und gruen sind yauch Aepfel

Wenn kein Flag angegeben wird wird implizit die1 angenommen (also das erste gefundene Mus-ter wird ersetzt)

Ein weiteres Flag ist das i-Flag Hierbei wird dasMuster bdquocase-insensitiveldquo gesucht d h Klein-Groszligbuchstaben spielen keine Rolle Es ist auchmoumlglich mehrere Flags miteinander zu kombinie-ren

copy freiesMagazin GNU FDL Ausgabe 032010 39

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 40: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

$ sed rsquosROTblauigrsquo foobarDer Fuchs ist blau und blau sind yauch Aepfel

Manchmal moumlchte man aber auch Pfadanga-ben ersetzen Bloumld nur dass der Slash normalerweise das Muster vom Ersetzungstexttrennt Moumlchte man nun z B usrlocalsharefoobar durch usrsharefoobar er-setzen muumlszligte man sowas schreiben

$ sed rsquosusrlocalshareyfoobarusrsharefoobargrsquo yscript

Daher erlaubt sed es irgendein anderes Trenn-zeichen zu nutzen z B die Pipe |

$ sed rsquos|usrlocalsharefoobar|yusrsharefoobar|grsquo script

Oder man entscheidet sich fuumlr den Unterstrich _

$ sed rsquos_usrlocalsharefoobar_yusrsharefoobar_grsquo script

Oder auch irgendein anderes Zeichen was nichtim Muster vorkommt

Manchmal moumlchte man auch das gefundeneMuster im Ersetzungsteil wieder verwendenWenn man z B eine Anweisung in einer Konfi-gurationsdatei auskommentieren moumlchte die mitbdquofoobarldquo anfaumlngt kann man das so machen

$ sed rsquos^(foobar)1rsquo configfoobar wichtig

Oder man benutzt einfach den Replacement Cha-racter amp der fuumlr das Muster steht das gefundenwurde

$ sed rsquos^(foobar)amprsquo configfoobar wichtig

Vereinfachen kann man das noch so

$ sed rsquo^foobars^rsquo configfoobar wichtig

Hier benutzt man den regulaumlren Ausdruckˆfoobar als Adresse und nur Zeilen die aus-schlieszliglich auf dieses Muster passen werden er-setzt Vereinfacht gesagt ersetzt man das Zei-chen ˆ (das ja fuumlr den Zeilenanfang steht) durchein und fuumlgt somit noch eine Raute an den An-fang der Zeile ein

Aber natuumlrlich kann man noch mehr mit regu-laumlren Ausdruumlcken machen Zum Beispiel Klein-buchstaben durch Groszligbuchstaben ersetzen

$ ls home | sed rsquos[[lower]]UyampgrsquoCBCHRISBRAFTP

sed sucht nach der Posix-Klasse von Kleinbuch-staben und ersetzt diese durch die entsprechen-den Groszligbuchstaben Das U steht fuumlr bdquoUpperca-seldquo und wandelt alle Zeichen in die passendenGroszligbuchstaben um Man beachte die Nutzungvon amp um das gefundene Muster wieder zu ver-wenden Ohne das Flag g waumlre uumlbrigens nur der

erste Buchstabe groszlig geschrieben worden Dasgleiche kann man uumlbrigens mit dem Kommandoy erreichen

$ ls home | sed rsquoyyabcdefghijklmnopqrstuvwxyzyABCDEFGHIJKLMNOPQRSTUVWXYZrsquo

CBCHRISBRAFTP

Das ist etwas umstaumlndlich denn das y-Kommando scheint keine Zeichenklassen zu un-terstuumltzen sondern man muss explizit alle Zei-chen hinschreiben

cat -n simulierenEin einfaches cat -n macht nichts weiter als dieDatei inklusive Zeilennummern auszugeben

$ cat -n datei1 eins2 zwei3 drei

Mit sed kann man das nun wie folgt simulieren

$ sed -e rsquo=rsquo datei | sed -e yrsquo^[0-9]+$Nsn rsquo1 eins2 zwei3 drei

Hier werden zwei sed-Prozesse benoumltigt weilder erste nichts weiter macht als in die Ausgabedie Zeilennummer mit Zeilenendezeichen n ge-

copy freiesMagazin GNU FDL Ausgabe 032010 40

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 41: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

trennt zu schreiben Nachfolgende sed-Befehlekoumlnnen diese Zeilen nicht mehr aumlndern Daherwird ein zweiter sed-Prozess gestartet der al-le Zeilen auswaumlhlt die nur mit Zahlen anfangen(der regulaumlre Ausdruck dazu ist ˆ[0-9]+$) fuumlrdiese Zeile die naumlchste Zeile einliest (N) unddanach per Substitute-Befehl das Zeilenendezei-chen n durch ein Leerzeichen ersetzt Es istwichtig dass zunaumlchst die nachfolgende Zeileeingelesen wird ansonsten sieht sed nicht dasZeilenendezeichen n

Die Loumlsung ist schon nahezu perfekt Wuumln-schenswert waumlre es vielleicht noch dass mandie Eingabe eingeruumlckt ausgibt Auszligerdem trenntcat -n die Ausgaber per Tabulatorzeichen twie ein Hexdump bestaumltigt

Eine vollstaumlndige Loumlsung samt der gewuumlnschtenAusgabe koumlnnte schlieszliglich mit dem folgendenEinzeiler erreicht werden

$ sed -e rsquo=rsquo datei | sed -e rsquo^[0-9]+$Nsnts^ rsquo1 eins2 zwei3 drei

wc -l simulierenWie man vielleicht weiszlig kann man mit dem Pro-gramm wc ndash neben einigen anderen Moumlglichkei-ten ndash uumlber den Schalter -l auch die jeweilige An-zahl der Zeilen fuumlr die aufgerufene Datei ausge-ben

$ wc -l datei3 lines

Auch sed kann die Anzahl der Zeilen angeben

$ sed -n rsquo$=rsquo datei3

Hier wurde der Schalter -n benutzt Normalerwei-se kopiert sed jede Zeile der Eingabe in die Aus-gabe Dies wird durch den Schalter -n verhindertund sed schreibt nur eine Ausgabe wenn es ex-plizit verlangt wird (zum Beispiel mit dem Print-Kommando) Die regulaumlren Ausdruumlcke $= sindwieder eine Adressangabe ($ steht fuumlr die letzteZeile) und die Anweisung die Zeilennummer zuschreiben Das heiszligt wenn sed die letzte Zeileeinliest wird es die aktuelle Zeilennummer aus-geben die zufaumlllig mit der Anzahl der Zeilen inder Eingabe uumlbereinstimmt

tac emulierensed kennt wie schon gesagt neben dem Ver-arbeitungspuffer (Pattern Space) noch den Hold

Space in dem Daten temporaumlr abgelegt werdenkoumlnnen Von diesem temporaumlren Puffer wird hierGebrauch gemacht

$ sed rsquo1Gh$drsquo dateidreizweieins

Das h als Anweisung bedeutet jetzt dass dieaktuell bearbeitete Zeile in diesen Puffer kopiertwird

Die erste Anweisung 1G weist sed an den In-halt dieses Zwischenspeichers an die aktuell zubearbeitende Zeile mit Zeilenendezeichen n ge-trennt anzuhaumlngen (auszliger in der ersten Zeiledenn zu diesem Zeitpunkt ist der Zwischenspei-cher noch leer) Diese Eingabe wird dann wieder-um in den temporaumlren Puffer geschrieben

Die letzte Anweisung $d bedeutet bdquoloumlsche jedeZeile auszliger der letztenldquo ( entspricht einem Nicht-Operator)

Wenn sed die letzte Zeile liest fuumlgt es den Inhaltaller vorherigen Zeilen an und gibt diese wiederaus Durch die Art wie die Zeilen angehaumlngt wer-den entspricht diese Reihenfolge genau der um-gekehrten Reihenfolge der Eingabe

Eine alternative Anweisung in der sed explizitnur die letzte Zeile ausgibt und ansonsten keineAusgabe erzeugt koumlnnte auf folgende Art reali-siert werden

$ sed -n rsquo1Gh$prsquo dateidreizweieins

Dieser sed-Einzeiler enthaumllt die folgenden dreiAnweisungen 1G h $p Dabei bedeutet 1Gnun dass der Inhalt jeder Zeile auszliger der ers-ten Zeile in den temporaumlren Puffer (Hold Space)geschrieben wird

copy freiesMagazin GNU FDL Ausgabe 032010 41

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 42: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

Zeilen mit Backslash-Ende in eine ZeileschreibenMoumlchte man zwei durch einen Backslash ge-trennte Zeilen zu einer zusammenfuumlgen hilft derfolgende Ausdruck

$ sed -e rsquoarsquo -e rsquo$Nsntarsquo

In der ersten Anweisung wird die Sprungmarkea definiert Das erlaubt es spaumlter wieder dorthinzu springen In der naumlchsten Anweisung suchtsed nach Zeilen die mit einem Backslash auf-houmlren wobei mit $ der Backslash einmal mas-kiert werden muss sonst wuumlrde sed nach dem$-Literal suchen Fuumlr diese Zeilen liest sed dienaumlchste Zeile ein (Kommando N) und loumlscht an-schlieszligend die Zeichenfolge bdquoldquo gefolgt von ei-nem Zeilenende

Dadurch sind nun die ehemals zwei getrenntenZeilen wieder zu einer Zeile zusammengefuumlgtNachdem dies geschehen ist springt sed zurSprungmarke a und faumlngt wieder von vorne an(falls die neue Zeile ebenfalls mit einem endet)Wenn nichts gefunden wird wird die Zeile ausge-geben

grep emulierensed sucht nach Zeilen die das Suchmuster ent-halten Alle Zeilen die nicht auf das Muster pas-sen werden geloumlscht und nicht ausgegeben

$ sed rsquoeinsdrsquo dateieins

Eine alternative Loumlsung besteht im folgendenEinzeiler

$ sed -n rsquoeinsprsquo dateieins

Hier wird sed nur dann etwas ausgeben wenn esdazu angewiesen wird Und in diesem Fall wird

sed dazu angewiesen wenn genau dasMuster eins auf die die verarbeitete

Zeile passen sollte

tail -10 emulierenIm folgenden Fall wird sed immer maximal zehnZeilen in seinem Puffer halten

$ sed -e rsquoarsquo -e rsquo$qN11$Dbarsquo varlogsyslog

Sobald sed die letzte Zeile erreicht wird der kom-plette Puffer ausgegeben Jede eingelesene Zei-le veranlasst sed dazu die naumlchste Zeile einzule-sen (N) und nachdem es zehn Zeilen eingelesenhat wird sed immer die erste eingelesene Zeileloumlschen (D) und mit der naumlchsten Zeile fortsetzenZum Schluss wird sed angewiesen zur Sprung-marke a zu springen und von vorne anzufangenDadurch wird sichergestellt dass niemals mehrals zehn Zeilen im Puffer sind

Leere Zeilen loumlschenLeere Zeilen sind oft unnoumltiger Ballast und sollenentfernt werden In so einem Fall kann man dennaumlchsten Einzeiler anwenden

$ sed rsquodrsquo datei

Der Punkt passt nur auf Zeilen die mindestensein Zeichen enthalten Leere Zeilen erfuumlllen die-

se Bedingung nicht und wuumlrden daher aus derEingabe geloumlscht Alternativ kann man mit

$ sed rsquo^$drsquo datei

das Gleiche erreichen Hier wird sed angewie-sen explizit alle Zeilen die nur aus Zeilenanfangund Zeilenende bestehen (also keinen Inhalt ha-ben) zu loumlschen

Alle Zeilenendezeichen entfernenDies ist eine interessante AufgabenstellungNormalerweise kann man mit sed nicht das

Zeilenende suchen weil sed sei-ne Eingabe zeilenweise verarbei-tet

$ sed -e rsquoxrsquo -e rsquoN$bxsngrsquo ydateieinszweidrei

Man muss sed also anweisen erst die komplet-te Datei in seinen Puffer zu kopieren bevor mananfaumlngt das Zeilenendezeichen n zu ersetzenDaher wird zunaumlchst die Sprungmarke x defi-niert Anschlieszligend wird sed angewiesen so lan-ge die naumlchste Zeile einzulesen bis es die letz-te Zeile gelesen hat Nachdem sed die naumlchsteZeile eingelesen hat wird so lange zur Sprung-marke x gesprungen bis die letzte Zeile imZwischenspeicher enthalten ist Wenn dies derFall ist kann auch das Zeilenendezeichen n ge-sucht und geloumlscht werden

Da in diesem Fall immer die komplette Datei inden Puffer gelesen wird kann es bei groszligen Da-

copy freiesMagazin GNU FDL Ausgabe 032010 42

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 43: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

EDITOR

teien zu Geschwindigkeitseinbuszligen kommen Esist daher eigentlich auch nicht empfehlenswertdiese Aufgabe durch sed erledigen zu lassenGeeigneter waumlre zum Beispiel tr

$ tr -d rsquonrsquo ltdateieinszweidrei

FazitAbschlieszligend kann festgestellt werden dass sedein durchaus flexibles Werkzeug ist wenn manper Stapelverarbeitung Dateien bearbeiten mussDurch seine Eigenschaft Dateien immer zei-lenweise zu verarbeiten und durch die Verwen-dung von BasicExtended Regular Expressionsist es jedoch nur mit Einschraumlnkungen zu emp-fehlen wenn man komplexere Bearbeitungen

uumlber mehrere Zeilen vornehmen moumlchte oderwenn man kompliziertere regulaumlre Ausdruumlcke mitbdquoLook-Around-Assertionsldquo benoumltigt Es lohnt sichaber auf jeden Fall sich mit den vielfaumlltigen Moumlg-lichkeiten von sed vertraut zu machen Geradefuumlr kleinere Aufgaben ist sed hervorragend ge-eignet und es muss ja auch nicht jedesmal gleichdie Skriptsprache $foo ausgepackt werden sedentspricht daher ganz der Unix-Tradition bdquoDo onething wellldquo

LINKS

[1] httpwwwgnuorgsoftwaresed[2] httpsedsourceforgenetsedfaq7html[3] httpwwwopengrouporgonlinepubs96999197

99nframehtml

[4] httpenwikipediaorgwikiComparison_of_regular_expression_engines

[5] httpsedsourceforgenetsed1linetxt

Autoreninformation

Christian Brabandt setzt privatfast ausschlieszliglich auf Linux undFreie Software Von Anfang aninteressierte er sich vor allem fuumlrShell-Scripting den Editor vi und vimund Anwendungsmoumlglichkeiten derKommandozeile im Allgemeinen

Diesen Artikel kommentieren

bdquoExperimentldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom669

copy freiesMagazin GNU FDL Ausgabe 032010 43

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 44: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

REZENSION

Rezension GIMP ndash kurz amp gut von Dominik Wagenfuumlhr

V iele Linux-Anwender nutzen das um-fangreiche BildbearbeitungsprogrammGIMP [1] selten bis gar nicht Die Gruumln-

de dafuumlr sind vielfaumlltig meist sind sie abervon der Fuumllle an Funktionen und Optionenerschlagen die ihnen die freie Bildbearbei-tung bietet Das Buch bdquoGIMP ndash kurz amp gutldquo vonKarsten Guumlnther soll hier Abhilfe schaffen

Redaktioneller Hinweis Siehe zu diesem The-ma auch den Artikel bdquoGIMP in 90 Minu-ten (kennenlernen)ldquo von Karsten Guumlnther infreiesMagazin 012010 [2]

InhaltbdquoGIMP ndash kurz amp gutldquo gliedert sich in fuumlnf Abschnit-te Im ersten wird die Oberflaumlche vom GIMP nauml-her vorgestellt GIMP zeigt (in der Regel) dreiFenster an den bdquoWerkzeugkastenldquo mit den Werk-zeugen und zugehoumlrigen Optionen das Dock-fenster mit Ebenen- Kanal- und Pfadverwaltungetc sowie natuumlrlich das Bildfenster mit dem zubearbeitenden Bild

Der zweite Abschnitt geht dann auf die einzelnenWerkzeuge ausfuumlhrlich ein Es wird jedes Iconbeschrieben welches man beim Start von GIMPim Werkzeugkasten findet Dabei erklaumlrt KarstenGuumlnther sowohl die Optionen die unter dem ge-waumlhlten Werkzeug stehen als auch deren sinn-vollen Einsatzzweck Vor allem bei den Auswahl-werkzeugen muss man Einiges beachten wasden korrekten Einsatz angeht

Der dritte Abschnitt beschaumlftigt sich mit den ein-zelnen GIMP-Menuumls In den Menuumls findet mansowohl alternative Zugangsmoumlglichkeiten zu deneinzelnen Werkzeugen aber natuumlrlich auch nochzahlreiche andere Funktionen die nicht im Werk-zeugkasten zu finden sind Zu erwaumlhnen sind

Werkzeugkasten

dabei sicherlich die bei-den Menuumls bdquoFarbenldquound bdquoFilter ldquo die beider professionellen Bild-bearbeitung eine sehrgroszlige und wichtige Rol-le spielen Dementspre-chend komplex sinddort auch die Optionender einzelnen Funktio-nen dafuumlr aber auchextrem maumlchtig

Im Buch geht KarstenGuumlnther ausfuumlhrlich aufdiese Menuumls ein auchwenn man sich bei denFiltern eine bessere Er-klaumlrung gewuumlnscht haumlt-te Hier findet man abSeite 116 zu jedem Untermenuuml einen Absatzder die jeweiligen Funktionen in zwei bis dreiSaumltzen erklaumlrt und gegebenenfalls auch Hinwei-se zu deren Einsatz gibt In manchen Faumlllen istdie Erklaumlrung sehr knapp gehalten was teilwei-se aber auch verstaumlndlich ist schlieszliglich wuumlrdees wohl ein zweites eigenes Buch benoumltigen die

uumlber 130 verschiedenen GIMP-Filter ausfuumlhrlichzu beschreiben

Im vorletzten Abschnitt widmet sich KarstenGuumlnther dann in kurzer Form (im Vergleich zuden vorigen Kapiteln) dem Dockfenster Es wirderklaumlrt welche Funktionen man andocken kannund wie diese arbeiten So wird auf die Ebenen-Kanal und Pfadverwaltung eingegangen ebensowie auf die Farben Pinsel und Muster

Am Ende findet man einen Anhang in dem unteranderem kurze Hinweise gegeben werden wennGIMP nicht bdquorichtigldquo arbeitet Danach findet manauch noch die Parameter mit denen man GIMPvon der Kommandozeile aus starten kann

Eine besondere Stellung hat die neueste VersionGIMP 26 auf die im Buch durchgaumlngig hingewie-sen wird So werden kleinere Unterschiede zumVorgaumlnger 24 gezeigt die auf Seite 150 auchnoch einmal in einem extra Abschnitt beschrie-ben sind

ZielgruppeAn wen richtet sich das Buch letztendlich Zu-erst wuumlrde man natuumlrlich antworten Vor allem anGIMP-Einsteiger Die einzelnen Funktionen wer-den sehr gut erklaumlrt sodass man schnell nach-schlagen kann wenn man als Neuling vor demGIMP-Fenstern sitzt und ein Icon oder einenMenuumleintrag nicht zuordnen kann oder wenn einWerkzeug nicht so arbeitet wie man es sich vor-gestellt hat

copy freiesMagazin GNU FDL Ausgabe 032010 44

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 45: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

REZENSION

Aber nicht nur Einsteiger sondern auch fort-geschrittene GIMP-Nutzer die nicht jedes Me-nuuml auswendig oder von jeder Funktion die ex-akte Verhaltensweise kennen koumlnnen bdquoGIMP ndashkurz amp gutldquo als gutes Nachschlagewerk nutzen

Profis die GIMP jahrelang einsetzen kennendie Funktionen und Menuumleintraumlge sicherlich ausdem Effeff und werden eher wenig Neues imBuch finden

KritikbdquoGimp ndash kurz amp gutldquo ist ein Nachschlagewerk keinRoman Dementsprechend trocken liest es sichauch Als Gute-Nacht-Lektuumlre ist es daher sicher-lich nicht empfohlen aber schlieszliglich auch nichtgedacht

Wichtig ist auch dass nur Funktionen erklaumlrt wer-den Es wird also gezeigt was etwas machtnicht wie man etwas macht Zu einem kleinenTeil erfuumlllt das Glossar am Ende des Buchesdiese Aufgabe etwas Anhand von Schlagwortenwird erklaumlrt wie man diese umsetzen kann Essind aber sehr wenige Beispiele die so beschrie-ben sind Mit dem Buch lernt man also nur dieeinzelnen Werkzeuge GIMPs kennen aber nichtzwingend damit umzugehen

Positiv erwaumlhnen muss man die verschiedenenQuerverweise die sich durch das Buch ziehenEgal welche Seite man aufschlaumlgt man findetVerweise auf aumlhnliche Funktionen oder weitereInformationen im Buch Daneben sind die ein-zelnen Absaumltze von extra bdquoHinweisenldquo durchzo-gen die zum einen das Lesen auflockern zum

anderen aber auch kleine Tipps und Tricks zei-gen worauf man bei einem bestimmten Werk-zeug das an dieser Stelle gerade behandelt wirdachten muss moumlchte man es korrekt einsetzenAuch gibt es zahlreiche Links auf externe Websei-ten und Anleitungen die den Umgang mit GIMPerklaumlren Eine besondere Stellung nehmen nochdie Plug-ins ein die nicht zum Standardreper-toire von GIMP gehoumlren Wichtige Plug-ins findetman in grauem Text unter manchen Abschnittenmitsamt Links zu deren Download

Nun zu den Negativpunkten (wobei sich die Lis-te gluumlcklicherweise in Grenzen haumllt) Das Buchenthaumllt ein paar ndash wenn auch sehr wenige ndashRechtschreib- und Layoutfehler Die letzterenwerden den meisten Lesern aber sicherlich nichtauffallen

An einigen Stellen merkt man leider dass auf-grund des Layouts des Buches Satzteile geaumln-dert oder gestrichen werden mussten So findetman auf Seite 103 den ldquoSatzldquo bdquoVerlustfrei umkehr-barldquo Natuumlrlich ist das kein richtiger deutscherSatz sondern nur ein Kommentar den man amSeitenrand erwartet haumltte Waumlre der Absatz aberein Wort laumlnger waumlre es auf der Seite eine Zei-le mehr geworden und der restliche Text haumlttesich verschoben Zugegeben Das ist Jammernauf hohem Niveau

Nicht gerade zur Spannung traumlgt auch der Co-py amp Paste-Text bei vor allem bei den Malwerk-zeugen die nun einmal relativ identische Optio-nen haben Es haumltte wohl gereicht wenn die ge-meinsamen Optionen einmal am Anfang erklaumlrt

worden waumlren und man dann spaumlter nur auf die-sen Abschnitt verweist

Auch wenn Karsten Guumlnther sehr ausfuumlhrlich aufdie GIMP-Werkzeuge und -Funktionen eingehthaumltte er einige Dinge doch ausfuumlhrlicher betrach-ten koumlnnen So wird auf Seite 86 bei der Indizie-rung eines Bildes zur Option bdquoInternet-optimiertePalette verwendenldquo nur gesagt dass sich die Op-tion von selbst erklaumlrt Offen gestanden tut siedas nicht zumal es daruumlber die Option bdquoOptimalePalette erzeugenldquo gibt Heiszligt das dass bdquooptimalldquo(zu deutsch es geht nicht besser) fuumlr das Inter-net doch nicht so optimal ist Ein zweites Bei-spiel findet sich auf Seite 89 Hier wird auf dieSkalierung eines Bildes eingegangen und dortauch in einem Satz auf das Interpolationsverhal-ten Leider wird nicht erklaumlrt was die vier ver-schiedenen Auswahlmoumlglichkeiten bdquoKeineldquo bdquoLi-near ldquo bdquoKubischldquo und bdquoSinc (Lanczos3)ldquo auszeich-nen Wenn es egal waumlre gaumlbe es an der Stellekeinen Auswahlbox

Etwas optimistisch ist Karsten Guumlnther auch mitseiner Aussage auf Seite 88 dass bdquohochwertigeDrucke [ ] etwa 150 ppi [erfordern]ldquo Die meis-ten Profis werden hier sicherlich widersprechenaber selbst fuumlr private Fotoausdrucke sollte mankeine Bilder unter 300 ppi verwenden

TastenbindungenNun zum groumlszligten Kritikpunkt Die Tastenkuumlrzelim Buch Tastenkuumlrzel bzw Tastenbindungensind extrem wichtig in GIMP da man so sehrschnell zu einzelnen Werkzeugen oder Funktio-nen schalten kann Dementsprechend hilfreich

copy freiesMagazin GNU FDL Ausgabe 032010 45

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 46: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

REZENSION

ist auch die Tabelle im Buch ab Seite 11 welchedie wichtigsten Tasten und deren Funktion samtMenuumleintrag aufzeigt (Eine Liste der Tastenbin-dungen und Menuumleintraumlge gibt es auch als prakti-schen DinA4-Ausdruck bei OrsquoReilly [3]) Aber ge-rade hier gibt es das groumlszligte Problem Wieso hatsich Karsten Guumlnther fuumlr eine Mischung aus deut-schem und englischen Tastaturlayout entschie-den Und wieso weicht er von der Schreibwei-se in GIMP ab Dies mindert den Wiedererken-nungswert besonders fuumlr Einsteiger

Was ist genau gemeint Auf einer deutschenTastatur findet man vor allem fuumlr die Sonder-tasten deutsche Bezeichnungen So heiszligt esbdquoStrgldquo bdquoEntfldquo oder bdquoEndeldquo Im Buch wird dies lei-der vermischt So wird von bdquoCtrlldquo bdquoDelldquo oder bdquoRe-turnldquo gesprochen dann aber wieder von bdquoEndeldquooder bdquoBild uarrldquo Die Festlegung auf das deutscheTastaturlayout waumlre sinnvoller gewesen Im Textselbst beschreibt Karsten Guumlnther Funktionendann zwar oft mit beiden Tasten (Seite 30 bdquo[Ctrl]bzw [Strg] schaltet in den Bearbeitungsmodus ldquo) aber leider nicht immer

Daneben waumlre es natuumlrlich auch sinnvoll ge-wesen wenn in bdquoGIMP ndash kurz amp gutldquo die glei-chen Bezeichnungen wie in GIMP selbst be-nutzt worden waumlren Sicherlich ist den meistenLesern die Uumlbertragung von bdquo[Ctrl]+[Shift]+[e]ldquoauf bdquo[Strg]+[Umschalt]+[E]ldquo (GIMP-Bezeichnung)moumlglich aber es ist unnoumltig

An dem Beispiel sieht man auch bereits eine Be-sonderheit Buchstabentasten werden im Buch

klein geschrieben Es ist unklar wieso (eine Ver-mutung ist dass man so leichter bdquoIldquo (groszliges i)und bdquolldquo (kleines L) auseinanderhalten kann) aberes fuumlhrt dann zu Aussagen wie bdquoDas Werkzeug(Taste [O] also [Shift][o]) ldquo (Seite 27) und bdquoDasPfadwerkzeug (Taste [B]) ldquo (Seite 30) Prinzi-piell ist das okay nur ist im zweiten Satz nichtbdquo[B]ldquo also bdquo[Shift]+[b]ldquo gemeint sondern es ist einSchreibfehler und muss nur bdquo[b]ldquo lauten

Extrem kritisch sind dann Kombinationen wiebdquo[Ctrl]+[]ldquo (Seite 69) ganz einfach weil es keine(einzelne) -Taste auf der deutschen () Tastaturgibt (auf der englisch dagegen schon) Gemeintwar bdquo[Ctrl]+[Shift]+[]ldquo

Insgesamt sorgt das fuumlr viel Verwirrung auchbeim Autor denn es kommt vor dass falsche Tas-tenkuumlrzel angegeben werden So wird auf Sei-te 20 behauptet man koumlnnte mit Strg + C eineAuswahl invertieren (gemeint war Strg + I ) undauf Seite 91 f wird eine Ebene mit Umschalt + Hverankert anstatt korrekterweise mit Strg + H

Es ist zu hoffen dass in einer zweiten Auflagedie Tastenkuumlrzel an GIMP angepasst werden so-dass die Notation in Programm und Buch einheit-lich und im Buch selbst konsistent sind

FazitDie aufgezaumlhlten Kritikpunkte sind aber nur Klei-nigkeiten das Buch ist im Gesamten gesehensehr empfehlenswert da wirklich jeder Punkt inGIMP beschrieben wird Alles was daruumlber hin-aus geht werden Anfaumlnger und etwas fortge-

schrittene GIMP-Nutzer fuumlr gewoumlhnlich erst ein-mal nicht brauchen Vor allem das sehr gutePreis-Leistungsverhaumlltnis empfiehlt den Kauf

BuchinformationenTitel GIMP ndash kurz amp gutAutor Karsten GuumlntherVerlag OrsquoReillyUmfang 191 SeitenISBN 978-3-89721-553-5Preis 990 C

Redaktioneller Hinweis Wir bedanken unsbeim OrsquoReilly-Verlag der uns dieses Rezensi-onsexemplar von bdquoGIMP ndash kurz amp gutldquo zur Verfuuml-gung gestellt hat

LINKS

[1] httpwwwgimporg[2] httpwwwfreiesmagazindefreiesMagazin-2010-

01[3] httpwwworeillydecataloggimppggerchapter

gimp26-sheet-landscape-A4pdf

Autoreninformation

Dominik Wagenfuumlhr liest gerne undviel Seine Arbeit bei freiesMagazinerfordert auch die Bearbeitung vonBildern mithilfe von GIMP Da kamdas Buch zur rechten Zeit

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 46

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 47: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

REZENSION

Rezension Python ndash kurz amp gut von Michael Niedermair

P ython ist eine objektorientierte Pro-grammiersprache zum Schreiben vonSkripten und Programmen Dabei ist

Python frei verfuumlgbar und auf vielen Platt-formen nutzbar einschlieszliglich Linux UnixWindows und Mac OS

Das Buch bdquoPython ndash kurz amp gutldquo ist eine kompakteReferenz aus dem OrsquoReilly-Verlag welches ausdem Englischen uumlbersetzt worden ist und zumschnellen Nachschlagen aller wichtigen Sprach-merkmale und Elemente von Python dient

Was steht drinDas Buch ist in 27 Bereiche unterteilt die je-weils auf die Besonderheiten der unterschiedli-chen Versionen (20 ndash 26 und 30) eingehen Esbeginnt mit einer Einfuumlhrung typografischen Kon-ventionen und einer Beschreibung wie die Code-beispiele zu nutzen sind Danach wird kurz aufdie Kommandozeilenoptionen und Umgebungs-variablen eingegangen Richtig los geht es dannmit der Beschreibung von Typen und Operatoren(6 Seiten) und den besonderen eingebauten Ty-pen (37 Seiten) wie Listen Dictionaries Datei-en usw Sehr kurz wird dann auf Anweisungenund Syntax (2 Seiten) eingegangen dann folgenspezifische Anweisungen (27 Seiten) fuumlr Bedin-gungen Schleifen Umgebungen etc Die naumlchs-ten beiden Bereiche behandeln den Namens-raum (3 Seiten) und die OOP (3 Seiten) Die fol-genden 46 Seiten beschaumlftigen sich mit Opera-torenuumlberladung eingebauten Funktionen Aus-

nahmen und den eingebauten Attributen Im an-schlieszligenden groszligen Abschnitt (52 Seiten) wirdauf einige Module wie zum Beispiel sys stringos und tkinter eingegangen Zum Schluss fol-gen noch fuumlnf Seiten uumlber die Eigenheiten vonPython und einige Tipps Ein Index mit elf Seitenbeendet dann das Buch

Wie liest es sichDer Schreibstil des Autors auch in der deutschenUumlbersetzung ist fuumlr laumlngeres Lesen nicht geeig-net aber fuumlr ein Nachschlagewerk noch akzepta-bel Arbeitet man nur mit der neuesten Pythonver-sion muss man immer wieder im Buch springenda die Informationen fuumlr aumlltere Versionen nichtbenoumltigt werden Der Index besteht aus Stichwoumlr-tern Methoden- Modul- und Paketnamen wo-bei die Kommandozeilenparameter dazwischengemischt sind Die Beispiele sind sehr kurz ge-halten und setzen voraus dass man sich mit derMaterie bereits auskennt

KritikDas Buch ist fuumlr Programmierer geeignet dieschon einen gewissen Kenntnisstand und Erfah-rung mit Python haben wenn sie das eine oderandere nachschlagen wollen Anfaumlngern dage-gen duumlrfte es schwer fallen den fuumlr ihr jeweiligesProblem passenden Bereich im Buch zu findenDer Index ist dabei nicht immer hilfreich DasBuch ist nicht dafuumlr geeignet Python zu lernenEs waumlre nuumltzlich wenn es getrennte Indizes fuumlrStichwoumlrter Funktionen etc geben wuumlrde Die

Auswahl an beschriebenen Modulen und derenFunktion ist auf ein Minimum beschraumlnkt Ein ak-tiver Programmierer wuumlrde sich hier ein paar Mo-dule mehr wuumlnschen Die Beispiele koumlnnten aus-sagekraumlftiger sein Es steckt selbst bei der vier-ten Auflage noch Entwicklungspotenzial im Buch

Ob die 1290 C fuumlr das Nachschlagewerk sinnvollangelegt sind oder man beim Programmieren amRechner doch lieber die kostenlose Onlinehilfebzw das Onlinetutorial verwendet in denen manschnell nach Stichwoumlrtern suchen kann muss je-der fuumlr sich selbst entscheiden

BuchinformationenTitel Python ndash kurz amp gut 4 AuflageAutor Mark Lutz Uumlbersetzung Lars SchultenVerlag OrsquoReillyUmfang 206 SeitenISBN 978-3-89721-556-6Preis 1290 C

Autoreninformation

Michael Niedermair ist Lehrer an derMuumlnchner IT-Schule und unterrichtetProgrammierung Datenbanken IT-Technik und Linux Nebenbei schreibtund liest er viel

Diesen Artikel kommentieren

copy freiesMagazin GNU FDL Ausgabe 032010 47

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 48: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

LESERBRIEFE

Leserbriefe

Fuumlr Leserbriefe steht unsere E-Mailadressezur Verfuumlgung ndash wir

freuen uns uumlber Lob Kritik und Anregungen zumMagazin

An dieser Stelle moumlchten wir alle Leser ausdruumlcklichermuntern uns auch zu schreiben was nicht so gutgefaumlllt Wir bekommen sehr viel Lob (was uns natuumlr-lich freut) aber vor allem durch Kritik und neue Ideenkoumlnnen wir uns verbessern

Leserbriefe und AnmerkungenBackupPC

Im Artikel [bdquoBackupPC als Backupserver imHeimnetzwerkldquo freiesMagazin 022010 [1]] wur-de noch vergessen darauf hinzuweisen dassman bei Windows-Clients u U die Firewall ent-sprechend konfigurieren muss damit man aufdie Admin-Freigabe c$ zugreifen darf

Gast (Kommentar)

Schoumlner Artikel uumlber eine Backup-SW die ichnoch nicht kannte Habe selbst schon eine Weilenach Backup-SW gesucht die mir optimal fuumlr einbdquoHeimbackupldquo erscheint aber das Optimum gibtes wohl nicht

Bei der BackupPC-Loumlsung konnte ich leider nichtentdecken ob eine bdquoVersionierungldquo via Datumdes Backups o Auml unterstuumltzt wird Auszligerdem er-scheint es mir (fehlertraumlchtigem) User nicht gutdass eine Backup-SW etwas vom Zielverzeichnisloumlschen kann (Man stelle sich vor Quelle undZiel zu vertauschen)

Hier habe ich ein wirklich feines Stuumlck Softwareentdeckt StoreBackup [2] Das Tool kann fast al-les was ich mir wuumlnsche hat nur leider keine gra-fische Bedienoberflaumlche Z B ein paar Features

Uumlbertragung komprimiert erzeugt Versionen automatisch (DatumZeit) identische Files werden uumlber Hardlinks gespei-

chert unterteilt groszlige Dateien in Schnipsel die ein-

zeln auf Aumlnderungen untersucht und gespei-chert werden (z B Virtuelle Maschinen aumln-dern sich kaum)

einstellbare Strategie nach der alte Backupsgeloumlscht werden

Man kann als Medium natuumlrlich auch eine ver-schluumlsselte Platte nehmen Nachteil fuumlr mich istdass es keine GUI gibt

Vielleicht ist es ja mal fuumlr den einen oder andereneiner naumlheren Betrachtung wert

Gast (Kommentar)

Vielen Dank fuumlr den Hinweis auf StoreBackupDie Software klingt definitiv interessant und viel-leicht findet sich ja auch ein Autor der die Soft-ware in freiesMagazin einmal vorstellen moumlchte

Dominik Wagenfuumlhr

openSUSE-DistributionIch las gerade den Artikel zur openSUSE 112

der mir inhaltlich sehr gefallen hat Die Version

112 war allerdings die erste Distribution die vonder Firma open-slx [3] vertrieben wurde Die neugegruumlndete Firma hat im Rahmen von NovellsOutsourcing die Produktion und den Vertrieb wieauch den Installationssupport uumlbernommen

Sascha Manns

ZFS unter Linux

Interessanter Beitrag allerdings sind die Bei-spiele zu raidz2 und raidz3 meiner Meinungnach unsinnig da zu wenige Platten angegebensind So wie ich das verstanden habe machtRAID6 (doppelte Parity) erst ab vier Platten Sinnund RAID7 (dreifach Parity) oder wie man dasnennen mag erst ab 5 Platten Wobei das jaschon Overkill ist mehr Parity als Daten )

Robert Perkuhn (Kommentar)

Es stimmt leider habe ich die Beispiele nichtrichtig aus meinen Testprotokollen kopiert Beiraidz2 und raidz3 benoumltigt man im Prinzip 5 bzw8 Platten Martin Boumlcher

Korrekturen und Ergaumlnzungen

Artikel bdquoMachinarium ndash In der Welt der Maschi-nenldquo freiesMagazin 012010 [2]

Wie uns unser Leser Erik Pfannenstein dar-auf hinwies (Kommentar) hat der angeblich na-menslose Roboter aus bdquoMachinariumldquo tatsaumlchlicheinen Namen Er heiszligt Josef wie man auch imoffiziellen Forum nachlesen kann [4]

copy freiesMagazin GNU FDL Ausgabe 032010 48

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 49: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

LESERBRIEFE

Korrektur bdquoShebang ndash All der KramldquofreiesMagazin 012010 [5]

Eine Korrektur zur Korrektur ist auch eher seltenaber kommt dank des Hinweises von AndreasKlein auch einmal vor

Natuumlrlich ist es schoumln zu wissen dass

binshecho $0 $

nicht dasselbe wie

binecho

tut aber ohne eigentliche Problemloumlsung bringtdies nicht viel denn die Verarbeitung der Leer-zeichen ist problematisch

Loumlsen kann man das Ganze indem man solchein der Shell verarbeiteten Ausdruumlcke in Anfuumlh-rungszeichen setzt

binshecho $0 $

Dann machen auch (mehrfache) Leerzeichen kei-ne Probleme mehr

LINKS[1] httpwwwopen-slxde

[2] httpwwwfreiesmagazindefreiesMagazin-2010-02

[3] httpstorebackuporg[4] httpwwwfreiesmagazindefreiesMagazin-2010-

01[5] httpmachinariumnetforumindexphptopic=

6510

Die Redaktion behaumllt sich vor Leserbriefe gegebe-nenfalls zu kuumlrzen Redaktionelle Ergaumlnzungen fin-den sich in eckigen Klammern

Die Leserbriefe kommentieren

bdquoAcademia vs Businessldquo copy by Randall Munroe (CC-BY-NC-25) httpxkcdcom664

copy freiesMagazin GNU FDL Ausgabe 032010 49

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 50: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

MAGAZIN

VeranstaltungskalenderMessen

Veranstaltung Ort Datum Eintritt LinkOpen-Source-Info-Meeting Traunreut 12032010 frei httpwwwcubewerkde12 Chemnitzer Linux-Tage Chemnitz 13-14032010 5 EUR httpchemnitzerlinux-tagedeOpenExpo Bern 24-25032010 ndash httpwwwopenexpochAugsburger Linux-Infotag Augsburg 27032010 frei httpwwwlugadeLiWoLi 2010 Linz 15-17042010 frei httplinuxwochenatDer Freie Software Tag Krems 17042010 frei httplinuxwochenatGrazer Linuxtage Graz 24042010 frei httplinuxwochenatLinuxwochen Wien Wien 06-08052010 frei httplinuxwochenatLUG Camp Roth 13-16052010 55 EUR httpslug-camp-2010deFreifunk Weekend Berlin 14-16052010 frei httpswikifreifunknetLinuxwochen Eisenstadt Eisenstadt 28-29052010 frei httplinuxwochenatLinuxTag Berlin 09-12062010 12 EUR httpwwwlinuxtagdeFrOSCon Sankt Augustin 21-22082010 5 EUR httpwwwfroscondeFrOSCamp Zuumlrich 17-18092010 frei httpfroscamporgUbucon 2010 Goumlttingen 15-17102010 ndash http2010ubucondeOOoKWV Muumlnchen 16-17112010 ndash httpwwwoookwvde

(Alle Angaben ohne Gewaumlhr)

Sie kennen eine Linux-Messe welche noch nicht auf der Liste zu finden ist Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an

VorschaufreiesMagazin erscheint immer am ersten Sonntag eines Monats Die April-Ausgabe wird voraussichtlich am 1 April unter anderem mit folgenden Themenveroumlffentlicht

LinuxAdvanced USB-Edition aus Oumlsterreich Debian Testing bdquosqueezeldquo Eine Einfuumlhrung in Tcl

Es kann leider vorkommen dass wir aus internen Gruumlnden angekuumlndigte Artikel verschieben muumlssen Wir bitten dafuumlr um Verstaumlndnis

copy freiesMagazin GNU FDL Ausgabe 032010 50

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum
Page 51: freiesMagazin 03/2010 · Am 3. November 2009 hat Mandriva S.A. wie angekündigt die neue Version der gleichnamigen Linux-Distribution Mandriva Linux 2010 veröffentlicht. Glaubt man

MAGAZIN

ImpressumfreiesMagazin erscheint als PDF und HTML einmal monatlichRedaktionsschluss fuumlr die April-Ausgabe 14 Maumlrz 2010

KontaktE-MailPostanschrift freiesMagazin

co Dominik WagenfuumlhrBeethovenstr 9171277 Rutesheim

Webpraumlsenz httpwwwfreiesmagazinde

Autoren dieser AusgabeChristian Brabandt S36Volker Duetsch S33Hauke Goos-Habermann S20Ralf Hersel S15Marcel Jakobs S22Thorsten van Lil S5Mathias Menzer S13Michael Niedermair S47Jochen Schnelle S27Dominik Wagenfuumlhr S44

ISSN 1867-7991Erscheinungsdatum 7 Maumlrz 2010

RedaktionDominik Honnef Thorsten SchmidtDominik Wagenfuumlhr (Verantwortlicher Redakteur)

Satz und LayoutRalf Damaschke Yannic HaupenthalMichael Niedermair

KorrekturDaniel Braun Frank BrungraumlberStefan Fangmeier Mathias MenzerKarsten Schuldt

VeranstaltungenRonny Fischer

Logo-DesignArne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt Mit vollem Namen gekennzeichnete Beitraumlge geben nicht notwendigerweise die Meinung der Redaktion wieder Wenn Sie freiesMagazinausdrucken moumlchten dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall Die Baumlume werden es Ihnen danken -)

Soweit nicht anders angegeben stehen alle Artikel und Beitraumlge in freiesMagazin unter der GNU-Lizenz fuumlr freie Dokumentation (FDL) Das Copyright liegt beim jeweiligenAutor freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz fuumlr freie Dokumentation (FDL) mit Ausnahme von Beitraumlgen die unter einer anderen Lizenz hierinveroumlffentlicht werden Das Copyright liegt bei Dominik Wagenfuumlhr Es wird die Erlaubnis gewaumlhrt das Werkdie Werke (ohne unveraumlnderliche Abschnitte ohne vordere und ohnehintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License Version 12 oder jeder spaumlteren Version veroumlffentlicht von der Free Software Foundati-on zu kopieren zu verteilen undoder zu modifizieren Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 25 Das Copyright liegt bei Randall Munroe

copy freiesMagazin GNU FDL Ausgabe 032010 51

  • Editorial
  • Linux allgemein
    • Mandriva Linux 2010
    • Der Februar im Kernelruumlckblick
      • Anleitungen
        • Pimp my Desktop
        • Eigene Paketquellen zusammenstellen mit local-apt
          • Software
            • Die Z-Shell (zsh) -- Eine maumlchtige Alternative zur Bash
            • Google Charts -- Diagramme uumlber das Internet erstellen
            • Vim und das Surround-Plug-in
            • Effektives automatisiertes Bearbeiten von Daten mit sed
              • Community
                • Rezension GIMP -- kurzampgut
                • Rezension Python -- kurzampgut
                  • Magazin
                    • Leserbriefe
                    • Veranstaltungskalender
                    • Vorschau
                    • Impressum