Изменение обоев с помощью команды терминала на macOS

Изменение обоев с помощью команды терминала на macOS

Изменить обои можно через командную строку с помощью команды

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'

где, конечно, <absolute_path_to_file>это просто заполнитель для полного пути изображения, которое будет использоваться в качестве фона.

Я пытаюсь использовать эту команду для написания функции zsh, но у меня возникли некоторые проблемы с тем, как экранировать имя переменной (например, $1), чтобы получить правильную подстановку. Например, использование функции

change_wallpaper () { osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$1"' }

а потом

$ change_wallpaper /Users/noibe/Wallpapers/wallpaper.jpg

не работает, и я получаю ошибку:

33:48: execution error: Finder got an error: AppleEvent handler failed. (-10000)

вероятно, потому что $1не заменяется путем, а передается как буквальная строка. Как мне заставить это работать?

решение1

Расширение параметров не может осуществляться внутри одинарных кавычек.

Пытаться:

change_wallpaper() {
    osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$1"\"
}

решение2

Мне удалось заставить это работать, экранировав двойные кавычки и заменив одинарные кавычки на двойные:

change_wallpaper() {
    osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$1\""
}

Связанный контент