freiesmagazin 03/2010 · am 3. november 2009 hat mandriva s.a. wie angekündigt die neue version...
TRANSCRIPT
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-