Saya ingin meluncurkan aplikasi di OSX dari skrip. Saya perlu menyampaikan argumen baris perintah. Sayangnya, open
tidak menerima argumen baris perintah.
Satu-satunya pilihan yang dapat saya pikirkan adalah menggunakan nohup myApp > /dev/null &
untuk meluncurkan aplikasi saya sehingga bisa ada secara independen dari skrip yang meluncurkannya.
Ada saran yang lebih baik?
nohup &
memecahkan masalah?Jawaban:
Di OS X 10.6,
open
perintah telah ditingkatkan untuk memungkinkan penerusan argumen ke aplikasi:Tetapi untuk versi Mac OS X yang lebih lama, dan karena bundel aplikasi tidak dirancang untuk melewati argumen baris perintah, mekanisme konvensionalnya adalah menggunakan Acara Apple untuk file seperti di sini untuk aplikasi Cocoa atau di sini untuk aplikasi Karbon. Anda juga mungkin bisa melakukan sesuatu kludgey dengan melewatkan parameter dalam menggunakan variabel lingkungan.
sumber
open
- seperti yang dikatakan jawabannya - tidak dirancang untuk bekerja dari baris perintah. "Mengapa?" Karena begitulah cara Mac OS X.Seperti yang disebutkan dalam pertanyaan di sini ,
open
perintah di 10.6 sekarang memiliki sebuahargs
bendera, jadi Anda dapat memanggil:open -n ./AppName.app --args -AppCommandLineArg
sumber
Bundel aplikasi (
.app
file) sebenarnya adalah sekumpulan direktori. Alih-alih menggunakanopen
dan.app
namanya, Anda benar-benar dapat masuk ke dalamnya dan memulai biner sebenarnya. Misalnya:Itu adalah biner aktual yang mungkin menerima argumen (atau tidak, dalam
LittleSnapper
kasus ini).sumber
DYLD_LIBRARY_PATH
,DYLD_FRAMEWORK_PATH
.Jika aplikasi Anda perlu bekerja pada file (yang biasanya Anda harapkan untuk diteruskan sebagai:)
./myApp *.jpg
, Anda akan melakukannya seperti ini:sumber
open something.py -a Eclipse.app
Saya akan merekomendasikan teknik yang ditawarkan MathieuK. Dalam kasus saya, saya perlu mencobanya dengan Chromium:
Saya menyadari ini tidak menyelesaikan masalah OP, tapi mudah-mudahan bisa menghemat waktu orang lain. :)
sumber
open
juga memiliki tanda -a, yang dapat Anda gunakan untuk membuka aplikasi dari dalam folder Aplikasi dengan namanya (atau dengan pengenal bundel dengan tanda -b). Anda dapat menggabungkan ini dengan opsi --args untuk mencapai hasil yang Anda inginkan:Untuk membuka video di pemutar VLC yang harus diskalakan dengan faktor 2x dan loop Anda akan misalnya exectute:
Perhatikan bahwa saya tidak bisa mendapatkan output dari perintah ke terminal. (meskipun saya tidak mencoba apa pun untuk menyelesaikannya)
sumber
open -a
sengaja ?? Bagaimanapun,open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir=/Users/an/userll
tidak berhasil untuk saya.Saya ingin menjalankan dua contoh Chrome yang terpisah, masing-masing menggunakan profilnya sendiri. Saya ingin dapat memulainya dari Spotlight , seperti kebiasaan saya memulai aplikasi Mac. Dengan kata lain, saya memerlukan dua aplikasi Mac biasa,
regChrome
untuk penjelajahan normal danaltChrome
untuk menggunakan profil khusus, agar mudah dimulai dengan menekan ⌘-space untuk memunculkan Spotlight, lalu 'reg' atau 'alt', lalu Enter.Saya kira cara brute force untuk mencapai tujuan di atas adalah membuat dua salinan dari bundel aplikasi Google Chrome dengan nama masing-masing. Tapi itu jelek dan memperumit pembaruan.
Apa yang saya dapatkan adalah dua aplikasi AppleScript yang masing-masing berisi dua perintah. Ini yang untuk
altChrome
:Baris kedua memulai Chrome dengan profil alternatif (
--user-data-dir
parameter).Baris pertama adalah upaya yang gagal untuk memberikan dua ikon aplikasi yang berbeda. Awalnya, tampaknya berfungsi dengan baik. Namun, cepat atau lambat, Chrome membaca ulang file ikonnya dan mendapatkan yang sesuai dengan salah satu dari kedua aplikasi tersebut yang terakhir kali dijalankan, menghasilkan dua aplikasi yang berjalan dengan ikon yang sama. Tetapi saya tidak repot-repot untuk mencoba memperbaikinya - saya menyimpan kedua browser di desktop yang terpisah, dan menavigasi di antara keduanya tidak menjadi masalah.
sumber
Dimulai dengan OS X Yosemite , sekarang kita dapat menggunakan AppleScript dan Automator untuk mengotomatiskan tugas-tugas kompleks. JavaScript untuk otomatisasi sekarang dapat digunakan sebagai bahasa skrip.
Halaman ini memberikan contoh skrip yang bagus yang dapat ditulis pada baris perintah menggunakan mode interaktif bash dan osascript . Ini membuka tab Safari dan menavigasi ke
http://developer.telerik.com/featured/javascript-os-x-automation-example/example.com
.sumber
Dengan applescript:
sumber
Mengapa tidak mengatur tambahkan jalur ke tempat sampah aplikasi. Untuk MacVim, saya melakukan hal berikut.
Alias, adalah opsi lain yang saya coba.
Dengan PATH ekspor saya dapat memanggil semua perintah di aplikasi. Argumen berhasil dengan baik untuk pengujian saya dengan MacVim. Sedangkan aliasnya, saya harus membuat alias setiap perintah di tempat sampah.
Nikmati kekuatan alias dan PATH. Namun, Anda tetap perlu memantau perubahan saat OS ditingkatkan.
sumber
Sederhana, di sini ganti "APP" dengan nama aplikasi yang ingin Anda luncurkan.
Terima kasih saya nanti.
sumber
Anda dapat meluncurkan aplikasi menggunakan
open
:Ini harus membuka aplikasi yang Anda inginkan.
sumber