Ich habe ein kleines Bash-Skript erstellt, um meine beiden Monitore automatisch mit Imagemagick zu teilen, wenn ich einen Screenshot mache.
#! /bin/bash
convert "$1" -crop 1024x600+0+0 +repage "${1//.png/}-left.png"
convert "$1" -crop 1280x1024+1024+0 +repage "${1//.png/}-right.png"
Das funktioniert prima, wird aber nur dann richtig umbenannt, wenn es sich um eine PNG-Datei handelt (was in diesem Fall kein Problem ist). Gibt es eine Möglichkeit, die Dateierweiterung ans Ende zu verschieben? Wenn ich also dieses Skript (nennen wir es „Splitimage“) für eine Datei aufrufen würde, oldscreenshot.jpg
würde es mir oldscreenshot-left.jpg
und geben oldscreenshot-right.jpg
?
Antwort1
Ja, mit den Erweiterungen ${param##word}
und ${param%word}
. Die erste entfernt die Erweiterung, die letzte allesAberdie Erweiterung
#! /bin/bash
convert "$1" -crop 1024x600+0+0 +repage "${1%.*}-left.${1##*.}"
convert "$1" -crop 1280x1024+1024+0 +repage "${1%.*}-right.${1##*.}"
Beispiel
$ var=foo.jpg; echo "No extention: ${var%.*} | Extention only: ${var##*.}"
No extention: foo | Extention only: jpg
Antwort2
Ja. Aber verwenden Sie Stripping in IhremParametererweiterung(nichtZahnspangenerweiterung, das ist etwas völlig anderes) statt Zahnspangenersatz.
convert "$1" -crop 1024x600+0+0 +repage "${1%.*}-left.${1##*.}"