OS X Dock에서 셸 스크립트를 실행 하시겠습니까?


160

Mac OSX 도크에서 실행할 쉘 스크립트를 어떻게 설정합니까? 바로 가기를 만들면 편집기에서 파일이 열립니다. 편집을 위해 열지 않고 실행하도록 알리는 플래그가 있습니까?


2
나도 주제를 좋아하지만 아바타에 대해서만 +1해야합니다.
Matt Bannert

두 번째 @Wilco에 대한 스위치 허용 답변을 고려할 수 있습니다. 더 나은 대답이라고 생각합니다.
회색

답변:


190

"쉘 스크립트 실행"단일 단계로 Automator 워크 플로우를 작성할 수 있습니다.

그런 다음 File > Save As파일 형식을 "응용 프로그램"으로 변경하십시오. 응용 프로그램을 열면 셸 스크립트 단계가 실행되고 명령이 실행 된 후 종료됩니다.

이것의 장점은 실제로 매우 간단 하다는 것입니다. 사용자 입력 (예 : 많은 파일 선택)을 매우 쉽게 가져온 다음 쉘 스크립트의 입력 (stdin 또는 인수)에 전달할 수 있습니다.

(자동화는 /Applications폴더에 있습니다!)

워크 플로우 예


6
@dbr, GUI 버튼 푸셔! :) 농담입니다. 좋은 제안입니다!
willasaywhat

그래, 그것은 훌륭한 제안이었습니다 :) 심지어 내 앱 중 일부에 대해 Automator 작업을 작성했지만 여전히 다음과 같은 시간에 잊어 버립니다.
Jason Coco

나는 이것을 nohup, la "nohup / usr / bin / myscript &; disown -a && exit 0"과 함께 사용할 수 없습니다. 스크립트를 실행하고 즉시 종료하려면 앱 / 워크 플로가 필요합니다. 어떤 아이디어? :-)
되돌림

3
@martineau 응용 프로그램을 열어서 열면 open -a SomeAppThing.app --args --etc=2초점을 맞춰야합니다. 또는 당신은 AppleScript를 (예를 들어, 사용하여 초점을 맞출 수 있습니다 osascript -e 'tell application "Google Chrome" to activate')
DBR

1
참고 : 스크립트가 잠시 동안 열려있는 GUI 앱을 실행하는 경우 앱이 닫힐 때까지 작업 표시 줄에 계속 회전하는 기어 아이콘이 표시됩니다. 해결 방법 중 하나는 Automator가 기다리지 않도록 스크립트의 실행 라인에 && / dev / null &`을 추가하는 것입니다.
ewall

50

터미널 윈도우가 필요하지 않은 경우, 쉘 스크립트를 생성 Example하고 filename으로 이동 하여 실행 파일을 응용 프로그램으로 만들 수 Example.app/Contents/MacOS/Example있습니다. 이 새로운 응용 프로그램을 다른 응용 프로그램과 마찬가지로 독에 넣고 클릭 한 번으로 실행할 수 있습니다.

참고 : 앱 이름은 스크립트 이름과 정확히 일치해야합니다. 따라서 최상위 디렉토리가 되어야 Example.app하고 Contents/MacOS서브 디렉토리 Example의 스크립트 이름이 지정 되어야하며 스크립트는 실행 가능해야합니다.

터미널 창을 표시 해야하는 경우 간단한 해결책이 없습니다. Applescript로 무언가를 할 수는 있지만 그다지 깨끗하지는 않습니다.


1
파일을 쉘 스크립트에 인수로 전달하는 쉬운 방법이 있는지 알지 못합니까? "...으로 열기"를 사용하여 연 파일의 경우.
Fuzzy76 2016 년

9
이 작업을 수행하려는 사람은 앱 이름과 스크립트 이름이 정확히 일치해야합니다. 그래서 정말이어야한다 example.sh.app뿐만 아니라 example.app. 일치하지 않으면 손상된 앱에 대한 경고가 표시됩니다.
Kip

1
명확히하기 위해-나는 OSX 멍청한 놈입니다. 예제에 표시된 것과 같은 폴더 구조를 스크립트 파일로 표시된 폴더 구조를 만드는 것입니까?
martineau

2
@martineau 네, 맞습니다. 이름이 .app구조로 끝나는 폴더를 만들면 실행 가능한 응용 프로그램으로 취급됩니다. Finder에서 해당 폴더의 내용을 보려면 마우스 오른쪽 버튼으로 클릭하고 "패키지 내용보기"를 선택해야합니다 (두 번 클릭하면 응용 프로그램이 실행되므로). 터미널에서는 폴더로 나타납니다. (Finder에서 폴더 이름을 .app로 바꿀 수 있는지 잘 모르겠습니다. 터미널에서 이름을 바꿔야 할 수도 있습니다.)
Jeremy Banks

1
방금 이것을 시도했는데 El Capitan (10.11)에서 "powerpc 응용 프로그램이 더 이상 지원되지 않기 때문에 열 수 없습니다 ..."라는 오류가 발생했습니다. : D 정말 흥미 롭습니다!
AllenH

26

OSX 매버릭에서 :

  1. 쉘 스크립트를 작성하십시오.
  2. 쉘 스크립트를 실행 가능하게 만드십시오.

    chmod +x your-shell-script.sh
  3. .app접미사 를 갖도록 스크립트 이름을 바꾸십시오 .

    mv your-shell-script.sh your-shell-script.app
  4. 스크립트를 OSX 도크로 드래그하십시오.
  5. 스크립트 이름을 .sh접미사로 다시 바꾸십시오 .

    mv your-shell-script.app your-shell-script.sh
  6. Finder에서 파일을 마우스 오른쪽 버튼으로 클릭하고 "정보 입수"옵션을 클릭하십시오.
  7. 창의 맨 아래에서 쉘 스크립트가 터미널에서 열리도록 설정하십시오.

이제 독에서 스크립트를 클릭하면 터미널 창이 나타나고 스크립트가 실행됩니다.

보너스 : 스크립트가 완료되었을 때 터미널을 닫으 exit 0려면 끝에 추가 하고 터미널 설정을 변경 하여이 SO answer 에서 말하는 것처럼 "정말 종료되면 쉘을 닫습니다" .


좋아, 이것은 나를 위해 일했다, 내가 궁금해하는 아이콘을 우연히 발견 할 수있는 방법. 참고 : 또한 7 단계는 메뉴 항목이 아니라 파일을 참조하고 있습니다.
Mike Q

좋은 방법! 열린 터미널이있는 모든 .sh.
iHTCboy

@ stiemannkj1, 앱이 실행되는 동안 아이콘이 표시됩니까? 어쨌든 숨길 수 있습니까?
Pacerier

@Pacerier, 죄송합니다, 더 이상 OSX에 없습니다 (Linux로 전환 :)). Jeremy Bank의 답변 을 시도 할 수 있습니다 . 다른 아이디어가없고 OSX가 없기 때문에 아이콘을 표시하거나 숨기려고 시도하거나 엉망으로 만들 수 없습니다.
stiemannkj1

17

나는 이것이 오래되었지만 다른 사람들에게 도움이되는 경우를 알고 있습니다.

스크립트를 실행해야하고 터미널이 팝업되도록하려면 Abyss Knight가 말한 것처럼 결과를보고 확장자를 .command로 변경하십시오. 두 번 클릭하면 터미널 창이 열리고 실행됩니다.

그러나 자동화 또는 appleScript에서 실행하려면 이것이 필요했습니다. 따라서 이것을 새로운 터미널을 열려면 "쉘 스크립트 실행"에서 실행 한 명령은 "open myShellScript.command"이고 새 터미널에서 열립니다.


감사합니다! 이제는 스크립트가 완료되면 터미널 창을 닫는 방법이 완벽한 솔루션이되어야합니다.
Peter M

1
터미널 환경 설정에서 종료시 창이 닫히면 종료 명령을 스크립트에 추가하면 원하는 것을 얻을 수 있습니다.
Jason Tholstrup

7

스크립트가 실행 가능하고 확장자가없는 한, Dock의 오른쪽 (문서 쪽)으로 그대로 끌 수 있으며 편집기를 열지 않고 클릭하면 터미널 창에서 실행됩니다.

foo.sh와 같은 확장자를 원한다면 Finder의 파일 정보 창으로 이동하여 특정 스크립트의 기본 응용 프로그램을 (TextEdit, TextMate, 컴퓨터의 기본 설정에 관계없이) 변경할 수 있습니다 .sh 파일)을 터미널에 연결합니다. 그런 다음 텍스트 편집기에서 여는 대신 실행됩니다. 다시 Dock의 오른쪽으로 드래그해야합니다.


1
참고 : 이것은 OS X 10.10 Yosemite의 챔피언처럼 작동합니다. 10.9에 댓글을 달 수 없습니다
Bryan Ash

1
10.11에서 작동합니다. 감사합니다!
Yassine Imounachen

10.12에서도 작동합니다! 아마도 10.9에 대한 내 의견이 잘못되었을 수도 있지만, 구분 기호 아래의 독 부분으로 끌어 야한다는 것을 알았습니다. 불행히도 10.9를 다시 테스트 할 방법이 없습니다.
stiemannkj1

Dock에 추가 할 필요가 없습니다. 데스크탑에서 실행할 수 있습니다. 그러나 확장은 없습니다. 실행 가능하게 만들고 두 번 클릭하면됩니다. 이것은 내가 본 가장 간단한 옵션입니다.
Rich Apodaca

5

이 글이 도움이 될 것이라고 생각합니다 : http://forums.macosxhints.com/archive/index.php/t-70973.html

설명을 바꾸려면 .command 확장명으로 이름을 바꾸거나 AppleScript를 만들어 셸을 실행할 수 있습니다.


Snow Leopard에서 적어도 .command 확장자를 스크립트에 추가하면 두 번 클릭하면 터미널에서 실행되지만 어떤 이유로 든 여전히 Dock으로 드래그 할 수 없습니다. dbr과 Jeremy의 제안은 모두 나를 위해 일했습니다.
Jo Liss

5

joe가 언급했듯이 쉘 스크립트를 작성한 다음 쉘 스크립트를 호출하는 애플 스크립트 스크립트를 작성하면이를 달성 할 수 있으며 매우 편리합니다.

쉘 스크립트

  1. 선호하는 텍스트 편집기에서 쉘 스크립트를 작성하십시오 (예 :

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (모노 프레임 워크를 사용하여 w32 실행 파일을 실행합니다)

  2. 쉘 스크립트를 저장하십시오 (예 : "StartKeepass.sh").

애플 스크립트

  1. AppleScript 편집기를 열고 쉘 스크립트를 호출하십시오.

    do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges

    • do shell script -외부 쉘 명령을 호출하는 applescript 명령
    • "sh ...." -이것은 1 단계에서 생성 된 쉘 스크립트 (전체 경로)입니다 (직접 명령을 실행할 수도 있습니다. 쉘 스크립트를 생략하고 여기에서 모노 명령을 실행할 수 있습니다)
    • user name -특정 사용자로 명령을 실행하려는 Applescript에 선언합니다.
    • "<enter username here> - "josh"와 같은 사용자 이름으로 바꾸십시오 (따옴표 유지).
    • password -비밀번호를 사과로 표시합니다.
    • "<enter password here>" -비밀번호 (예 : 따옴표)로 바꾸고 "mypass"
    • with administrative privileges -관리자로 실행하고 싶다고 선언합니다.

.APP 만들기

  1. 내 경우 RunKeepass.scpt에서 applescript를 filename.scpt로 저장하십시오.

  2. Applescript로 다른 이름으로 저장하고 파일 형식을 응용 프로그램으로 변경하면 내 경우에는 RunKeepass.app

  3. 앱 파일을 앱 폴더에 복사


5

스크립트 편집기에서 :

do shell script "/full/path/to/your/script -with 'all desired args'"

애플리케이션 번들로 저장하십시오.

스크립트의 효과를 얻는 것만으로도 제대로 작동합니다. STDOUT 또는 STDERR이 표시되지 않습니다.


2
"응용 프로그램 번들로 저장"이라고 제안합니다. 번들은 애플리케이션보다 훨씬 빠르게 실행됩니다.
e.James

-3

누군가가 썼습니다 ...

".sh"로 끝나는 모든 파일을 터미널로 열도록 설정했습니다. 그것은 잘 작동하며 실행하려는 각 쉘 스크립트의 이름을 변경할 필요가 없습니다.

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