OSX에서 사용할 수있는 AppleScript를 사용한 명령 모음

소개


~/.bashrc 이나 ~/.zshrc 에 추가하여 사용해 주십시오.
우리 Yosemite에서 동작을 확인하고 있습니다. (El Capitan으로 빨리 올리고 싶다 ...)

좋은 재료가 있으면 나중에 추가할 예정입니다. 코멘트란에서도 꼭 소개해 주세요.

기술



인수 참조



가장 전통적인 방법입니다.
on run argv
    log item N of argv
end run

osascript -e '
    on run argv
        log "Hello, " & item 1 of argv & "."
    end run
' "$variable"

환경 변수 참조



이하의 신택스로 이용할 수 있을 것입니다만, 수중에서는 전혀 동작 확인 할 수 없었기 때문에 이것은 배웅합니다.
system attribute "ATTRIBUTE_NAME"

포함할 문자열 이스케이프



인수로서 전달할 수 없는 사정이 있는 경우는 이쪽을 채용합니다.

더블 쿼터 리터럴 만들기: "string"



AppleScript에서는 문자열 리터럴에 더블 쿼트만 사용할 수 있습니다.
변수의 치환 기능에서는 한계가 있으므로 Perl을 이용합니다.
또 bash와 zsh로 echo 의 거동이 다르므로 -E 로 bash에 맞춥니다.
variable='"'$(echo -E "$variable" | perl -pe 's/(?=[\\"])/\\/g')'"'



(참고) PHP처럼 달러 기호를 해석하는 언어 용 이스케이프
variable='"'$(echo -E "$variable" | perl -pe 's/(?=[\\"\$])/\\/g')'"'

단일 쿼터 리터럴 만들기 : 'string'



이번에는 사용할 수 없습니다만, 참고까지 이쪽도 게재해 둡니다.
variable="'"$(echo -E "$variable" | perl -pe "s/'/'\"'\"'/g")"'"

전체 패스 얻기



AppleScript는 파일 이름을 지정할 때 상대 경로를 받아들이지 않습니다.
OSX에는 realpath가 없기 때문에 Perl을 이용하게 됩니다.
# 単一引数
perl -MCwd -e 'print Cwd::abs_path(shift)' "$variable"
# 複数引数
perl -MCwd -e 'print Cwd::abs_path($_) for @ARGV' "$variable"

사용 예
example@localhost:/bin$ variable='bash'
example@localhost:/bin$ perl -MCwd -e 'print Cwd::abs_path(shift)' "$variable"
/bin/bash

명령



터미널 프로필 변경


termprf() {
    osascript -e '
        on run argv
            if exists (window 1 of application "Terminal") then
                tell application "Terminal"
                    set current settings of window 1 to settings set (item 1 of argv)
                end tell
            end if
        end run
    ' "$1"
}

사용 예
example@localhost:~$ termprf homebrew

배경화면 변경


chwall() {
    osascript -e '
        on run argv
            tell application "Finder" to set desktop picture to POSIX file (item 1 of argv)
        end run
    ' "$(perl -MCwd -e 'print Cwd::abs_path(shift)' "$1")"
}

사용 예
example@localhost:~/Pictures/淫夢$ chwall ご満悦先輩.png

좋은 웹페이지 즐겨찾기