AA_steps_saavem_sxc_1250475.jpg

© Saavem, sxc.hu

Vom Shell-Skript zum kompakten Powertool

Schrittweise

Auf der Basis einiger einfacher Shell-Befehle erstellen Sie mit wenig Aufwand ein flexibles, aber robustes Desktop-Tool.

Manchmal muss es schnell gehen: Liefert die Suche nach einem bestimmten Tool keine befriedigenden Ergebnisse, zimmert sich der kundige Linux-Anwender mit wenigen Zeilen Shell-Code eine eigene Lösung zusammen. Mit der Zeit wachsen dann die Anforderungen, aus dem schnell entworfenen Skript entsteht schließlich ein robustes Programm. Dazu gibt es bestimmte Strickmuster, die wir im Folgenden vorstellen wollen. Als Beispiel dazu entsteht ein Screenshot-Werkzeug, das es ermöglicht, den kompletten Bildschirminhalt oder Teile davon zu erfassen, als Grafik abzuspeichern oder an andere Programm durchzureichen.

Die Basis zu unserem kleinen Projekt liefert das Tool Import [1] aus der leistungsfähigen Kommandozeilen-Grafiksuite ImageMagick [2]. Ein Blick in die Import-Manpage verrät, was dieses Werkzeug alles kann: Es erfasst auf Wunsch ein einzelnes Fenster, den ganzen Desktop oder nur einen markierten Bereich. Die Grafiken legt es entweder in einer Datei ab oder gibt sie auf die Standardausgabe aus, von wo aus Sie die Daten bei Bedarf mithilfe einer Pipe an einen anderen Befehl weitergeben. Führen Sie den Befehl import abc.jpg auf der Kommandozeile aus, so verwandelt sich der Mauszeiger in ein Fadenkreuz, mit dem Sie dann die Auswahl treffen. Lassen Sie die Maustaste los, knipst das Tool den Screenshot und speichert ihn in der Datei namens abc.jpg ab.

TIPP

ImageMagick kann mit über 100 Grafikformaten umgehen. Verwenden Sie für den Dateinamen eine Endung wie tiff, gif oder png, dann wählt die Software automatisch das richtige Format.

Viele in Desktops integrierte Screenshot-Tools beherrschen nur wenige Formate, etwa JPG oder PNG. Einige erlauben zudem kein Erfassen eines definierten Bereichs, wie eines Bildausschnitts oder Fensters. Zudem fallen oft zwei bis drei Arbeitsschritte an, bis die gewünschte Datei als Grafik vorliegt. Dabei ließe sich alles in einem Rutsch erledigen: Einfach nur per Tastaturkürzel, Startmenü oder Symbol in der Task-Leiste das Tool starten, ein Fenster oder einen Bildausschnitt blitzschnell auswählen und dann gleich automatisiert abspeichern und eventuell an ein anderes Programm weiterreichen.

Im Eigenbau

Da mit Import ein sehr leistungsstarkes Kommandozeilentool für Screenshots bereitsteht, bietet es sich an, mit einem Shell-Skript die Lösung des Problems zu suchen (Listing 1). Dazu legen Sie sich am besten einen Ordner an, den Sie als Programm- oder Testordner benutzen.

Listing 1

#!/bin/bash
pfad=${HOME}/Programme/bildcutter
bilder=${HOME}/Bilder/Importe
declare -i nummer
nummer=$(cat ${pfad}/bildnummer)
import ${bilder}/${nummer}.jpg
let nummer++
echo $nummer > ${pfad}/bildnummer
@KE

Wie jedes ordentliche Skript beginnt diese Datei mit einer Zeile, die Auskunft über den zu verwendenden Interpreter gibt. Hinter dem Shebang (#!) steht der genaue Pfad zu diesem. Die Bash ist für solche Aufgaben immer eine gute Wahl. In den Zeilen 2 und 3 setzen Sie die Variablen für die verwendeten Pfade, unter anderem zu dem Ordner, in dem Sie Grafiken abspeichern wollen.

Um die automatische Vergabe eines Dateinamens zu ermöglichen, arbeiten Sie mit einer fortlaufenden Nummer, die Sie als Teil des Dateinamens verwenden. Die Anweisung in Zeile 4 legt eine Variable als Ganzzahl an, die Sie bei Bedarf hochzählen (Zeile 7). Während des weiteren Programmablaufs liest das Skript diese Zahl aus einer Datei aus (Zeile 5) oder schreibt die um den Wert Eins erhöhte Zahl wieder in diese hinein (Zeile 8).

Sie benötigen also für den ersten Start des Skripts eine Datei, in der eine Nummer steht. Statt umständlich einen Editor zu öffnen, erstellen Sie dieses File in einem Terminal mit dem Kommando: @LI: $ echo 1 > ${HOME}/Programme/bildcutter/bildnummer

In Zeile 5 lesen Sie diese Zahl mit einem einfachen Cat-Befehl aus. Da diese Anweisung in runden Klammern mit einem vorangestellten Dollar-Zeichen steht, führt die Bash das Kommando in einer Subshell aus und speichert die Ausgabe in der Variablen nummer ab. Nach dieser Operation erfolgt der eigentliche Import.

Statt eines Namens für die Bilddatei kombiniert das Skript den Pfad, den Sie in der Variablen bilder gespeichert haben, sowie die Nummer und ein angehängtes .jpg. Die geschweiften Klammern um die Namen der Variablen sorgen dafür, dass die Shell die darin abgespeicherten Werte einsetzt und so das Bild mit einer Nummer versehen im gewünschten Verzeichnis abspeichert. Durch den Befehl in Zeile 7 zählt das Skript die Variable nummer um eins hoch. Mittels eines einfachen Echo-Befehls in Zeile 8 schreibt es den neuen Wert in die Datei bildnummer.

Variationen

Sie dürfen auch andere Formate für das Bild verwenden, wenn Sie eine spezielle Aufgaben damit erledigen wollen. So könnten Sie etwa interessante Textpassagen ausschneiden und sie mittels Pipe an das Texterkennungsprogramm Ocrad [3] weitergeben, damit dieses dann die Bilddatei in eine Textdatei umwandelt. Dazu müssen Sie allerdings mit weniger bekannten Formaten wie PBM, PGM oder PPM arbeiten und das importierte Bild nicht abspeichern, sondern in die Standardausgabe schreiben.

Das Skript an sich lässt noch Komfort vermissen: Sie müssen es immer von der Kommandozeile aus aufrufen. Da bietet sich an, im Desktop ein Tastenkürzel zu erstellen, das einfach auf das Skript verweist (Abbildung 1). Gnome bietet diese Möglichkeit unter Systemeinstellungen | Tastatur | Tastenkürzel, bei KDE verwenden Sie Systemeinstellungen | Systemverwaltung | Tastenkombinationen. So gut wie alle grafischen Oberflächen bieten die Möglichkeit, solche Tastenkürzel anzulegen und zu konfigurieren.

Abbildung 1: Während Sie im Web surfen, sichern Sie per Druck auf einen Starter oder mithilfe eines Tastaturkürzels komfortabel einen Bildausschnitt.

Bei regelmäßiger Nutzung des kleinen Batch-Programms stellen Sie sicher schnell fest, dass es sich zwar fast wie ein vollwertiges Desktop-Tool verhält, aber trotzdem noch einige Kanten aufweist. Dann zahlt es sich aus, dass Sie die Möglichkeit haben, es unkompliziert nach Belieben zu erweitern.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 10/2016: Kryptographie

Digitale Ausgabe: Preis € 0,00
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

zweites Bildschirm auf gleichem PC einrichten
H A, 30.09.2016 19:16, 0 Antworten
Hallo, ich habe Probleme mein zweites Bildschirm einzurichten.(Auf Debian Jessie mit Gnome) Ich...
Probleme mit MPC/MPD
Matthias Göhlen, 27.09.2016 13:39, 2 Antworten
Habe gerade mein erstes Raspi Projekt angefangen, typisches Einsteigerding: Vom Raspi 3B zum Radi...
Soundkarte wird erkannt, aber kein Ton
H A, 25.09.2016 01:37, 6 Antworten
Hallo, Ich weiß, dass es zu diesem Thema sehr oft Fragen gestellt wurden. Aber da ich ein Linu...
Scannen nur schwarz-weiß möglich
Werner Hahn, 20.09.2016 13:21, 2 Antworten
Canon Pixma MG5450S, Dell Latitude E6510, Betriebssyteme Ubuntu 16.04 und Windows 7. Der Canon-D...
Meteorit NB-7 startet nicht
Thomas Helbig, 13.09.2016 02:03, 4 Antworten
Verehrte Community Ich habe vor Kurzem einen Netbook-Oldie geschenkt bekommen. Beim Start ersch...