Automator, AppleScript를 이용한 Go2Shell 기능 만들기

   Unix, Linux 등의 Console OS를 사용하다보면 자주 사용하게 되는 것이 Shell Script이다.   OSX에서 Bash Shell Script를 조금 알만~ 하니까 zsh로 변경되서 왠지 처음부터 다시 배우는 느낌이 되어 버렸다.   그래도 Version Update가 되어도 크게 변경이 없는 AppleScript는 괜찮겠지... 했는데 크게 변한 것은 없어도 기존에 되던 Script가 일부 안되는 경우가 있어서 메모를 위해 포스팅 한다.
   일단 OSX 자체가 Unix 기반의 OS이기 때문에 Unix에서 사용되는 Shell은 기본적으로 적용된다.
   실제 사용자가 흔하게 접하게 되는 GUI 화면은 내부적으로는 Script에 의해서 이루어지는 동작이라고 말할 수 있다.   OSX에서 사용되는 입력, 처리, 출력 일련의 과정은 모두 Console 화면 즉, Terminal에서 AppleScript를 이용하여 모두 처리할 수 있다고해도 과언이 아니다.   그러면 Automator는 뭐냐~ 말 그대로 자동화기기 같은 기능을 하는 어플(?)이라고 할 수 있다.   더 확~!!! 와 닿게 이야기 한다면 매크로라고 하면 더 이해하기 쉬울 것이다.   반복되는 일련의 동작을 일정 프로세스에 준해서 할 수 있도록 도와주는 것이다.   그런데 이넘의 Automator도 그렇고 AppleScript도 그렇고 누구하나 잘 가르쳐 주는 곳이 없다. 그냥 제조사에서 제공하는 문서로 배우라는 큰 가르침인가보다.
   어쨌든... 일반적으로 AppleScript를 사용하여 어떠한 일련의 작업을 한다고 하면 가장 먼저 쉽게 떠오르는 것이 File 또는 Folder의 조작(?)이다.   Finder에게서 Folder, FileName, Path 등의 정보를 전달 받아서 사용자가 원하는 형태로 작업을 하는 예가 가장 적절할 것이라고 생각되서 그 첫번째로 Go2Shell 기능을 구현해 보려고 한다.
   Go2Shell이 뭐냐고 물으신다면.... 찾아봐~!! 라고 하고 싶지만... 워낙 간단하니 직접 설명하는 걸로~!!
   Finder에서 현재 위치한 Directory 즉, Path의 위치로 Terminal을 열어서 경로 이동을 해주는 App이라고 생각하면 된다.   그 작업의 순서를 서술해 보자.

   현재 Finder는 OSX 소유자의 기본 Directory 안에 있는 Downloads 폴더를 보고 있다고 가정하자.

   이 Directory(폴더)의 실제 경로는 사용자 계정명이 limmingue라고 했을 때 /Users/limmingue/Downloads  이곳이다.    iTerm 또는 Terminal 을 열어서 위의 경로로 가기 위해서는 "cd /Users/limmingue/Downloads"라고 입력해야 이동할 수 있다.   간단한 경로야 직접 타이핑하는게 어렵지 않겠지만... Depth 가 많거나 이름이 길면 그때부터는 귀차니즘이 찾아오기 마련이다.   이련 경우에 Terminal 어플의 실행부터 경로이동까지의 과정을 One~ Click~!! 으로 처기하는 App을 만들어보면서 Automator의 접근을 시작해보고자 한다.
   먼저 Automator를 실행하면 아래와 같은 화면이 나온다.

어플 형태로 만들 것이기 때문에 위의 Capture에서 보는 것과 같이 "응용 프로그램"을 선택한다.

그러면 위와 같은 화면이 나온다.   AppleScript를 이용한 Shell을 만들 것이기 때문에 해당 기능을 선택하면 된다.

검색에서 Apple 이라고 검색하면 두가지가 나온다. 그 중 "AppleScipt 실행" 기능을 이용해서 Script를 작성할 것이다.

"AppleScript 실행"을 끌어다가 작업흐름쪽에 갖다 놓거나 DoubleClick 하면 된다.

   그러면 위와같이 친절하게도 기본적인 Script가 작성된 화면을 만들어준다.
   화면에서 보는 것과 같이 (* Your script goes here *) 이 부분에 원하는 Script를 작성하면 되는 것이다.

이렇게 작성을 해준다.   처음 생성되었던 기초 Scipt에서 달라진 것은 첫줄에서 parameters 가 빠진건데 그것은 Finder로부터 parameter를 받아서 작동하는 동작이 없기 때문에 삭제한 것이다.
한줄씩 알아보자.

on run {input}
   tell application "Finder"  --> Finder에게 말하는 거다.
      activate  --> 살아나라~!!!
      set pwdAlias to get POSIX path of (insertion location as alias--> Finder야 니가 있는 위치의 path값을 pwdAlias라는 변수에 넣어
   end tell  --> Finder에게 할 일은 다 시켰다.
   tellapplication "Terminal"--> Terminal 에게 명하노니~!!!
         activate  --> 살아나라~!!!
         do script "cd " & quoted form of pwdAlias  --> Script를 실행해라 cd 문자열 다음에 작은 따옴표로 묶은 pwdAlias 변수의 값을 실행해라
      end tell--> Terminal 에게 할 일은 다 시켰다.
   end run --> Automator 너도 이제 끝내~!!

   이게 다다~!   Play~!! 버튼을 누르면 Terminal이 실행되면서 현재 위치로 이동하는 것을 볼 수 있다.

지금은 저장된 상태가 아니기 때문에 Default로 Desktop으로 이동된 것이다.
[파일] - [저장] 해주면 일단 App이 생성된다.
저장된 앱을 실행해보면 Terminal이 실행되면서 해당 Path로 이동하는 것을 볼 수 있다.

이제 Finder의 메뉴에 바로가기(?)를 넣어서 어디서든 사용할 수 있게 해주면 된다.

   아이콘 변경은 다른 검색해보면 많은 포스팅이 있으니 여기서는 생략한다.   아주 간단한 Go2Shell 기능을 Automator 와 AppleScript를 사용해서 만들어 보았다.   다음에는 살을 조금 더 붙여서 Terminal 보다 더 많이 사용하는 iTerm2를 실행하고 해당 경로로 이동하는 Script 작성 방법에 대해서 포스팅하려고 한다.   Apple에서 자체 제공하는 어플이 아닌경우 예외사항이 다소 발생할 수 있기 때문에 on error 같은 예외사항 Script 및 어플로의 Message 전달 방법이 Terminal에 전달되는 Script와는 약간 다르다. 추가적으로 만약 iTerm이 실행중일 경우 새로운 창이 아닌 새로운 탭에 해당 경로를 Open 하는 Script로 작성해볼 예정이다.
   여담으로 Finder에서 현재 위치한 경로를 Terminal로 Open하는 방식은 위의 방법으로 진행하면 된다면 반대의 경우가 필요할 때도 있다.   Console에서 현재의 경로를 Finder에서 열고 싶은 경우는 "open ./" 이렇게 하면 된다. ^^