Etwas robuster

Im nächsten Schritt geht es daran, das Skript so zu erweitern, dass es sich bei Bedarf einfach auf ein anderes System übertragen ließe. Bislang ist es ziemlich einfach aufgebaut und außerdem anfällig für Fehler. Listing 2 zeigt eine optimierte Version.

In Zeile 2 sehen Sie gleich die erste Erweiterung des Programms in Form der Übernahme eines Parameters. Falls Sie dem Skript einen Parameter übergeben, nimmt es mit $1 oder ${1} Bezug darauf. Damit Sie nicht zwingend einen Parameter anzuhängen brauchen, existiert mit der Erweiterung :-nichts beim Namen der Variable ein Fallback. Geben Sie nichts an, erhält diese den String nichtsals Wert. Das ist notwendig, um beim späteren Zugriff keine Fehlermeldung zu erhalten.

Listing 2

01 #!/bin/bash
02 GRPROGRAMM=${1:-nichts}
03 BILDER=~/Bilder
04 ZIEL=${BILDER}/Importe
05 BNR=$(date +"%Y-%m-%d_%H%M%S")
06 FMT=jpg
07 BILDNAME=ImportiertesBild-${BNR}.${FMT}
08 CONFIG=${HOME}/.config/sniprc
09 [ -f ${CONFIG} ] && source ${CONFIG}
10 [ -d ${ZIEL} ] ] || mkdir -p ${ZIEL}
11 import ${ZIEL}/${BILDNAME} && \
12 which ${GRPROGRAMM} &>/dev/null && \
13 ${GRPROGRAMM} ${ZIEL}/${BILDNAME}

In den Zeilen 3 bis 7 speichern Variablen – ausschließlich mit Großbuchstaben im Namen – Pfadangaben und Dateinamen. Der Einsatz der Großbuchstaben hilft, den Code übersichtlich zu gestalten. In der Regel ändern sich diese Variablen während des gesamten Verlaufs des Programms nicht mehr.

In Zeile 5 generiert das Kommando date einen eindeutigen und fortlaufenden Namensbestandteil für die Bilder. Der Format-String hinter dem Plus-Zeichen sorgt dafür, dass sich Jahr, Monat, Tag und die Uhrzeit auf die Sekunde genau im Namen wiederfinden. In Zeile 6 geben Sie das gewünschte Suffix für die Bilder an. Auf diese Weise bestimmen Sie den Dateityp. Zeile 7 baut den Namen für die Bilddateien zusammen.

Der zusammengesetzte Ausdruck in Zeile 4 markiert den Ort, an dem das Skript die Grafiken speichert. Da das Programm aber nicht weiß, ob dieser Ordner existiert, prüft es im späteren Verlauf, ob Sie das Verzeichnis angelegt haben. Ist das nicht der Fall, übernimmt es selbst diese Aufgabe.

Zeile 8 zeigt den Pfad zu einer Konfigurationsdatei für Anwender. Das Skript prüft in Zeile 9, ob diese vorliegt, und baut deren Zeilen ins Skript ein. So kann der Benutzer die vordefinierten Werte aus den Zeilen 3 bis 7 überschreiben, ohne dazu das Skript anzufassen oder zu kopieren.

Zeile 10 prüft, ob das Zielverzeichnis für die Bilder existiert – falls nicht, legt das Skript diese Verzeichnisse an. Der Parameter -p für das Kommando mkdir sorgt dafür, dass dabei alle notwendigen übergeordneten Verzeichnisse ebenfalls entstehen.

In Zeile 11 erfolgt der eigentliche Import. Der Befehl enthält keine Optionen. Hier böte sich nochmals Potenzial für eine Modifikation. War der Import erfolgreich, so kommen die nächsten Befehle nach der Und-Verkettung && zum Zuge – der Übersicht halber in zwei Zeilen aufgeteilt.

Beim Aufruf übergeben Sie dem Skript einen Parameter, wie den String gimp für das gleichnamige Bildbearbeitungsprogramm. Das Skript überprüft, ob es in den regulären Pfad eine ausführbare Datei gibt (Zeile 12). Dabei schreibt es die Ausgabe nach /dev/null, da nur der Rückgabewert interessant für den weiteren Verlauf des Programms ist. Ist die Suche erfolgreich, übergibt das Skript die Bilddatei an die entsprechende Applikation (Zeile 13).

Fazit

Es bleibt Ihnen überlassen, ob und welche Programme Sie dem Skript als Parameter übergeben. Fest steht, dass Sie mit dem kleinen Skript so manche vollwertige Desktop-Anwendung locker in die Tasche stecken. Dabei haben Sie aber noch den Vorteil, ohne großen Aufwand das Skript bei Bedarf nach Belieben zu erweitern und auf andere Systeme zu portieren.

Mögliche Erweiterungen bauen Sie ein, indem Sie zum Beispiel dem Import-Befehl ein paar Optionen mit auf den Weg geben. So erstellen Sie mit import -snaps 3 gleich ganze Sequenzen von Screenshots, wobei das Tool die Namen für die Bilddateien automatisch generiert. Die Manpage von Import gibt weitere Auskunft über die vielen verschiedenen Optionen. 

Infos

[1] Import: http://www.imagemagick.org/script/import.php

[2] ImageMagick: Thomas Drilling, "Zauberkasten", LU 08/2012, S. 68, http://www.linux-community.de/26395

[3] Ocrad: http://www.gnu.org/software/ocrad/

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

  • Alltagsaufgaben mit Skripten beschleunigen
    Ein Themenschwerpunkt Beschleunigung darf die Shell nicht auslassen, denn der Grundtenor unserer Guru-Training-Rubrik ist doch, dass Sie auf der Shell schneller als mit GUI-Tools arbeiten. Wir geben ein paar nützliche Beispiele.
  • Bash-Skripte sind Programme
    Wer regelmäßig mit der Shell arbeitet, wird leicht zum Programmierer: Schreiben Sie mehrere Shell-Befehle in eine Textdatei und machen diese ausführbar, haben Sie schon Ihr erstes Shell-Skript entwickelt. Die Shell bietet als Programmiersprache aber noch viel mehr.
  • Bash-Skripte leserlich programmieren
    Das geniale Skript aus dem letzten Monat enthält nur konfusen Spaghetti-Code, der nicht mehr verrät, was er tut? Mit unseren Tipps aus erprobten Styleguides sorgen Sie für Ordnung und Lesbarkeit.
  • Bildverarbeitung mit den Skriptsprachen Perl und Python
    Mit nur wenigen Zahlen Code korrigieren Sie das Format digitaler Bilder, passen die Metadaten an oder beschriften die Fotos für den Upload in ein Online-Album.
  • Scripted Reality
    Aus den Shell-Tipps und dem Guru-Training kennen Sie viele nützliche Kommandozeilentools. Die können Sie in kleinen Shell-Skripten zu leistungsfähigen Miniprogrammen bündeln. Im einfachsten Fall lassen Sie damit mehrere Befehle automatisch nacheinander ablaufen, doch Skripte haben noch mehr zu bieten.
Kommentare

Infos zur Publikation

LU 04/2017: SPEZIAL-DISTRIBUTIONEN

Digitale Ausgabe: Preis € 5,95
(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

WLAN lässt sich nicht einrichten
Werner Hahn, 21.03.2017 14:16, 0 Antworten
Dell Latitude E6510, Ubuntu 16.4, Kabelbox von Telecolumbus. Nach Anklicken des Doppelpfeiles (o...
"Mit Gwenview importieren" funktioniert seit openSuse 42.2 nicht mehr
Wimpy *, 20.03.2017 13:34, 2 Antworten
Bisher konnte ich von Digitalkamera oder SD-Karte oder USB-Stick Fotos mit Gwenview importieren....
Ich habe eine awk Aufgabe und bekomme es nicht so Recht hin
Dennis Hamacher, 10.03.2017 18:27, 1 Antworten
Ich hoffe Ihr könnt mir dabei helfen oder mir zeigen wie der Befehl richtig geschrieben wird. Ich...
Unter Linux Open Suse Leap 42.1 einen Windows Boot/ ISO USB Stick erstellen...
Tim Koetsier, 07.03.2017 15:26, 1 Antworten
Hallo, weiß jemand wie ich oben genanntes Vorhaben in die Tat umsetzen kann ? Wäre echt dankba...
Druckertreiber installieren OpenSuse42.1
Tim Koetsier, 07.03.2017 15:22, 1 Antworten
hallo, kann mir BITTE jemand helfen ich verzweifel so langsam. Habe einen Super Toner von Canon...