답변:
OS X 10.6에서는 open응용 프로그램에 인수를 전달할 수 있도록 명령이 향상되었습니다.
open ./AppName.app --args -AppCommandLineArg
그러나 맥 OS X의 이전 버전에 대한 응용 프로그램 번들이 명령 줄 인수를 전달하도록 설계되지 않고 있기 때문에, 기존의 메커니즘을 사용하는 것입니다 애플 이벤트 파일이 좋아하는 위해 여기에 코코아 앱 또는 위해 여기에 카본 애플리케이션을 위해. 환경 변수를 사용할 때 매개 변수를 전달하여 약간의 작업을 수행 할 수도 있습니다.
open은 대답에서 알 수 있듯이 명령 줄에서 작동하도록 설계되지 않았습니다. "왜?" 그것이 Mac OS X의 방식이기 때문입니다.
여기 질문 에서 언급했듯이 open10.6 의 명령에는 이제 args플래그가 있으므로 다음을 호출 할 수 있습니다.
open -n ./AppName.app --args -AppCommandLineArg
응용 프로그램 번들 ( .app파일)은 실제로 여러 디렉토리입니다. open및 .app이름 을 사용하는 대신 실제로 이동하여 실제 바이너리를 시작할 수 있습니다. 예를 들면 :
$ cd /Applications/LittleSnapper.app/
$ ls
Contents
$ cd Contents/MacOS/
$ ./LittleSnapper
그것은 인수를 받아 들일 수있는 실제 바이너리입니다 ( LittleSnapper'의 경우).
DYLD_LIBRARY_PATH, DYLD_FRAMEWORK_PATH.
MathieuK가 제공하는 기술을 추천합니다. 제 경우에는 Chromium으로 시도해야했습니다.
> Chromium.app/Contents/MacOS/Chromium --enable-remote-fonts
나는 이것이 OP의 문제를 해결하지 못한다는 것을 알고 있지만, 다른 누군가의 시간을 절약하기를 바랍니다. :)
open또한 애플리케이션 폴더 내에서 이름 (또는 -b 플래그가있는 번들 식별자)로 앱을 여는 데 사용할 수있는 -a 플래그가 있습니다. 이것을 --args 옵션과 결합하여 원하는 결과를 얻을 수 있습니다.
open -a APP_NAME --args ARGS
팩터 2x 및 루프로 확장되어야하는 VLC 플레이어에서 비디오를 열려면 예를 들어 다음과 같이합니다.
open -a VLC --args -L --fullscreen
터미널에 명령 출력을 가져올 수 없습니다. (나는 그것을 해결하기 위해 아무것도 시도하지 않았지만)
open -a의도적으로 반복 했나요 ?? 어쨌든 open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir=/Users/an/userll나를 위해 작동하지 않습니다.
각각 고유 한 프로필을 사용하는 두 개의 개별 Chrome 인스턴스를 실행하고 싶었습니다. Mac 앱을 시작하는 습관처럼 Spotlight 에서 시작할 수 있기를 원했습니다 . 즉, regChrome일반 브라우징과 altChrome특수 프로필을 사용하기 위해 두 개의 일반 Mac 응용 프로그램이 필요 했습니다. ⌘-space를 눌러 Spotlight를 불러 온 다음 'reg'또는 'alt'를 누른 다음 Enter 키를 눌러 쉽게 시작할 수 있습니다.
위의 목표를 달성하는 무차별 대입 방법은 각 이름으로 Google 크롬 응용 프로그램 번들의 복사본을 두 개 만드는 것입니다. 그러나 그것은 추악하고 업데이트를 복잡하게 만듭니다.
결국 두 개의 명령을 포함하는 두 개의 AppleScript 응용 프로그램을 사용하게되었습니다. 다음은 다음과 같습니다 altChrome.
do shell script "cd /Applications/Google\\ Chrome.app/Contents/Resources/; rm app.icns; ln /Users/garbuck/local/chromeLaunchers/Chrome-swirl.icns app.icns"
do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --user-data-dir=/Users/garbuck/altChrome >/dev/null 2>&1 &"
두 번째 줄은 대체 프로필 ( --user-data-dir매개 변수)로 Chrome을 시작합니다 .
첫 번째 줄은 두 응용 프로그램에 고유 한 아이콘을 제공하려는 시도가 실패한 것입니다. 처음에는 제대로 작동하는 것처럼 보입니다. 그러나 조만간 Chrome은 아이콘 파일을 다시 읽고 두 앱 중 마지막에 시작된 앱에 해당하는 파일을 가져와 동일한 아이콘으로 두 개의 실행중인 응용 프로그램을 만듭니다. 그러나 나는 그것을 고치려고 노력하지 않았습니다. 나는 두 개의 브라우저를 별도의 데스크톱에 유지하고 그 사이를 탐색하는 것은 문제가되지 않았습니다.
OS X Yosemite 부터 이제 AppleScript 및 Automator 를 사용 하여 복잡한 작업을 자동화 할 수 있습니다. 이제 자동화 용 JavaScript를 스크립팅 언어로 사용할 수 있습니다.
이 페이지는 bash 및 osascript 대화 형 모드를 사용하여 명령 줄에서 작성할 수 있는 좋은 예제 스크립트 를 제공 합니다. Safari 탭이 열리고로 이동합니다 example.com.
osascript -l JavaScript -i
Safari = Application("Safari");
window = Safari.windows[0];
window.name();
tab = Safari.Tab({url:"http://www.example.com"});
window.tabs.push(tab);
window.currentTab = tab;
앱의 저장소에 경로 추가를 설정하지 않는 이유는 무엇입니까? MacVim의 경우 다음을 수행했습니다.
export PATH=/Applications/MacVim.app/Contents/bin:$PATH
별칭은 내가 시도한 또 다른 옵션입니다.
alias mvim='/Applications/MacVim.app/Contents/bin/mvim'
alias gvim=mvim
내보내기 PATH를 사용하여 앱의 모든 명령을 호출 할 수 있습니다. MacVim을 사용한 테스트에서 인수가 잘 통과되었습니다. 별칭은 빈에있는 각 명령의 별칭을 지정해야했습니다.
mvim README.txt
gvim Anotherfile.txt
별칭과 PATH의 힘을 즐기십시오. 그러나 OS가 업그레이드되면 변경 사항을 모니터링해야합니다.
다음을 사용하여 앱을 시작할 수 있습니다 open.
open -a APP_YOU_WANT
원하는 응용 프로그램이 열립니다.
nohup &문제를 해결?