OSX 'buka dengan' skrip bash

8

Saya punya skrip bash, mungkin banyak dari mereka sebenarnya, yang saya ingin dapat membuka file dengan OSX's finder.

Ini adalah konsep yang sangat, sangat sederhana tetapi untuk beberapa alasan skrip bash diklik dalam dialog 'open with' finder.

Saya mengetahui bahwa ada berbagai cara menggunakan applescript atau kemasan sebagai aplikasi ... tapi saya belum dapat menemukan semua ini dan saya tidak benar-benar ingin harus mengambil bahasa lain hanya untuk tugas sepele ini - bisakah seseorang sendok memberi saya makan?

Terima kasih!

kaya
sumber

Jawaban:

11

Itu tidak mungkin. Layanan Peluncuran berfungsi dengan pengidentifikasi aplikasi, dan skrip bash tidak memilikinya.

Anda perlu membuat aplikasi pembungkus menggunakan Automator.

  1. Luncurkan Automator
  2. Pilih Aplikasi
  3. Cari tindakan Run Shell Script dan tambahkan ke kanan.
  4. Masukan input sebagai argumen
  5. Letakkan skrip Anda di sana
  6. Simpan di suatu tempat

Ini versi saya, menggunakan utilitas baris perintah Growl :

masukkan deskripsi gambar di sini

Hasil:

masukkan deskripsi gambar di sini


Anda dapat melihat efek perubahan ini pada ~/Library/Preferences/com.apple.LaunchServices.plistsaat Anda Mengubah Semua :

masukkan deskripsi gambar di sini

("Tes" adalah nama yang saya berikan pada aplikasi Automator saya)

Daniel Beck
sumber
Terima kasih. Saya memberikan pusaran tetapi saya mencoba dan membuka dengan aplikasi yang dibuat oleh Automator itu hanya mengatakan Tindakan "Run Shell Script" mengalami kesalahan. Periksa properti tindakan dan coba jalankan alur kerja lagi. Yaitu tentang pesan kesalahan yang paling tidak membantu yang pernah saya lihat selama beberapa waktu!
kaya
@ Kaya Apakah ini berfungsi dengan skrip default dalam menjalankan skrip shell action? Atau bahkan tidak? Apakah Anda ingat untuk mengubah preferensi input pass ? Apakah Anda mencoba mengklik dua kali aplikasi Anda, menyeret file ke aplikasi Anda, atau hanya membuka file terkait? Apa yang terjadi jika Anda memulainya dengan cara lain?
Daniel Beck
Terima kasih. Tidak yakin bagaimana Anda akan melihat output dari yang default karena hanya memanggil kucing, tetapi sepertinya itu tidak salah. Alih-alih memiliki aplikasi memanggil skrip saya dari lokasi non-standar saya membuat skrip di / usr / local / bin dan kemudian menemukan bahwa jika saya mencoba menjalankannya mengeluh bahwa ada terlalu banyak level tautan simbolik (1 ?! ) Jadi saya baru saja menyalin skrip di sana dan sekarang sepertinya berfungsi. Terima kasih!
kaya
1

Saya mengikuti instruksi Daniel Beck dengan beberapa modifikasi dan membuatnya berfungsi untuk file URL yang ingin saya buka di Chrome (Firefox juga berfungsi) di Mac.

Script yang saya gunakan adalah:

sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"

Ini mem-parsing URL = baris dari file URL khas yang terlihat seperti:

[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0

Simpan skrip Automator di suatu tempat seperti direktori ~ / Library Anda. Saya menelepon tambang OpenUrl.app.

Sekarang buka file url di suatu tempat dan buka sembulan "Dapatkan Info". Ubah perintah Open With ke skrip OpenUrl.app Anda. Tes hanya dengan satu atau klik "Ubah Semua ..." Pertama kali saya mengklik bahwa itu memberikan kesalahan, tetapi tampaknya berhasil untuk kedua kalinya.

Dalam mengembangkan ini saya memang mendapatkan kesalahan "Jalankan Shell Script", tapi itu karena kesalahan aktual dalam skrip. Saya pikir masalah utama dengan skrip Daniel adalah tidak menangani spasi pada nama file yang Anda coba buka.

Keith Olson
sumber
-1

Gunakan reattach-to-user-namespace, baik dari repo atau dengan brew install reattach-to-user-namespace. Ini berfungsi di Sierra, saya tidak yakin tentang OS lain.

Setelah terinstal, gunakan dalam skrip bash seperti:

reattach-to-user-namespace buka a_cool_file.png

jahat
sumber
Ini sepertinya tidak menjawab pertanyaan. OP ingin menggunakan fungsi "Buka Dengan" Pencari untuk membuka file dengan skrip Bash. Memberikan dukungan clipboard di bawah Tmux dan Layar tidak membantu dengan itu, terutama karena tidak ada indikasi bahwa Tmux atau Layar bahkan terlibat.
8bittree