在 macOS 上使用终端命令更改壁纸

在 macOS 上使用终端命令更改壁纸

可以使用以下命令通过命令行更改壁纸

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\""
}

相关内容