可以使用以下命令通过命令行更改壁纸
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'
其中 course<absolute_path_to_file>
只是用作背景的图像的完整路径的占位符。
我正在尝试使用此命令来编写 zsh 函数,但在弄清楚如何转义变量名称(例如 ex $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\""
}