Kami sedang melakukan semua skrip kami dengan Bash sejauh ini, tetapi saya mulai merasa agak konyol tentang hal itu. Meskipun kita tentu saja dapat melakukan semua yang kita inginkan dengan Bash (ini cukup kuat), saya mulai bertanya-tanya apakah kita seharusnya tidak menggunakan bahasa scripting yang tepat (dalam kasus kami kemungkinan besar Ruby) sebagai gantinya.
Bagaimana Anda memutuskan kapan harus menggunakan Perl / Python / Ruby over Bash untuk skrip? Saya pikir skrip init dengan Ruby tidak masuk akal, tetapi bagaimana dengan skrip yang sedikit lebih panjang yang menambahkan akun email?
Jawaban:
Dengan adanya masalah yang bisa diatasi oleh keduanya, Anda sebaiknya menggunakan yang paling nyaman bagi Anda. Pada akhirnya, ada banyak detail kecil, dan hanya pengalaman yang bisa mengajarkan Anda untuk melihatnya.
Bash adalah bahasa scripting tujuan umum seperti Python, Ruby, Perl, tetapi masing-masing memiliki kekuatan yang berbeda dari yang lain. Perl unggul dalam analisis teks, Python mengklaim sebagai yang paling anggun di antara banyak grup, skrip Bash sangat bagus dalam "menyalurkan hal-hal di sekitar", jika Anda tahu apa yang saya maksud, dan Ruby ... well, Ruby sedikit istimewa dalam banyak hal. cara.
Namun, perbedaan di antara mereka hanya penting setelah Anda memiliki jumlah pengalaman skrip yang sehat. Saya sarankan Anda memilih satu bahasa dan mendorongnya ke batas sebelum pindah ke yang berikutnya. Anda dapat melakukan banyak hal dalam skrip shell, lebih dari yang orang akui. Bahasa apa pun sama sulitnya dengan yang Anda inginkan. Setelah Anda menulis beberapa hal di dalamnya, setiap bahasa "mudah" bagi Anda.
Menjadi terbiasa dengan shell terbayar dengan cepat jika Anda tinggal di Linux, jadi mungkin Anda ingin memulai dengan itu. Jika Anda menemukan tugas yang tidak mungkin atau tidak praktis untuk Anda selesaikan dalam skrip shell, gunakan sesuatu yang lain.
Juga, ingatlah bahwa mempelajari skrip shell sangat sederhana. Kekuatan sebenarnya terletak pada program lain, seperti awk, sed, tr, et al.
sumber
TL; DR - gunakan bash hanya untuk menginstal bahasa yang lebih baik (jika belum tersedia), jika tidak, Anda membuang-buang waktu manusia yang berharga dan tidak terpulihkan. Jika Anda tidak dapat melakukannya di baris perintah dengan tangan tanpa kesalahan, jangan skrip dengan bash / shell.
Ini tahun 2015, jadi saya akan mempertimbangkan yang berikut:
memori di atas kepala
waktu startup
kinerja
produktifitas
Saya menemukan tidak ada alasan untuk menggunakan Bash / Shell jika Anda menginstal Ruby / Python.
Dan mungkin menginstal Ruby / Python bahkan tidak memerlukan skrip bash di tempat pertama (dengan pengecualian busybox, beberapa alat sistem bergantung pada Python / Perl tetap ada).
Dan setiap kali Anda menulis skrip shell, Anda "berlatih" melakukan hal itu - alih-alih mempelajari sesuatu yang lebih kuat / produktif.
Mengapa orang menggunakan Bash saat ini? Karena itu kebiasaan yang buruk dan sulit dihilangkan. Sebuah skrip jarang "selesai selamanya" setelah beberapa menit pertama - tidak peduli seberapa kuat orang cenderung berpikir seperti itu. Bersamaan dengan fallacy "itu bug terakhir dalam skrip ini".
Kesimpulan: gunakan bash / shell hanya ketika Anda benar-benar terpaksa (seperti
~/.bashrc
, busybox), karena hampir tidak pernah "alat yang tepat untuk pekerjaan" saat ini.sumber
Saya menggunakan bash ketika fokus utama saya adalah penanganan file. Ini dapat mencakup memindahkan, menyalin, dan mengganti nama file, serta menggunakan file sebagai input untuk program lain atau menyimpan output program lain dalam file. Saya jarang menulis kode bash yang benar-benar memeriksa isi file atau menghasilkan output untuk menulis ke file; Saya serahkan itu ke program lain (yang bisa saya tulis dalam Perl atau python) yang saya luncurkan melalui bash.
Saya menggunakan Perl dan python ketika fokus utama saya adalah membaca data dari file, memproses data dengan cara tertentu, dan menulis output ke file. Jika saya menemukan diri saya menggunakan (dalam Perl)
system
perintah, kembali tik atau (dalam python)subprocess
modul terlalu luas, saya mempertimbangkan untuk menulis skrip dalam bash. Di sisi lain, saya kadang-kadang mulai menambahkan begitu banyak fungsionalitas ke skrip bash yang akhirnya lebih masuk akal untuk menulis ulang dalam Perl / python daripada berurusan dengan dukungan terbatas (dengan perbandingan) bash untuk pelingkupan variabel, fungsi, struktur data, dll. .sumber
=~
operator yang didukung oleh[[ ]]
saya telah mencintai saya beberapa Bash untuk pembacaan file sederhanaSaya suka kriteria yang ditetapkan dalam posting blog ini .
sumber
Saya menemukan analisis Perl versus Bash ini berguna ...
http://blogs.perl.org/users/buddy_burden/2012/04/perl-vs-shell-scripts.html
Untuk kenyamanan, saya menyalin ringkasan dari penulis itu 1) ketika bash adalah temuan yang lebih baik dan 2) ketika perl adalah kesimpulan yang lebih baik ...
Saat Bash Lebih Baik ...
Ketika Perl Lebih Baik ...
sumber
fail "error" unless system("foobar")
).Dalam pengalaman saya, bash versus python adalah pertukaran antara waktu pengembangan dan fleksibilitas. Solusi dasar untuk suatu masalah biasanya dapat dibuat dalam skrip bash lebih cepat dari pada skrip python.
Python akan cenderung membuat Anda lebih memikirkan struktur solusi Anda daripada skrip bash yang setara. Python memiliki kekuatan lebih ekspresif daripada skrip bash dan karenanya cenderung untuk skala dan memodifikasi lebih baik dari waktu ke waktu. Itu juga tetap lebih mudah dibaca secara umum.
Bash lebih dekat ke sistem file dan bisa menjadi solusi bagus untuk konsep pertama untuk masalah yang TIDAK didefinisikan dengan baik. Untuk alasan ini, skrip bash mungkin merupakan pilihan pertama yang baik untuk membuat prototipe sesuatu dengan maksud penuh untuk memindahkannya ke python setelah masalahnya dipahami dengan lebih baik.
sumber
Bash adalah shell Unix yang mencakup bahasa scripting. Ini bukan prosesor perintah. Anda mengontrol cara Anda menjalankan perintah, Anda benar-benar menjalankannya.
Perl / Ruby / Python adalah bahasa tujuan umum.
Saat Anda menginginkan skrip shell, Anda menggunakan Bash
Jika Anda ingin tugas yang lebih kompleks atau tidak terkait dengan shell. Gunakan Python dll.
Saya tidak akan pernah membandingkan bahasa ini sebenarnya. Python dll. Bersifat portabel. Anda dapat menjalankannya di mana saja. Bash hanya untuk Unix.
Python dll. Memiliki banyak pustaka yang dapat digunakan kembali menyelesaikan jutaan tugas.
Hampir sama jika Anda bertanya. "Kapan menggunakan Paint dan kapan menggunakan Photoshop"
Untuk memproses email saya akan menggunakan Ruby, lagi, karena ia memiliki banyak pustaka yang dapat digunakan kembali.
Tapi cara terbaik adalah menggabungkan bash dan ruby. Itu benar. Seperti Anda membuat skrip pemrosesan email dalam skrip ruby dan bash akan memanggil skrip ruby itu dan menjalankan ds commans lainnya.
Jadi, kapan pun Anda membutuhkan pemroses perintah, Anda menggunakan bash. Anda menjalankan perintah unix dan mengendalikannya.
UPDATE setelah 7 tahun (Mar 2019)
Sementara bagian utama dari jawaban saya tidak berubah, saya ingin menunjukkan itu.
Bash juga bahasa scripting yang kuat. Untuk pemrosesan teks, ini bisa menjadi pilihan mutlak yang sah.
Silakan baca komentar mkaito di bawah ini. Semua itu sepenuhnya benar.
sumber
Skrip shell seperti bash, ksh, zsh, sh, dan fish terkenal mengejutkan, dibandingkan dengan bahasa tujuan umum tingkat tinggi seperti Ruby, Python, atau Perl. Sementara skrip shell dapat memulai kehidupannya sebagai file yang lebih pendek daripada skrip tujuan umum yang setara, kejutan menyebabkan banyak kode pembungkus defensif, seperti
set -euo pipefail
mengaktifkan mode ketat.Sebagai contoh, sebagian besar bahasa shell melanjutkan mengeksekusi baris dalam skrip shell, bahkan ketika salah satu perintah gagal. Sebaliknya, bahasa tujuan umum gagal segera pada kesalahan pertama, dan sering kali berat, menghasilkan perilaku yang lebih aman, lebih dapat diprediksi dalam skrip bahkan kompleksitas cahaya.
sumber
Artikel yang sangat bias.
Saya tidak menemukan bash terlalu sulit untuk di-debug. Python seringkali terlalu kaku, sedangkan bash memungkinkan Anda menjadi sangat kreatif. Jika Anda seorang pemikir yang baik, Anda akan menyukai bash.
Saya menjalankan skrip bash pada jutaan sekuensing DNA yang dibaca dalam ribuan file, dan itu cukup membantu saya. Dan bertentangan dengan apa yang dikatakan semua orang, versi skrip yang sama dalam C ++ tidak benar-benar berjalan lebih cepat (pada beberapa menit pisahkan).
Saya pikir bash, seperti perl, bukan yang paling ramah pengguna / mudah dibaca. Itu membuat orang takut karena kebanyakan orang bukan pemikir abstrak yang hebat. Tetapi programmer yang lebih cerah dan lebih kreatif cenderung menyukainya dan sering menggunakannya. Jika Anda mengenal diri sendiri dan Anda tahu memiliki otak, jangan takut dengan bash. Jika Anda seorang pemikir dasar, mungkin tetap berpegang pada sesuatu seperti Python. Untuk masing-masing.
sumber
Dari "Buku Llama,"
sumber
Sebagai aturan praktis, gunakan bahasa paling sederhana yang memiliki kinerja yang cukup baik untuk tugas Anda. Dan kekhasannya hanya sampai batas mereka benar-benar berguna.
Dan tentang keterbacaan, Bash mengerikan jika gaya pemrograman Anda mengerikan. Jika Anda hanya membuang kode di sana, itu menjadi tidak jelas.
Tetapi jika Anda membagi kode menjadi fungsi terpendek , dan menamai berbagai hal dengan cara yang mudah dimengerti, itu adalah bahasa yang paling jelas yang dapat Anda temukan. Karena ini sangat singkat.
Sebagai spesimen, ini adalah kode terbaru saya di Bash. Perhatikan betapa mudahnya memahami dan mengetiknya:
sumber