다음 명령을 사용하여 명령줄을 통해 배경화면을 변경할 수 있습니다.
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\""
}