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

관련 정보