AppleScript 대 Bash 스크립트?


13

저는 오랫동안 Windows "고급 사용자"이며 최근 Mac OS X로 이전하기로 결정한 개발자입니다.

OS X Lion 및 실제로 이전 버전에는 OS X의 스크립팅 및 자동화를위한 두 가지 주요 옵션 인 AppleScript 및 Bash 스크립트가 있습니다. 후자는 물론 유닉스 "bash"쉘을 사용하는 OS X의 직접적인 결과이며, 전자는 Apple 자신의 혁신이다. AppleScript는 의사 자연 언어 스타일을 사용하므로 구문이 매우 다릅니다.

내 질문은, AppleScript와 Bash 스크립트가 OS X에서 서로 다른 작업과 목적으로 일반적으로 사용되는 것입니다 (실제로 사용해야합니다). 물론 Bash 스크립트로 수행 할 수있는 방대한 작업을 모호하게 인식하고 있습니다. 물론 코드 더 진보 된 것들이 빨리 복잡해 질 수 있기 때문입니다. Apple의 이후 AppleScript 발명에도 불구하고이 두 언어가 겹치거나 거의 동일한 사용 사례를 가지고 있습니까? 아니면 다른 시나리오를 염두에두고 사용됩니까? 특정 예뿐만 아니라 높은 수준의 개요가 인정 될 것입니다.


파일 및 폴더와 관련된 작업이 "Hazel"을 구매하는 경우 매우 유용한 규칙 기반 도구입니다. 또한 규칙에 따라 쉘 스크립트와 Applescript를 시작할 수 있습니다.
스튜어트 우드워드

답변:


17

쉘과 애플 스크립트는 어느 곳에서나 사용할 수 있습니다.

AppleScript는 앱 및 사용자 수준 시스템 기능과 대화 할 때 더 잘 작동합니다. (예를 들어 말할 수 tell app "iTunes" to play있고, 또는 할 수 있습니다 tell app "Finder" to open the first file of the second window.)

쉘 스크립트 (bash라고 함)는 저수준 시스템 객체 및 Unixy와 대화 할 때 더 잘 작동합니다.

둘 다 상호 운용이 가능합니다. AppleScript에서 쉘 명령을 호출하고 쉘에서 do shell script "command here"AppleScript 코드를 호출 할 수 있습니다 osascript -e "AppleScript". 또한 두 파일 간에는 특히 겹치는 부분이 있습니다 (특히 파일 시스템 작업과 관련하여).

온라인으로 AppleScript보다 쉘 스크립팅을 배우는 데 더 많은 리소스가 있으며 AppleScript가 "읽기 전용"언어라는 평판을 얻는 데 도움이되지 않습니다 (즉, 읽기보다 쓰기가 어렵습니다).

어쨌든 스크립팅을 수행하는 가장 현대적인 방법은 Automator를 사용하는 것입니다. 여기서 Automator를 사용하면 설치 한 다양한 앱에서 사전 빌드 된 모듈과 함께 쉘 또는 AppleScripting (또는 둘 다)을 사용할 수 있습니다.


감사; 그것은 매우 유익한 개요입니다. AppleScript 성능에 관한 훌륭한 학습 자료에 대한 권장 사항이 있습니까? (나도 쉽게 쉽게 찾을 수 있지만, 대쉬 스크립트도 있습니다.)
Noldorin

3
AppleScript는 읽기 전용이라는 명성을 얻었습니다. 쉘 스크립트는 때때로 스펙트럼의 "쓰기 전용"쪽으로 기울어집니다.
다니엘

@Noldorin AppleScript를 배우기 위해 책을 구입했지만 특정 명령의 구문을 기억하려고 할 때 Google을 먼저 사용하고 책의 색인을 두 번째로 사용하는 경향이 있습니다.
Cajunluke

@ CajunLuke : 아, 충분합니다. 그래도 처음으로 AppleScript를 어떻게 배웠습니까?
Noldorin

@Noldorin 많은 시행 착오와 구글. Google에는 어려운 일이 있기 때문에 제가 책을 구입 한 이유입니다.
Cajunluke

8

쉘 스크립트가 AppleScript를 호출하기 위해 호출 할 수 있고 AppleScript에 명령 이 있기 때문에 스크립트 컨텍스트 중 하나 가 다른 스크립트 컨텍스트 수행 할 수 있지만 실제로는 하나가 다른 것보다 더 적합한 컨텍스트가 있습니다./usr/bin/osascriptdo shell script

두 스크립팅 언어는 "접착제"언어이므로 최소한의 작업 만 수행 할 수 있으며 다른 프로그램의 기능을 호출하여 대부분의 작업을 수행 할 수 있습니다. 쉘 스크립트는 Unix 파이프를 사용하지만 AppleScript는 tell application구문을 사용합니다.

애플 스크립트는 스크립트 가능한 응용 프로그램 (거의 항상 GUI 응용 프로그램)과 직접 통신하는 반면, 셸 스크립트는 주로 명령 줄 프로그램 (일부는 그래픽 사용자 인터페이스를 호출 할 수 있지만 대부분은 그렇지 않음)과 통신합니다.

파일 관리 작업과 관련해서는 두 가지 접근 방식이 모두 효과적입니다. Tell Application Finder파일을 복사하거나 cp셸 스크립트에서 명령을 실행할 수 있습니다 . 그렇다면 왜 다른 것을 사용합니까? 확실히 어떤 스크립트 작성자는 다른 언어보다 한 언어에 더 익숙하기 때문에 해당 도구를 사용하는 것을 선호 할 것입니다. 그러나 더 나은 고려 사항은 스크립트 사용자입니다. AppleScript는 종종 Mac GUI에서 호출 할 수 있습니다. AppleScript 응용 프로그램을 이중 클릭하거나 파일을 파일에 놓거나 시스템 전체 또는 특정 프로그램 내에서 AppleScript 메뉴를 사용합니다. Mail과 같은 프로그램은 수신 메시지에서 AppleScript를 실행하여 필터링하도록 설정할 수 있습니다. "Mac과 같은"방식 (예 : GUI)으로 Mac을 사용하는 데 익숙한 사용자의 경우 AppleScript에 더 쉽게 액세스 할 수 있습니다.

쉘 스크립트는 종종 터미널에 존재하지만 항상 그런 것은 아닙니다. 이미 터미널을 사용하고 있다면 쉘 스크립트를 실행하면 AppleScript를 호출하는 것보다 편리 할 수 ​​있습니다. 반면에 많은 사용자는 터미널 창에 명령을 입력하거나 터미널 창을 여는 스크립트 파일을 클릭하여 마법을 수행해야합니다. 필자는 개인적으로 AppleScripts보다 셸 스크립트 구문이 더 읽기 쉽다는 것을 알지만 그 중 소수에 불과하다고 생각합니다. 쉘 스크립트 많은 다른 유닉스 계열 시스템 사용자에게 친숙합니다.

어쨌든, 둘 다 Mac을보다 잘 제어 할 수있는 강력한 도구입니다.


감사합니다; 이것은 분명히 그 문제를 분명히하고 나의 의심의 일부를 확인합니다.
Noldorin 2016 년

나는 같은데요 Tell Application Finder동안, 눈에 보이는 진행률 표시 줄이있는 창이 열립니다 파일을 복사 cp하지 않습니다. 맞습니까?
TRiG

4

다른 답변은이 두 가지 스크립팅 기술의 의도에 대한 개괄적 인 개요를 제공합니다. 어쩌면 나는 그것들을 어떻게 사용하는지에 대한 예제를 줄 것입니다.

Applescript를 사용하여 Mail에 대한 처리 규칙을 만들고 통계 처리를 위해 BBEdit을 R에 연결하고 복잡한 폴더 동작을 생성했으며 iPhoto 및 Aperture에서 사진의 시간 기반 재구성을 수행했습니다. 버튼과 텍스트 디스플레이가있는 미니 앱도 만들었습니다. 기본적으로 이것은 GUI를 사용하여 복잡한 앱을 자동으로 조작하는 것입니다.

Bash 스크립팅을 사용하여 Imagemagick을 사용한 자동 이미지 처리 루틴, Ghostscript를 사용한 PDF 처리 루틴, 시간 및 날짜 루틴 및 Bash, sed / awk 및 Perl을 사용한 많은 텍스트 처리를 만들었습니다. 유닉스 유틸리티는 간결하고 빠르며 유연한 경향이 있으며 Bash는 유틸리티를 매우 강력하고 쉬운 도구로 결합 할 수있는 좋은 방법입니다.

때로는 Applescript 내에서 주로 텍스트 처리 목적 (GREP) 또는 간단한 웹 사이트 가져 오기 (curl)를 위해 Bash 스크립트를 호출합니다. 필자는 거의 항상이 기술을 사용하여 Applescript에서 추가로 사용할 약간의 데이터 또는 변수를 얻습니다.


아,이 구체적인 예는 다소 도움이됩니다. 고마워 그런데 AppleScript에 대한 제안 된 학습 자료가 있습니까? 완전한 초보자. (나는 과거에 작은 Bash 스크립트를 사용했으며 아마 그것을 스스로 배울 수 있습니다.)
Noldorin

2
그렇습니다. 가장 큰 혜택을 얻은 책은 Matt Neuberg의 "AppleScript : The Definitive Guide"였습니다. 애플의 개발자 문서는 괜찮고 참고할만한 가치가 있지만 Neuberg의 책은 언어의 강점과 약점을 모두 정직하게 평가합니다. "자연"문법에 대한 Applescript의 주장은 그다지 자연스럽지 않으며 많은 경우에 반 직관적 일 것입니다. Neuberg는 언제 그리고 왜 발생했는지를 명확하게 설명합니다.
Ash

그것은 처음에 언어를 보면서 얻은 인상입니다. 기계와 자연 언어 사이의이 중간 집은 다소 어색해 보입니다. 추천 응원!
Noldorin

3

지나치게 단순화되었을 수도 있지만 쉘 스크립팅은 기존 프로그램을 결합하여 새로운 작업을 수행하는 반면 AppleScript는 (대부분 GUI) 응용 프로그램을 원격으로 제어하는 ​​것입니다. Classical Unix 프로그램은 일반적으로 일부 입력을 읽고 일부 출력 및 셸 스크립팅을 통해이를 결합 할 수 있습니다. AppleScript는 GUI 응용 프로그램을 자동화하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.