파인더에서 선택한 파일 / 폴더로 쉘 스크립트를 실행하는 방법은 무엇입니까?


13

나는 노틸러스 나 돌고래의 파일 세트에 대해 스크립트를 실행하기 쉬운 Linux에서 왔지만 OSX에서는 쉽지 않다는 사실에 놀랐습니다.

파인더에서 선택 항목을 Ctrl 키를 누른 상태에서 클릭하고 스크립트를 선택하고 진행률 또는 사용자 상호 작용을 표시하는 터미널 창이 나타납니다.

답변:


8

가장 쉬운 기본 제공 방법은 Finder 에서 터미널 창으로 항목을 드래그하는 것 입니다. 삭제하면 터미널 은 (이스케이프 된) 경로 이름을 "입력"합니다. 그런 다음 쉘의 명령 행 편집을 사용하여 나머지 명령을 입력 할 수 있습니다. 또는 미리 생각하고 있다면 먼저 명령을 입력 한 다음 항목을 드래그하십시오.

"먼저 드래그"버전 :

  1. 일부 Finder 항목을 선택 하여 쉘 프롬프트를 표시하는 터미널 창으로 드래그하십시오 . 터미널 은 (이스케이프 된) 경로 이름을 삽입합니다.
  2. Control+를 입력 A하십시오 (줄의 시작 부분으로 이동하십시오. ⌃A가 기본값이지만 쉘 / 구성에 따라 다릅니다).
  3. 명령과 공백을 입력하십시오 (경로 이름 앞에 삽입됩니다).

“앞으로 생각”버전 :

  1. 어떤 순서로든 다음을 수행하십시오.
    • A의 터미널 창 (경로 이름을 제외한 모든) 명령과 공간의 처음 부분을 입력합니다.
    • Finder 에서 일부 항목을 선택하십시오 .
  2. 에서 선택한 항목으로 드래그 Finder를 받는 터미널 명령을 입력 창을여십시오.
  3. 터미널 창을 활성화 하고를 누릅니다 Return.

보다 자동화 된 솔루션이 필요한 경우 (다른 답변에서 알 수 있듯이) AppleScript 또는 Automator로 전환 할 수 있습니다. 여분의 "이동 부품"은 솔루션에 약간의 복잡성을 추가 할 수 있으므로 자동화 된 솔루션 중 하나 이상을 구현하는 복잡성과 비교하여 위의 프로세스의 이점 (수동이지만 유연함)을 평가해야합니다.

자동화 가능성 중 일부는 다음과 같습니다.

  • AppleScript 액적 응용 프로그램
  • 내장 스크립트 메뉴 또는 다른 실행기로 시작된 일반 AppleScript 프로그램
    • Finder 의 선택 에서 경로 이름 가져 오기
  • Automator 워크 플로우, 애플리케이션 또는 Finder 플러그인
  • 실행 .command파일 (일반적으로 쉘 스크립트; Finder 에서 열어 터미널 에서 실행 )
    • Finder 의 선택 에서 경로 이름을 얻습니다 ( osascript 통해 )
  • 필요한 기능을 이미 제공하는 타사 도구

7

나는 이것을 직접 할 수있는 방법이 없다고 생각합니다. 원하는 작업을 수행하는 "자동화 기"응용 프로그램을 구축 할 수 있습니다. 다음은 Automator 스택의 모습을 보여줍니다.

여기에 이미지 설명을 입력하십시오

결과를 응용 프로그램으로 저장 한 다음 파인더에서 파일을 선택하고 마우스 오른쪽 단추를 클릭하고 "연결 프로그램"을 선택한 다음 응용 프로그램을 선택하십시오. (응용 프로그램 목록 맨 아래에서 "기타 ..."를 선택해야 할 수도 있습니다.)

이 방법으로 스크립트와 상호 작용할 수는 없지만 파일을 반복하여 일부 쉘 스크립트를 수행 할 수 있습니다.


응용 프로그램 아이콘 위로 파일을 끌어다 놓으면 더 쉽습니다.
kiamlaluno 2016 년

5

서비스 가 이런 종류의 일을 처리하는 방식입니다.

응용 프로그램 메뉴 (이 경우 'Finder')에는 항상 Services현재 응용 프로그램 현재 상태에 적용되는 서비스를 제공 하는 메뉴 옵션이 있습니다 . 일반적으로 상태는 선택된 개체 유형 (텍스트, 파일 / 폴더 등)입니다.

시스템 환경 설정 패널에서 마지막 세 가지에만 해당되는 바로 가기 키를 활성화, 비활성화 및 할당 할 수 있습니다 Keyboard.

키보드 단축키

Finder의 파일 / 폴더에 쉘 스크립트를 적용하는 서비스를 작성하려면 다음을 수행하십시오.

시작 하고 새로운 Service유형의 문서를 만듭니다.

새로운 서비스

  • 서비스가 적용되는 객체 유형 설정 ( files or folders)
  • 서비스를 이용할 수있는 응용 프로그램 설정 ( )
    • 또는 Get Selected Finder Items조치가 있습니다.
  • 행동을 추가하다 Run Shell Script
  • 입력을 인수 또는 으로 원하는지 결정하십시오.

다음과 같이 보일 것입니다 :

쉘 스크립트 예

~/Library/Services저장할 때 는 자동으로 폴더에 저장하여 Application -> Services메뉴 또는 상황에 맞는 (오른쪽 클릭) 메뉴 를 통해 즉시 (거의) 사용할 수있게 합니다.

테스트 폴더

결과 TextEdit 문서



2

위의 답변을 바탕 으로이 물건을 만들었습니다.

https://github.com/commonpike/DropShell

기본적으로 삭제 된 파일을 인수로 사용하여 앱에있는 쉘 파일을 호출하는 애플 스크립트 앱입니다. 필요에 따라 쉘 스크립트를 수정할 수 있습니다.


2

commonpike의 답변을 바탕으로 AppleScript를 만들었습니다 .AppleScript는 삭제 된 모든 파일을 일치하는 이름의 쉘 스크립트로 리디렉션합니다. Apple의 ScriptEditor에서 응용 프로그램으로 저장하고 script.app로 이름을 바꾸면 script.sh와 일치합니다 .sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt


1

Mac OS X에서 기본 스크립트 언어는 Applescript입니다. 드롭 릿 (아이콘 위에 일부 파일을 놓을 때 수행 할 스크립트)을 작성하고 스크립트 (응용 프로그램으로 저장할 수 있음) 아이콘을 데스크탑 위에 놓은 후 전달하려는 파일을 끌어서 놓을 수 있습니다. 스크립트.

대안으로 폴더 작업을 사용할 수 있습니다. 일부 파일 (또는 디렉토리)이 폴더 위에 놓일 때마다 실행되는 폴더에 Applescript 스크립트를 연결할 수 있습니다.


1

위의 솔루션과 달리 쉘 스크립트에 대해 인용 된 매개 변수를 생성하고 싶었습니다. 다른 방법은 괜찮지 만 실제로 원하는 것이 "단지 command-v를 터미널에 제안"하는 것과 같습니다 pbpaste.

각 Finder 선택에 대한 파일 매개 변수로 확장 된 스크립트에서 사용할 수있는 쉘 기능을 만들고 싶었습니다. 나는 생선 껍질을 사용하며 이것은 다소 작동하는 것 같습니다.

function selection
    osascript -e "tell application \"Finder\" to set s to the selection as alias list" -e "repeat with f in s" -e "set contents of f to POSIX path of f" -e "end repeat" -e "set AppleScript's text item delimiters to linefeed" -e "s as string"
end

와 같은 (물고기 껍질에서 다시 사용) convert-video (selection).

bash 함수에서는 | tr '\n' '\0' | xargs -0 printf "%q" {}확실하지 않은 osascript 명령의 끝 과 같이 출력을 인용해야 할 수도 있습니다 .

(참고 : 지난 2 시간 동안 다시 배우고 내일은 잊어 버릴 고급 애플 스크립트 및 쉘 스크립팅에 대해 알고있는 모든 것)


최근에 bash 에서이 작업을 시도했지만 실패했으며 여기 superuser.com/questions/1353966 에서 다음과 같은 답변을 얻었습니다 : no, not : : 위의 Chris Johnsen이 언급 한 드래그-투-파인더 기법을 사용합니다
Pierre Houston
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.