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

相關內容