Saya sudah lama menjadi "pengguna daya" dan pengembang Windows yang baru-baru ini memutuskan untuk pindah ke Mac OS X.
Pada OS X Lion dan memang versi sebelumnya sepertinya ada dua opsi utama untuk scripting dan otomatisasi di OS X: AppleScript dan Bash script. Yang terakhir tentu saja merupakan konsekuensi langsung dari OS X menggunakan shell "bash" Unix, sedangkan yang pertama adalah inovasi Apple sendiri. Sintaksnya jelas sangat berbeda, dengan AppleScript memiliki gaya pseudo-natural-language.
Pertanyaan saya adalah, apakah skrip AppleScript dan Bash umum digunakan (memang, seandainya digunakan) untuk tugas dan tujuan yang berbeda pada OS X. Saya samar-samar menyadari berbagai tugas yang dapat saya selesaikan dengan skrip Bash, meskipun tentu saja kode untuk beberapa yang lebih maju dapat dengan cepat berbelit-belit. Apakah kedua bahasa ini memiliki kasus penggunaan yang tumpang tindih atau hampir identik, meskipun Apple kemudian menemukan AppleScript - atau apakah mereka dimaksudkan untuk digunakan dengan skenario yang berbeda dalam pikiran? Tinjauan tingkat tinggi serta beberapa contoh spesifik akan dihargai.
sumber
Jawaban:
Baik shell- maupun AppleScripts dapat digunakan di mana saja dan jika diperlukan.
AppleScripts berfungsi lebih baik ketika berbicara dengan aplikasi dan fasilitas sistem tingkat pengguna. (Misalnya, Anda dapat mengatakan
tell app "iTunes" to play
dan itu akan, atautell app "Finder" to open the first file of the second window
.)Skrip Shell (Anda dirujuk ke bash) berfungsi lebih baik ketika berbicara dengan objek sistem tingkat rendah dan hal-hal Unixy.
Keduanya interoperable: Anda dapat memanggil perintah shell dari AppleScript dengan
do shell script "command here"
dan Anda dapat memanggil kode AppleScript dari shell denganosascript -e "AppleScript"
. Selanjutnya, ada sedikit tumpang tindih antara keduanya (terutama ketika datang ke operasi sistem file).Tentu saja ada lebih banyak sumber untuk belajar skrip shell online daripada AppleScript dan itu tidak membantu bahwa AppleScript memiliki reputasi sebagai bahasa "baca-saja" (yaitu, lebih sulit untuk menulis daripada membaca).
Bagaimanapun, cara paling modern untuk melakukan scripting adalah dengan Automator, di mana Anda dapat menggunakan shell-atau AppleScripting (atau keduanya) bersama dengan modul pra-dibangun dari berbagai aplikasi yang telah Anda instal.
sumber
Sementara salah satu konteks skrip dapat melakukan apa pun yang dapat dilakukan oleh yang lain (karena skrip shell dapat memanggil
/usr/bin/osascript
untuk memanggil AppleScript, dan AppleScript memilikido shell script
perintah), memang ada konteks yang lebih cocok dari yang lain.Kedua bahasa scripting adalah bahasa "lem" - mereka dapat melakukan sendiri hal-hal minimal, dan alih-alih menyelesaikan sebagian besar tugas mereka dengan menggunakan kemampuan program lain. Skrip Shell memanfaatkan pipa Unix, sementara AppleScript memiliki
tell application
sintaksis.Di mana mereka berbeda adalah bahwa AppleScripts langsung berkomunikasi dengan aplikasi skrip (hampir selalu aplikasi GUI), sedangkan skrip shell berkomunikasi terutama dengan program command-line (beberapa di antaranya dapat memanggil antarmuka pengguna grafis, tetapi banyak yang tidak).
Ketika datang ke tugas manajemen file, kedua pendekatan dapat bekerja. Satu dapat
Tell Application Finder
menyalin file, atau menjalankancp
perintah dalam skrip shell. Jadi mengapa menggunakan satu di atas yang lain? Tentu saja beberapa penulis naskah lebih akrab dengan satu bahasa daripada yang lain, dan dengan demikian akan lebih suka menggunakan alat itu. Namun pertimbangan yang lebih baik adalah dari pengguna skrip. AppleScript sering dapat dipanggil dari Mac GUI: mengklik dua kali aplikasi AppleScript, atau menjatuhkan file ke satu, atau menggunakan menu AppleScript baik di seluruh sistem atau dalam program tertentu. Program seperti Mail dapat diatur untuk menjalankan AppleScript pada pesan yang masuk untuk memfilternya. Untuk pengguna yang terbiasa menggunakan Mac dengan cara "seperti Mac" (yaitu dari GUI), skrip Apple seringkali lebih mudah diakses.Skrip shell sering (tetapi tidak selalu) tinggal di Terminal. Jika seseorang sudah menggunakan Terminal, menjalankan skrip shell di sana bisa lebih nyaman daripada memanggil AppleScript. Di sisi lain, banyak pengguna tidak senang dengan harus mengetik perintah di jendela Terminal, atau bahkan mengklik file skrip yang membuka jendela Terminal untuk melakukan keajaibannya. Saya pribadi menemukan sintaks skrip shell lebih mudah dibaca daripada skrip AppleScript, tapi saya curiga saya termasuk minoritas dalam skrip itu. Skrip Shell sudah biasa bagi pengguna berbagai sistem mirip Unix.
Bagaimanapun, keduanya adalah alat yang ampuh untuk mendapatkan kontrol yang lebih baik atas Mac Anda.
sumber
Tell Application Finder
untuk menyalin file akan membuka jendela dengan bilah kemajuan yang terlihat, sementaracp
tidak. Apakah itu benar?Jawaban lainnya memberikan ikhtisar tingkat tinggi yang luar biasa tentang niat di balik kedua teknik penulisan skrip ini. Mungkin saya hanya akan memberi Anda contoh bagaimana saya menggunakannya.
Dengan Applescript, saya telah membuat aturan pemrosesan untuk Mail, menghubungkan BBEdit ke R untuk pemrosesan statistik, membuat Folder Action yang kompleks, dan melakukan reorganisasi besar-besaran berdasarkan foto-foto saya di iPhoto dan Aperture. Saya juga membuat aplikasi mini dengan tombol dan tampilan teks. Pada dasarnya, ini adalah manipulasi otomatis aplikasi yang kompleks dengan GUI.
Dengan skrip Bash, saya telah membuat rutinitas pemrosesan gambar otomatis dengan Imagemagick, rutinitas pemrosesan PDF dengan Ghostscript, rutinitas waktu dan tanggal, dan banyak pemrosesan teks dengan Bash, sed / awk, dan Perl. Utilitas Unix cenderung ramping, cepat, dan fleksibel, dan Bash adalah cara yang bagus untuk menggabungkannya menjadi alat yang sangat kuat dan mudah.
Saya kadang-kadang memanggil skrip Bash dari dalam sebuah Applescript, biasanya untuk keperluan pemrosesan teks (GREP) atau untuk pengambilan situs web ringan (ikal). Saya hampir selalu menggunakan teknik ini untuk mendapatkan sedikit data atau variabel untuk digunakan lebih lanjut dalam Applescript saya.
sumber
Ini mungkin penyederhanaan berlebihan, tetapi shell scripting adalah untuk menggabungkan program yang ada untuk melakukan tugas-tugas baru sedangkan AppleScript adalah untuk mengontrol (kebanyakan GUI) aplikasi dari jarak jauh. Program Unix Klasik biasanya membaca beberapa input dan menghasilkan beberapa output dan skrip shell memungkinkan Anda menggabungkannya. AppleScript adalah untuk mengotomatiskan aplikasi GUI.
sumber