Es ist möglich, das Hintergrundbild über die Befehlszeile mit dem Befehl zu ändern
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'
wobei „natürlich“ <absolute_path_to_file>
nur ein Platzhalter für den vollständigen Pfad des Bildes ist, das als Hintergrund verwendet werden soll.
Ich versuche, mit diesem Befehl eine ZSH-Funktion zu schreiben, habe aber Probleme herauszufinden, wie ich den Variablennamen (z. B. $1
) maskieren kann, um eine korrekte Substitution zu erhalten. Beispielsweise kann ich die Funktion
change_wallpaper () { osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$1"' }
und dann
$ change_wallpaper /Users/noibe/Wallpapers/wallpaper.jpg
funktioniert nicht und ich erhalte die Fehlermeldung:
33:48: execution error: Finder got an error: AppleEvent handler failed. (-10000)
wahrscheinlich, weil $1
es nicht durch den Pfad ersetzt wird, sondern als wörtlicher String übergeben wird. Wie kann ich das zum Laufen bringen?
Antwort1
Eine Parametererweiterung ist innerhalb einfacher Anführungszeichen nicht möglich.
Versuchen:
change_wallpaper() {
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$1"\"
}
Antwort2
Ich habe es geschafft, es zum Laufen zu bringen, indem ich die doppelten Anführungszeichen maskierte und die einfachen Anführungszeichen durch doppelte Anführungszeichen ersetzte:
change_wallpaper() {
osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$1\""
}