AppleScript 명령을 수락하도록 Preview.app 얻기
기본적으로 AppleScripting Preview는 미리보기에 필요한 사전이 없기 때문에 작동하지 않습니다. 이 문제를 해결하려면 Lauri 's answer here를 확인 하십시오NSAppleScriptEnabled
. Preview.app 설정에 대한 설명 입니다.
Preview.app를 종료 한 다음 터미널을 열고 다음을 입력하십시오.
sudo defaults write /Applications/Preview.app/Contents/Info NSAppleScriptEnabled -bool true
sudo chmod 644 /Applications/Preview.app/Contents/Info.plist
sudo codesign -f -s - /Applications/Preview.app
응용 프로그램에서 창 닫기
1) 창 인덱스 또는 창 이름
명명 된 응용 프로그램의 창을 닫는 명령은 다음과 같습니다.
tell application "Preview" to close window 1
… 또는 명명 된 문서 창을 닫으려면 다음과 같이하십시오 foo.jpg
.
응용 프로그램 "미리보기"에게 닫으라고 지시하십시오 (이름이 " foo.jpg " 인 모든 창 )
따라서 쉘 스크립트에서 다음과 같습니다.
#!/bin/sh
osascript <<EOF
tell application "Preview"
close (every window whose name is "$1")
end tell
EOF
여기서 스크립트에 전달 된 첫 번째 인수는 닫으려는 창의 이름입니다 (예 :) ./quit.sh foo.jpg
. 파일에 공백이 있으면 파일 이름을 인용해야합니다 (예 :) ./quit.sh "foo bar.jpg"
.
또는 응용 프로그램에서 임의의 창을 닫으려면 다음을 사용하십시오.
#!/bin/sh
osascript <<EOF
tell application "$1"
close (every window whose name is "$2")
end tell
EOF
여기서는 ./quit.sh Preview foo.jpg
예를 들어 사용 합니다.
2) 파일명
특정 문서에 속하지만 파일 이름을 제공하는 창을 닫으려면 다른 것이 필요합니다. 여러 페이지로 된 PDF가로 표시 될 수 foo.pdf (Page 1 of 42)
있지만 foo.pdf
AppleScript 로 전달 하기를 원하기 때문 입니다.
여기서 우리는 창을 반복하고 파일 이름을 스크립트에 전달 된 인수와 비교합니다.
osascript <<EOF
tell application "Preview"
set windowCount to number of windows
repeat with x from 1 to windowCount
set docName to (name of document of window x)
if (docName is equal to "$1") then
close window x
end if
end repeat
end tell
EOF
이제 간단히 전화 할 수 있습니다 ./quit.sh foo.pdf
. 명명 된 문서 창이있는 모든 앱에 대해 일반적인 방식으로 다음과 같습니다.
osascript <<EOF
tell application "$1"
set windowCount to number of windows
repeat with x from 1 to windowCount
set docName to (name of document of window x)
if (docName is equal to "$2") then
close window x
end if
end repeat
end tell
EOF
주의 사항 : 자동 폐쇄 Preview.app
Preview.app는 마지막 문서 창이 닫히면 자동으로 종료되는 응용 프로그램 중 하나입니다. 메모리를 절약하고 "정리"하기 위해 그렇게합니다. 이 동작을 비활성화하려면 다음을 실행하십시오.
defaults write -g NSDisableAutomaticTermination -bool TRUE
물론이를 취소하려면 TRUE
로 변경 하십시오 FALSE
.
스크립트 대신 함수 사용
마지막으로 쉘에서 항상 사용할 수있는 함수에 스크립트를 넣는 것이 좋습니다. 이렇게하려면에 스크립트를 추가하십시오 ~/.bash_profile
. 이 파일이 없으면 작성하십시오.
cw() {
osascript <<EOF
tell application "$1"
set windowCount to number of windows
repeat with x from 1 to windowCount
set docName to (name of document of window x)
if (docName is equal to "$2") then
close window x
end if
end repeat
end tell
EOF
}
bash 프로필을 저장하고 셸을 다시 시작하면 cw Preview foo.pdf
어디서나 전화 할 수 있습니다.