Know-how für die Kommandozeile

Aus EasyLinux 04/2011

Know-how für die Kommandozeile

© sxc.hu

Shell-Tipps

Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sich manche Aufgabe schneller bewältigen lässt als in grafischen Programmen. Wir stellen die wichtigsten Anwendungen vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.

Tipp: “identify”: Datum und Uhrzeit von Fotos

Mit einem einfachen Kommando auf der Shell finden Sie heraus, wann Sie einen bestimmten Schnappschuss mit Ihrer Digitalkamera aufgenommen haben. Dabei hilft das Tool identify aus der ImageMagick-Toolsammlung, die eine Reihe von Bildbearbeitungsprogrammen für die Kommandozeile enthält. Sollte ImageMagick nicht auf Ihrem Rechner installiert sein, finden Sie das gleichnamige Paket auf allen von EasyLinux unterstützten Distributionen über den Paketmanager.

Rufen Sie einfach nur identify zusammen mit dem Dateinamen eines Fotos auf, sehen Sie lediglich Informationen zum Format:

$ identify IMG_1431.JPG
IMG_1431.JPG JPEG 2272x1704 2272x1704+0+0 8-bit DirectClass 1.85692mb

Viel ausführlicher gestaltet sich die Ausgabe, wenn Sie zusätzlich die Option -verbose verwenden. Die lange Liste von Detailinformationen leiten Sie am besten über ein Pipe-Zeichen (Tastenkombination [AltGr]+[<]) an einen Pager wie less weiter und betrachten sie seitenweise:

identify -verbose IMG_1431.JPG | less

In diesen ganzen Zusatzinformationen, welche die Kamera im Foto abgespeichert hat, finden Sie in der Abteilung Properties auch zahlreiche EXIF-Informationen:

...
  exif:DateTime: 2009:12:19 15:12:37
  exif:ExifImageLength: 1704
  exif:ExifImageWidth: 2272
  exif:Flash: 16
...

Hinter DateTime steht also, wann Sie geknipst haben, in diesem Fall am 19. Dezember 2009 um 15:12 Uhr. Um dieses Detail nun aus der langen Ausgabe herauszufiltern, kombinieren Sie identify entweder wieder über ein Pipe-Zeichen mit dem Tool grep[1], oder Sie setzen direkt die Option -format ein. Über diese und die Formatangabe %[EXIF:Feldname] zeigen Sie gezielt einzelne EXIF-Informationen an:

$ identify -format %[EXIF:DateTime] IMG_1431.JPG
2009:12:19 15:12:37

Natürlich geht das nicht nur mit einem Foto, sondern auch mit mehreren Schnappschüssen. Dazu ersetzen Sie im oben gezeigten Befehl einfach den Dateinamen IMG_1431.JPG durch *.JPG (oder je nach Schreibweise Ihrer Dateien *.jpg), um alle JPEG-Dateien des aktuellen Verzeichnisses zu erwischen.

Tipp: Foto in Kohlezeichnung umwandeln

In der ImageMagick-Tool-Sammlung ist auch das Programm convert enthalten, das Bilder vergrößert, verkleinert, sie beschriftet und vieles mehr. Auch verschiedene Filter für die künstlerischen Gestaltung kennt das praktische Tool. Mit dem Befehl

convert bild.jpg -charcoal 4 kohle.jpg

wandeln Sie beispielsweise bild.jpg in eine Kohlezeichnung namens kohle.jpg um (Abbildung 1). Die Zahl hinter der Option -charcoal bestimmt dabei die Härte des Kohlestifts.

Einen weiteren interessanten Effekt erzielen Sie, indem Sie zusätzlich den Parameter -negate angeben. Dieser erstellt ein Negativ, vertauscht bei einer Kohlezeichnung also Schwarz und Weiß.

Tipp: Passwortgeschütztes mit “wget” herunterladen

Der Downloadmanager wget unterstützt Sie auch dabei, passwortgeschützte Daten aus dem Web herunterzuladen. Beim Aufruf definieren Sie dazu hinter zwei Schaltern den Benutzernamen und das Kennwort:

wget --http-user=heike --http-passwd=geheim www.meinserver.de

Der Nachteil an dieser Methode: Zeigt ein anderer Benutzer auf dem System über das ps-Kommando die laufenden Prozesse an, taucht in der Ausgabe der komplette wget-Befehl inklusive aller Parameter im Klartext auf (Listing 1).

Listing 1

“ps”-Ausgabe

$ ps auxwww
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   3052  1840 ?        Ss   Jun17   0:02 /sbin/init
...
heike    19119  0.0  0.1   7468  1744 pts/1    T    10:26   0:00 wget --http-user=heike --http-passwd=geheim http://www.meinserver.de/~huhn/Letter.mp3
huhn     19120  0.0  0.1   5856  1196 pts/0    R+   10:26   0:00 ps auxwww

Eine mögliche Lösung für das Problem ist, den Benutzernamen und das Kennwort in eine persönliche Konfigurationsdatei einzutragen. Diese liegt versteckt im eigenen Home-Verzeichnis, fängt also mit einem Punkt an, und hört auf den Namen ~/.wgetrc. Sie erstellen die Datei mit einem Texteditor Ihrer Wahl, etwa Gedit oder KWrite:

gedit ~/.wgetrc

Tragen Sie die Zugangsdaten dort in zwei Zeilen untereinander ein:

http_user = heike
http_passwd = geheim

Nach dem Speichern und Beenden des Editors verstecken Sie die Datei noch besser, indem Sie ihr über das Kommando

chmod 600 ~/.wgetrc

die Leserechte für die anderen Benutzer auf Ihrem System entziehen.

Tipp: Komprimierte Textdateien betrachten

Mit gzip oder bzip2 komprimierte Textdateien müssen Sie nicht erst umständlich mit gunzip beziehungsweise bunzip2 auspacken, um sie anzuschauen. Auf der Shell stehen die beiden Kommandos zless und bzless sowie das Gespann zmore/bzmore zur Verfügung, welche die komprimierten Texte anzeigen:

bzless /usr/share/doc/.../index.cache.bz2
zless /var/log/cups/access_log.1.gz

Die Bedienung ist identisch wie bei den Pagern less und more, denn die Tools entpacken im Hintergrund die Dateien und zeigen sie mit less bzw. more an: Mit den Pfeiltasten blättern Sie zeilenweise hoch und runter, mit [Bild ab] und [Bild auf] seitenweise, und [Q] beendet das Programm.

Geben Sie doch mal z oder bzgefolgt von [Tab],[Tab] ein. Die Shell zeigt nun weitere Kommandos zur Behandlung gepackter Textdateien an. So arbeiten zcat und bzcat ähnlich wie cat und kleben Dateien aneinander, zcmp/bzcmp und zdiff/bzdiff vergleichen zwei komprimierte Texte miteinander, und zgrep/bzgrep durchsuchen die Dateien nach Zeichenketten.

Hinter all diesen Tools stecken Shell-Skripte, welche die Dateien auspacken und danach mit den jeweiligen Originalkommandos bearbeiten. Daher ist nicht nur die Bedienung gleich, sondern es stehen auch alle bekannten Parameter zur Verfügung.

Tipp: Letzte Befehle auf der Bash auflisten

Die Standard-Shell unter Linux heißt Bash. Dieser Kommandozeileninterpreter merkt sich die zuletzt eingetippten Kommandos und bringt diese auf Wunsch auf den Schirm zurück. Mit [Pfeil auf]/[Pfeil ab] blättern Sie durch diese History, und mit [Strg]+[R] durchsuchen Sie den Speicher gezielt nach vergangenen Befehlen. Um komplexere Abfolgen zurück auf den Schirm zu holen und die getippten Kommandos im Zusammenhang zu betrachten, können Sie entweder die History-Datei ~/.bash_history im Pager oder Texteditor betrachten oder das Builtinfc (“Fix Command”) verwenden.

Mit fc listen Sie die letzten Befehle auf bzw. verändern diese. Tippen Sie fc -l, sehen Sie die letzten 16 Kommandos (Abbildung 2). Dürfen es weniger oder mehr sein, definieren Sie zusätzlich die Anzahl als Parameter. So blendet der folgende Befehl etwa die letzten 20 Kommandos ein:

fc -l -20

Weiterhin ist es möglich, die Nummerierung abzuschalten (-n) und die Reihenfolge umzukehren (-r).

Abbildung 2: Das Shell-Builtin "fc" zeigt unter anderem die letzten Kommandos an, die Sie auf der Bash eingetippt haben.

Abbildung 2: Das Shell-Builtin “fc” zeigt unter anderem die letzten Kommandos an, die Sie auf der Bash eingetippt haben.

Tipp: Programme ausführen und beobachten: “watch”

Dieser praktische Helfer führt in einem von Ihnen definierten Intervall (Voreinstellung: alle zwei Sekunden) ein anderes Programm aus. Dabei verwendet watch gleich den ganzen Bildschirm. Tippen Sie beispielsweise watch uptime, sehen Sie am oberen Rand des Terminals den Hinweis Every 2,0s: uptime – das Tool führt also alle zwei Sekunden den Befehl uptime aus (der verrät, wie lange der Rechner schon läuft, und die aktuelle CPU-Auslastung nennt). Um das Intervall auf eine Sekunde zu verkürzen, geben Sie hinter der Option -n die gewünschte Sekundenanzahl an. Soll watch jede Sekunde die Anzeige aktualisieren, schreiben Sie also Folgendes:

watch -n 1 uptime

Dass sich die Ausgabe verändert, ist nicht ganz offensichtlich. Die Sekunden- und Minutenanzeige von uptime verändert sich zwar, aber ins Auge springt dies nicht unbedingt. Setzen Sie daher für watch den Parameter -d ein, um die Unterschiede hervorzuheben (Abbildung 3). Sie beenden die Beobachtung mit der Tastenkombination [Strg]+[C].

Abbildung 3: Mit dem Schalter "-d" bringen Sie "watch" dazu, die Unterschiede invers darzustellen. Veränderungen fallen so schneller ins Auge.

Abbildung 3: Mit dem Schalter “-d” bringen Sie “watch” dazu, die Unterschiede invers darzustellen. Veränderungen fallen so schneller ins Auge.

Tipp: Terminaluhr mit “watch”, “date” und “figlet”

Zusammen mit dem ASCII-Art-Programm Figlet [1] und watch basteln Sie sich eine schicke Uhr für die Konsole, welche die Stunde, die Minuten und Sekunden anzeigt. Installieren Sie zunächst, falls notwendig, das Paket figlet über den Paketmanager Ihrer Distribution nach. Alle von EasyLinux unterstützten Distributionen enthalten das praktische Bannertool in den Standardpaketquellen.

Als Nächstes folgt der watch-Aufruf selbst. Über den Parameter -t legen Sie fest, dass der Header vom oberen Terminalrand verschwindet. Außerdem bestimmen Sie über -n 1 den Sekundentakt:

watch -t -n 1 ...

Jetzt folgt das Programm, welches watch aktualisieren soll. Hier kommt der Befehl date zum Einsatz, der Datum, Uhrzeit und Zeitzone auf der Kommandozeile anzeigt. Er erhält als Aufrufoption ein +%T, damit er wirklich nur die sechsstellige Uhrzeit (HH:MM:SS) präsentiert:

watch -t -n 1 "date +%T"

Das Ganze hübscht Figlet anschließend noch auf. Dazu leiten Sie die date-Ausgabe einfach über ein Pipe-Zeichen ([AltGr]+[<]) an das Kommando zur Bannererstellung weiter:

watch -t -n 1 "date +%T | figlet"

Abbildung 4 zeigt das Ergebnis – eine hübsche und auffällige Uhr für die Kommandozeile.

Abbildung 4: Mit den drei Shell-Kommandos "watch", "date" und "figlet" zaubern Sie im Handumdrehen eine Uhr ins Terminal.

Abbildung 4: Mit den drei Shell-Kommandos “watch”, “date” und “figlet” zaubern Sie im Handumdrehen eine Uhr ins Terminal.

Tipp: QR-Codes auf der Konsole erstellen

Bei QR-Codes (englisch “quick response” = “schnelle Antwort”) handelt es sich um zweidimensionale Strichcodes mit schwarzen und weißen Punkten, die auf einem Quadrat angeordnet sind [2]. Da die meisten Smartphones über ihre eingebaute Kamera und eine Scanner-App solche Codes lesen können, werden die “Geheimcodes” immer populärer. Oft enthalten die magischen Quadrate Webadressen und erscheinen in Zeitschriften, Informationsblättern oder auf Plakaten. Mit dem Handy scannen Sie den Code und gelangen – eine Internetverbindung vorausgesetzt – zur Homepage des Anbieters.

Wer selbst solche Codes basteln möchte, kann entweder einen der zahlreichen Webdienste nutzen oder zu einem kleinen, aber feinen Kommandozeilentool greifen. Installieren Sie dazu das Paket qrencode, welches das gleichnamige Programm auf die Platte bringt. Hinter dem Befehlsnamen geben Sie zuerst nach -o den Namen der Ausgabedatei an; der fertige Code landet in einer PNG-Grafikdatei. In doppelte Hochkommata eingeschlossen folgt anschließend der Text:

qrencode -o welt.png "Hallo Welt!"

In der Voreinstellung macht qrencode die einzelnen Punkte drei Pixel groß. Über den Schalter -s stellen Sie aber eine andere Größe ein, zum Beispiel -s 5 für 5 Pixel große Punkte. Bis zu 4.296 Zeichen können Sie in den 2-D-Strichcodes unterbringen (Abbildung 5).

Abbildung 5: Unter Linux erstellen Sie QR-Codes am schnellsten auf der Shell mit dem kleinen Tool "qrencode".

Abbildung 5: Unter Linux erstellen Sie QR-Codes am schnellsten auf der Shell mit dem kleinen Tool “qrencode”.

Tipp: Besser suchen im Editor Vim

Der Texteditor vim bringt gleich mehrere Suchfunktionen mit. Tippen Sie z. B. / und geben danach etwas ein, sucht vim vorwärts nach der Zeichenkette und springt direkt zum ersten gefundenen Treffer. Danach können Sie einfach [N] drücken, um vorwärts zur nächsten Fundstelle zu hüpfen; [Umschalt]+[N] bringt Sie in die andere Richtung. Sie können von der aktuellen Position aus auch direkt rückwärts suchen: Dazu geben Sie ein Fragezeichen und dann den Suchbegriff ein.

Zwei weitere praktische Abkürzungen ersparen sogar die Tipparbeit für den Suchbegriffs: Geben Sie einfach das Sternchen * ein, um vorwärts nach dem Wort unter dem Cursor zu suchen; mit # geht es in die andere Richtung.

Glossar

EXIF

Das Exchangeable Image File Format ist ein Standard für das Speichern von Zusatzinformationen in Bilddateien. Die meisten Digitalkameras legen hier Angaben zu Datum und Zeit, zum Kameramodell, zur Verschlusszeit, zum Blitz usw. ab.

Builtin

Ein Builtin ist kein eigenständiges Programm, sondern ein in die Shell eingebauter Befehl. Builtins haben keine eigene Manpage, sondern ihre Dokumentation ist in der Regel Teil der Bash-Dokumentation (man bash). Eine Kurzbeschreibung zu einem eingebauten Befehl liefert help Befehl.

Infos

[1] Artikel zu Figlet und anderer ASCII-Kunst: Heike Jurzik, “Punkt, Punkt, Komma, Strich …”, EasyLinux 12/2004, S. 50 ff., http://www.easylinux.de/2004/12/050-ascii/

[2] Wikipedia-Artikel zu QR-Codes: http://de.wikipedia.org/wiki/QR-Code

EasyLinux 04/2011 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben