Viele, die Linux als Desktop Betriebssystem einsetzen, haben heutzutage fast kein Bezug mehr zu der Konsole, da für die tägliche Arbeit meistens die grafischen Tools, die in einem Fenster-Manager laufen, ausreichen. Sogar die meisten Installer der gängigen Distributionen sind mittlerweile grafisch und werden nicht mehr in der Konsole ausgeführt. Das ist nichts Schlechtes, aber ich möchte hier in dieser Artikelserie effiziente Wege mit der Konsole aufzeigen, die das tägliche Arbeiten einfacher gestalten, und demonstrieren, wie mächtig die Konsole ist. Alle Beispiele habe ich auf Ubuntu ausgeführt, sollten aber auf jeglichen sonstigen Distribution ebenfalls ausführbar sein.
Wer schon Erfahrung mit der Konsole hat, sollte vielleicht direkt zum Punkt “Saugen was und wie ich will” gehen. Ansonsten könnt ihr alles alles mitmachen und die Befehle abtippen, somit ist der Lerneffekt grösser. Die Befehle kommen alle aus dem Englischen, darum scheint es manchmal ein wenig kryptisch zu sein, doch benutzt eure Englischkenntnisse und ihr werdet euch die Befehle leichter merken können.
Aufbau der Konsole
Der Aufruf der Konsole gestaltet sich einfach: Man öffnet das Terminal oder “XTerm” oder “Konsole”. Die Terminal-Programme sind Konsolen in der Fensterumgebung. Wenn die Konsole offen ist, dann erscheint erstmal ein leres Fenster mit folgender Zeile.
username@rechnername:~$
Am Anfang der Zeile steht der aktuelle Nutzername, mit dem man nun in der Konsole angemeldet ist, nach dem Klammeraffen der aktuelle Rechnername (oder auch Host genannt), gefolgt von einem Doppelpunkt. Das Tilt nach dem Doppelpunkt bedeutet, dass der User sich in seinem Home-Verzeichnis befindet. Den Abschluss macht ein Dollarzeichen. Damit wird angezeigt, dass ein User angemeldet ist. Dies ist allerdings frei konfigurierbar und somit nur eine übliche Form von der Darstellung der Standardinformationen und kann geändert werden oder auch schon in der Grundkonfiguration anders sein.
Jetzt geht’s los
Fangen wir nun wirklich mit dem Arbeiten auf der Konsole an. Zu den übliche Aufgaben mit der Konsole gehört das Hantieren mit den Dateien. Doch dazu müssten wir auch wissen, welche Dateien wo liegen und wo wir uns gerade befinden. Dazu kann man den nachfolgenden Befehl in die Konsole eintippen und das ganze mit Enter ausführen.
pwd
Der Befehl pwd zeigt das aktuelle Verzeichnis an, beispielsweise “/home/username/”.
cd
Dieser Befehl setzt das aktuelle Verzeichnis auf das Heimverzeichnis des aktuellen Benutzers. Wenn wir jetzt nochmals pwd eingeben, wird sich wahrscheinlich nicht viel geändert haben, doch wir wissen noch nicht, was im Home-Verzeichnis abgelegt ist.
ls
Mit ls lassen sich die Dateien und Verzeichnisse im aktuellen Verzeichnis anzeigen, darunter werden wir wahrscheinlich auch das Verzeichnis Downloads sehen.
cd Downloads
Mittels dieses schon bekannten Befehls wechseln wir in das Downloads-Verzeichnis. Einfach nach cd den Verzeichnisnamen eingeben. Wichtig ist, dass wir auf die Groß- und Kleinschreibung achten. Jetzt wird am Anfang der Zeile auch das Verzeichnis “Downloads” angezeigt. Kommen wir nun zu etwas Konkretem und erstellen ein neues Verzeichnis mit dem Namen “SVG”.
mkdir SVG
Mit dem Befehl mkdir kann man ein neues Verzeichnis mit dem gewünschten nachfolgenden Namen erstellen. Wie man jetzt in das erstellte Verzeichnis wechselt, wurde oben bereits erklärt.
Saugen was und wie ich es will
Nun möchte ich gerne mal vorführen wie mächtig die Konsole sein kann. Wir brauchen keinen Download-Manager um Dateien aus dem Internet zu beziehen, dies geht auch mit dem Befehl wget, der übrigens die Protokolle HTTP, HTTPS sowie FTP versteht. Wir möchten die SVG-Dateien von einer Webseite herunterladen, ohne das wir genau wissen wo sie liegen.
wget -r -c -nH -nd -A svg http://blackicemedia.com/presentations/
Wie wir sehen, sind hinter dem Befehl Zeichen mit einem bevorstehenden Bindestrich aufgeführt, das sind Optionen mit denen man das verhalten des Befehls beeinflusst. Was diese bedeuten, werde ich in der folgenden Liste erklären.
- -r : Diese Option bedeutet “rekursiv”. Damit wird auch in den Unterverzeichnissen gesucht.
- -c : Mit dieser Option führt wget einen unterbrochenen Datei-Download wieder weiter.
- -nH : Damit wird kein Verzeichnis mit dem Hostname angelegt.
- -nd : Damit wird die ursprüngliche Ordnerstruktur ignoriert und alle Files im selben Verzeichnis kopiert.
- -A : …gibt an, welche Dateitypen man downloaden möchte, in unserem Fall SVG-Dateien. Es können auch mehrere Typen mit Komas getrennt aufgeführt werden.
Am Ende setzen wir noch die URL ein, von der wir die Dateien downloaden wollen. Jetzt möchten wir natürlich sehen, was wir alles bekommen konnten und dies machen wir wieder mit der Auflistung der Dateien aber mit dem Unterschied, dass wir alles in einer Liste aufgeführt haben möchten.
ls -l
Die Option -l vom Befehl bezweckt, dass alle Dateien und Verzeichnisse als Liste mit allen ihren Attributen aufgelistet werden. Es wird uns nur eine Datei angezeigt und das ist richtig so, denn in allen Verzeichnissen unter der angegebenen URL existiert nur diese eine SVG-Datei. Öffne diese Datei in Inkscape, Firefox oder Chrome und du siehst du einen Tiger, wenn alles gut gegangen ist.
Ich will es anders ohne Aufwand
SVG ist ein Standard für 2D Vektorgrafiken im Netz der auf den XML Standard aufbaut. Somit ist technisch gesehen eine SVG-Datei eine Textdatei die mit einem Texteditor erstellt, sowie modifiziert werden kann. Üblicherweise erstellt und ändert man die SVG Dateien mit Inkscape.
Jetzt lassen wir die ganze Kraft der Konsole ungehemmt los. Wir erzeugen eine neue Datei, die eine modifizierte von der Original ist und das in einem Schritt.
cat awesome_tiger.svg | sed -e's/#FFFFFF/#FF0099/' > tiger.svg
Huch was soll das jetzt wieder sein? Keine Bange, ich erkläre alles Schritt für Schritt. Im Voraus: Das ist nicht ein Befehl, sondern zwei Befehle und eine Umleitung. Da eine SVG-Datei ein XML-File ist, das nur aus Text besteht, ist die Handhabung in der Konsole relativ simpel. Wir geben die heruntergeladene Datei awsome-tiger.svg in der Standardausgabe aus, so gut wie immer ist das die Konsole selbst. Geben wir nur cat awsome_tiger.svg ein, werden wir sehen, dass die ganze Datei auf der Konsole als XML aufgeführt wird. Der darauf folgende senkrechte Strich ist eine Pipe und leitet die Ausgabe des vorhergehenden Befehls auf den folgenden um.
Jetzt editieren wir den Datenstrom vom vorherigem Befehl cat mit sed und möchten die Zeichenfolge #FFFFFF in #FF0099 expliziet ändern. Im Klartext heißt das, die Farbe Weiß im SVG File möchten wir auf Pink ändern und zwar nur diese Zeichenfolge und keine ähnliche (Die Farbwahl ist nur gewählt, damit man klare Veränderungen sieht.). Mit dem Grösser-Als-Zeichen schreiben wir die Ausgabe in eine neue Datei mit dem Namen “tiger.svg”. Das alles ist plötzlich nicht mehr so wild wenn man weiß was hier gemacht wurde. Auf den Befehl sed gehen wir später in dieser Beitragsserie noch genauer ein und lassen den mal so stehen.
Mit Dateien und Verzeichnissen weiter hantieren
ls -al *.svg
Jetzt sollten wir zwei Dateien im Verzeichnis SVG haben. Diese sehen wir am besten wieder mit dem Befehl ls und den Optionen -a für alles und -l für Liste. Wie wir sehen, können wir diese Optionen ohne weitere Angaben auch zusammenziehen und mit *.svg zeigen wir nur die SVG an, der Stern steht für beliebige viele Zeichen.
mv ./tiger.svg ../pink_tiger.svg
Eine Datei zu verschieben oder umzubenennen ist schnell mit mv gelöst. Als erstes gibt man an, welchee Datei wir verschieben oder umbenennen wollen und dann wohin mit welchem Namen. Der Punkt mit Backslash (./) bedeutet im selbigen Verzeichnisse wo wir uns gerade Befinden. Die zwei Punkte und Backslash (../) bedeutet ein Verzeichnis höher. Dies kann man auch mehrfach nutzen um einige Verzeichnisse höher zu gelangen z.B. “../../../img/” heißt drei Verzeichnisse höher als da wo ich mich jetzt befinde und dann in das Verzeichnis img wechseln. Wenn wir die Datei nur umbenennen wollen, dann geben wir ein: mv dateinamealt.dat dateinameneu.dat
cd ..
Das Springen in das jeweils höhere Verzeichnis gelingt ebenfalls mit dem schon bekannten Befehl cd und der Angabe von zwei Punkten. Kommen wir nun zum nächsten Befehl.
rmdir SVG
Wir löschen nun das Verzeichnis “SVG” mit dem Befehl rmdir und werden feststellen, das nun eine Fehlermeldung erscheint. Die Konsole gibt nur eine Ausgabe, wenn der Befehl ein Fehler erzeugt oder eine Ausgabe erwartet wird, sonst bleibt die Konsole “still”. Wie umgehen wir nun den Fehler? Wir müssen erst alle Dateien aus dem Verzeichnis löschen, sonnst können wir das Verzeichnis nicht löschen.
rm ./SVG/*
Der Befehl rm bedeutet löschen und was danach steht weißt du bereits, alle Dateien im Verzeichnis SVG löschen. Jetzt löscht man nochmals das SVG-Verzeichnis und man wird sehen, dass es nun funktioniert.
Gebt mir ein P, gebt mir ein D, gebt mir…
Mindestens jetzt solltet ihr noch das Vektorzeichenprogramm Inkscape auf eurem Linux System haben. Unter Ubuntu könnt ihr das einfach über das Software-Center installieren, denn jetzt zeige ich euch, wie man auch Programme mit einer grafischer Oberfläche (GUI) mittels Konsole einfach nutzen kann.
inkscape --without-gui --file=pink_tiger.svg –export-pdf=tiger.pdf
Als erstes wird das Programm Inkscape mit folgenden Optionen selbst aufgerufen: Ohne grafische Oberfläche und die zu öffnete Datei und der Export in eine PDF Datei. In diesem Fall sehen wir die Optionen mit zwei Bindestriche. Dies wird angewendet wenn die Optionen ganz ausgeschrieben werden. Diese lassen sich nicht zusammenfassen. Nach dem Befehl haben wir aus dem SVG File pink-tiger.svg ein PDF mit dem Namen tiger.pdf generiert. Öffnet nun mal die SVG und die PDF Datei und seht was geschehen ist, wenn eure Neugierde euch nicht schon dazu gebracht hat. Ihr seht, mit der Konsole ist mehr möglich, als nur ein wenig im Dateisystem die Bits und Bytes zu schupsen. In den nächsten Artikeln gehe ich auf systemrelevante Dinge ein und wie ihr z.B. als Root arbeitet und ich bringe Beispiele aus der alltäglichen Praxis. Nun ist aber Schluss und wir verlassen die Konsole mit dem Befehl…
exit
Unter http://cygwin.com/ findet man eine “collection of tools which provide a Linux look and feel environment for Windows”, mit denen man beinahe auch alles der obrigen Info, mit denselben Befehlen, auf einem Windows-System erledigen kann.
Ein Guter Tipp! Cygwin setzte ich auch immer ein, wenn ich auf einer Windows Maschine arbeiten muss.