可以使用以下命令透過命令列更改壁紙
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\""
}