Saya mencoba mempelajari skrip shell (bash) beberapa kali tetapi didorong oleh sintaks. Kemudian saya menemukan Python dan dapat melakukan sebagian besar hal yang dapat dilakukan skrip shell dengan Python. Saya sekarang tidak yakin apakah saya harus menginvestasikan waktu saya untuk mempelajari skrip shell lagi. Jadi saya ingin bertanya:
Apa kekuatan skrip shell yang menjadikannya alat yang sangat diperlukan dibandingkan dengan Python?
Saya bukan seorang sistem administrasi berdasarkan profesi, tetapi saya tertarik untuk mengatur sistem Linux untuk pengguna rumahan, oleh karena itu saya pikir mempelajari skrip shell dapat menjadi diperlukan.
bash
shell secara khusus tidak tersedia secara universal di semua distro linux, khususnya untuk sistem tertanam, dan lainnya yang menjalankanbusybox
executable. Skrip yang menargetkan shell Bourne itu sendiri, yangbash
kompatibel dengan versi sebelumnya, akan berjalan pada semua sistem yang mendukung POSIX, namun bahasanya jauh lebih terbatas daripada yang diterapkan olehbash
."Apa kekuatan skrip shell yang menjadikannya alat yang sangat diperlukan dibandingkan dengan Python?"
Cangkangnya tidak bisa diabaikan. Menurut Anda mengapa ada begitu banyak? bash, tcsh, csh, sh, dll., dll.,
Python adalah cangkang. Bukan yang Anda gunakan untuk menjalankan semua perintah, tetapi untuk skrip, itu ideal.
Python adalah bagian standar yang kurang lebih dari semua distro Linux.
Kerang yang lebih tradisional melakukan terlalu banyak hal.
Mereka memiliki antarmuka pengguna yang berguna untuk menjalankan perintah. Ini termasuk perintah satu baris di mana shell mencari PATH Anda, bercabang dan mengeksekusi program yang diminta. Ini juga termasuk pipeline, sequences dan program bersamaan (menggunakan
;
,|
dan&
) serta beberapa pengalihan (menggunakan>
dan<
).Mereka memiliki kemampuan seperti bahasa pemrograman yang payah untuk menjalankan skrip. Bahasa ini agak sulit digunakan dan sangat tidak efisien. Kebanyakan pernyataan dalam bahasa ini membutuhkan forking satu atau lebih proses tambahan, membuang-buang waktu dan memori.
Menjalankan program dari shell, mengarahkan stderr ke file log dan hal semacam itu bagus. Lakukan itu di cangkang.
Hampir semua hal lainnya dapat dilakukan dengan lebih efisien dan lebih jelas sebagai skrip Python.
Anda membutuhkan keduanya . Namun, Anda tidak boleh menulis skrip dengan pernyataan-if atau loop dalam bahasa shell tradisional.
sumber
if
Pernyataan shell "sederhana" sering kali melibatkan menjalankantest
program. Shell adalah bahasa pemrograman yang payah dalam segala hal.bash
, setidaknya) memiliki bawaan untuk menangani pengambilan keputusan (misalnyatest
adalahbash
bawaan, selain konstruksi yang lebih serbaguna). Ini pasti ada kelemahannya, tapi juga kelebihannya. Ini juga layak dipelajari secara mendetail karena memiliki paradigma yang sangat berbeda dari jenis bahasa lainnya.cat "$1" | ssh "$2" "cat - >\"$1\""
begatscp
. Mereka tahu cara terbaik merancangnya karena mereka sudah menggunakannya.Shell membuat tindakan umum dan sederhana menjadi sangat sederhana, dengan mengorbankan hal-hal yang lebih kompleks menjadi jauh lebih kompleks.
Biasanya, skrip shell kecil akan lebih pendek dan sederhana daripada program python yang sesuai, tetapi program python akan cenderung menerima modifikasi dengan baik, sedangkan skrip shell akan cenderung semakin tidak dapat dipelihara saat kode ditambahkan.
Ini memiliki konsekuensi bahwa untuk produktivitas hari-hari yang optimal Anda memerlukan skrip shell, tetapi Anda harus menggunakannya sebagian besar untuk skrip sekali pakai, dan gunakan python di tempat lain.
sumber
Tidak ada yang dapat Anda lakukan dengan skrip shell yang tidak dapat Anda lakukan dengan python. Keuntungan besar dari skrip shell adalah Anda menggunakan perintah yang sama seperti yang Anda lakukan saat menggunakan shell, jadi jika Anda pengguna shell yang berat, skrip shell pada suatu saat akan menjadi cara yang sangat cepat dan mudah untuk mengotomatiskan kerja shell Anda. .
Saya juga merasa lebih mudah untuk menangani pipa data dalam skrip shell daripada dengan python, meskipun itu benar-benar bisa dilakukan dari python.
Dan, akhirnya, Anda tidak perlu menjalankan interpeter tambahan untuk menjalankan skrip shell, memberi Anda keuntungan yang sangat kecil, tetapi terkadang mungkin terlihat dari kecepatan dan penggunaan memori.
Tapi sekali lagi, skrip Python jauh lebih mudah dipelihara, saya mencoba bermigrasi dari skrip shell jelek besar ke skrip Python karena alasan itu. Ini juga lebih mudah untuk melakukan penanganan pengecualian dan QA dengan Python.
sumber
seseorang tidak perlu mempelajari skrip shell, seperti yang ditunjukkan oleh semua jawaban sebelumnya; tetapi belajar bukanlah hal yang buruk. ini benar-benar masalah prioritas pribadi. sangat sulit bagi orang lain untuk memberi tahu Anda apa yang pantas dan tidak sepadan dengan waktu Anda.
sebagian besar pemrogram merasa bahwa mempelajari bahasa baru semakin mudah setiap saat. (hal yang sama juga terjadi pada bahasa alami.) dan semakin awal Anda mulai, semakin baik.
plus: setelah mempelajari suatu bahasa memungkinkan Anda untuk secara boros menghilangkan keterbatasannya dari posisi pengetahuan dan keakraban yang lengkap. ini mungkin tidak akan membuat Anda santai, tetapi mungkin memberi Anda bir dari teman-teman Anda!
sumber
Saya setuju dengan sebagian besar jawaban sebelumnya. Saya menganggap perintah shell paling cocok untuk melakukan tugas berorientasi sistem file (menyalin dan memindahkan file, grep, dll). Shell lebih baik, menurut pendapat saya, jika Anda harus membaca dan menulis ke file, karena satu
>>file.txt
pengalihan ditambahkan ke file secara instan, daripada membutuhkan, katakanlahfile=open('file.txt','a'); file.write()
, dll.Saat ini, untuk penggunaan pribadi saya, saya mencampur keduanya, membuat skrip python dan memanggil os.system ('command') atau os.popen ('command') setiap kali beberapa tindakan lebih mudah di shell daripada di python.
sumber
Cangkangnya tersedia di mana-mana. Jika Anda tetap menggunakan serangkaian fungsionalitas portabel yang relatif mendasar, skrip Anda dapat berjalan di ponsel, router nirkabel, DVR, netbook, workstation, server besi besar, dan sejenisnya. Python tidak selalu disertakan di luar kotak pada banyak sistem, dan tergantung pada lingkungan, mungkin sulit untuk menginstalnya.
Mempelajari beberapa skrip shell juga dapat membantu Anda mempelajari beberapa trik baris perintah, karena baris perintah adalah shell. Ini juga bagus untuk mengambil beberapa baris perintah yang cukup panjang dan rumit, dan mengubahnya menjadi skrip yang lebih umum setelah Anda menyadari bahwa Anda akan membutuhkannya lagi.
Shell juga memiliki beberapa fitur yang cukup kuat; pipelines adalah konstruksi kontrol yang sangat menarik yang hanya berasal dari shell, sejauh yang saya tahu.
sumber
Hal lain yang perlu dipertimbangkan saat memilih skrip shell Python adalah versi Python yang akan dijalankan pada mesin target. RHEL5 (untuk menyebutkan satu) akan ada untuk waktu yang lama. RHEL5 macet dengan Python 2.4. Ada banyak pustaka bagus yang bergantung pada fungsionalitas yang ditambahkan ke Python post-2.4.
sumber