Panduan Pemula untuk Shell Scripting The Basics
Istilah "shell scripting" sering disebutkan di forum Linux, tetapi banyak pengguna yang tidak terbiasa dengannya. Mempelajari metode pemrograman yang mudah dan kuat ini dapat membantu Anda menghemat waktu, mempelajari baris perintah dengan lebih baik, dan membuang tugas manajemen file yang membosankan..
Apa Itu Shell Scripting?
Menjadi pengguna Linux berarti Anda bermain-main dengan command-line. Suka atau tidak, hanya ada beberapa hal yang dilakukan lebih mudah melalui antarmuka ini daripada dengan menunjuk dan mengklik. Semakin banyak Anda menggunakan dan mempelajari baris perintah, semakin banyak Anda melihat potensinya. Nah, command-line itu sendiri adalah program: shell. Kebanyakan distro Linux saat ini menggunakan Bash, dan inilah yang benar-benar Anda masukkan perintah.
Sekarang, beberapa dari Anda yang menggunakan Windows sebelum menggunakan Linux mungkin ingat file batch. Ini adalah file teks kecil yang bisa Anda isi dengan perintah untuk dieksekusi dan Windows akan menjalankannya secara bergantian. Itu adalah cara yang cerdas dan rapi untuk menyelesaikan beberapa hal, seperti menjalankan game di lab komputer sekolah menengah Anda ketika Anda tidak bisa membuka folder sistem atau membuat pintasan. File batch di Windows, meskipun bermanfaat, adalah tiruan skrip shell yang murah.
Skrip Shell memungkinkan kita memprogram perintah dalam keadaan berantai dan meminta sistem mengeksekusinya sebagai acara yang ditulis, seperti file batch. Mereka juga memungkinkan fungsi yang jauh lebih bermanfaat, seperti penggantian perintah. Anda dapat menjalankan perintah, seperti tanggal, dan menggunakannya sebagai bagian dari skema penamaan file. Anda dapat mengotomatiskan cadangan dan setiap file yang disalin dapat memiliki tanggal saat ini ditambahkan ke akhir namanya. Script juga bukan hanya pemanggilan perintah. Mereka program dalam hak mereka sendiri. Scripting memungkinkan Anda untuk menggunakan fungsi pemrograman - seperti loop 'untuk', pernyataan if / then / else, dan sebagainya - langsung di dalam antarmuka sistem operasi Anda. Dan, Anda tidak perlu belajar bahasa lain karena Anda menggunakan apa yang sudah Anda ketahui: baris perintah.
Itu benar-benar kekuatan scripting, saya pikir. Anda dapat memprogram dengan perintah yang sudah Anda ketahui, sambil mempelajari kebutuhan pokok sebagian besar bahasa pemrograman utama. Perlu melakukan sesuatu yang berulang dan membosankan? Script itu! Perlu pintasan untuk perintah yang benar-benar berbelit-belit? Script itu! Ingin membuat antarmuka baris perintah yang sangat mudah digunakan untuk sesuatu? Script itu!
Sebelum kamu memulai
Sebelum kita memulai seri skrip kita, mari kita bahas beberapa informasi dasar. Kami akan menggunakan bash shell, yang digunakan sebagian besar distribusi Linux secara asli. Bash juga tersedia untuk pengguna Mac OS dan Cygwin di Windows. Karena ini sangat universal, Anda harus dapat membuat skrip terlepas dari platform Anda. Selain itu, selama semua perintah yang direferensikan ada, skrip dapat bekerja pada beberapa platform dengan sedikit atau tanpa tweaker diperlukan.
Scripting dapat dengan mudah menggunakan hak istimewa "administrator" atau "superuser", jadi yang terbaik adalah menguji skrip sebelum Anda membuatnya berfungsi. Juga gunakan akal sehat, seperti memastikan Anda memiliki cadangan file yang akan Anda jalankan skrip. Ini juga sangat penting untuk menggunakan opsi yang tepat, seperti -i untuk perintah rm, sehingga interaksi Anda diperlukan. Ini dapat mencegah beberapa kesalahan buruk. Karena itu, baca skrip yang Anda unduh dan berhati-hatilah dengan data yang Anda miliki, kalau-kalau ada yang salah.
Pada intinya, skrip hanyalah file teks biasa. Anda dapat menggunakan editor teks apa saja untuk menulisnya: gedit, emacs, vim, nano ... Daftar ini berjalan terus. Pastikan untuk menyimpannya sebagai teks biasa, bukan sebagai teks kaya, atau dokumen Word. Karena saya suka kemudahan penggunaan yang disediakan nano, saya akan menggunakannya.
Izin dan Nama Script
Script dieksekusi seperti program, dan agar ini terjadi mereka harus memiliki izin yang tepat. Anda dapat membuat skrip dapat dieksekusi dengan menjalankan perintah berikut di atasnya:
chmod + x ~ / somecrazyfolder / script1
Ini akan memungkinkan siapa saja untuk menjalankan skrip tertentu. Jika Anda ingin membatasi penggunaannya hanya untuk pengguna Anda, Anda dapat menggunakan ini sebagai gantinya:
chmod u + x ~ / somecrazyfolder / script1
Untuk menjalankan skrip ini, Anda harus melakukan cd ke direktori yang benar dan kemudian menjalankan skrip seperti ini:
cd ~ / seseorangfoldfolder
./ script1
Untuk mempermudah, Anda dapat menempatkan skrip di folder "bin" di direktori home Anda:
~ / bin
Di banyak distro modern, folder ini tidak lagi dibuat secara default, tetapi Anda dapat membuatnya. Ini biasanya tempat file yang dapat dieksekusi disimpan milik pengguna Anda dan bukan milik pengguna lain. Dengan menempatkan skrip di sini, Anda dapat menjalankannya dengan mengetikkan namanya, seperti halnya perintah lain, alih-alih harus berkeliling dan menggunakan awalan './'.
Sebelum Anda memberi nama skrip, Anda harus mengikuti perintah berikut untuk memeriksa apakah Anda memiliki program yang diinstal yang menggunakan nama itu:
yang [memerintahkan]
Banyak orang menamai skrip awal mereka "test," dan ketika mereka mencoba menjalankannya di command-line, tidak ada yang terjadi. Ini karena bertentangan dengan perintah tes, yang tidak melakukan apa-apa tanpa argumen. Selalu pastikan nama skrip Anda tidak bertentangan dengan perintah, jika tidak, Anda mungkin akan melakukan hal-hal yang tidak ingin Anda lakukan!
Pedoman Scripting
Seperti yang saya sebutkan sebelumnya, setiap file skrip pada dasarnya adalah teks biasa. Itu tidak berarti Anda dapat menulis apa yang Anda inginkan semua mau tak mau. Ketika sebuah file teks dicoba untuk dieksekusi, shell akan menguraikannya sebagai petunjuk apakah itu skrip atau tidak, dan bagaimana menangani semuanya dengan benar. Karena itu, ada beberapa pedoman yang perlu Anda ketahui.
- Setiap skrip harus dengan "#! / Bin / bash"
- Setiap baris baru adalah perintah baru
- Baris komentar dimulai dengan #
- Perintah dikelilingi oleh ()
Hack Hash-Bang
Ketika shell mem-parsing melalui file teks, cara paling langsung untuk mengidentifikasi file sebagai skrip adalah dengan membuat baris pertama Anda:
#! / bin / bash
Jika Anda menggunakan shell lain, gantikan jalurnya di sini. Baris komentar dimulai dengan hashes (#), tetapi menambahkan bang (!) Dan path shell setelahnya adalah semacam hack yang akan mem-bypass aturan komentar ini dan akan memaksa script untuk mengeksekusi dengan shell yang ditunjuk oleh baris ini.
Baris Baru = Perintah Baru
Setiap baris baru harus dianggap sebagai perintah baru, atau komponen dari sistem yang lebih besar. Jika / maka / pernyataan lain, misalnya, akan mengambil alih beberapa baris, tetapi setiap komponen dari sistem itu berada di baris baru. Jangan biarkan perintah masuk ke baris berikutnya, karena ini dapat memotong perintah sebelumnya dan memberi Anda kesalahan di baris berikutnya. Jika editor teks Anda melakukan itu, Anda harus mematikan pembungkus teks agar berada di sisi yang aman. Anda dapat mematikan pembungkus teks dalam nano bit dengan menekan ALT + L.
Sering Berkomentar dengan #s
Jika Anda memulai sebuah baris dengan #, maka garis tersebut diabaikan. Ini mengubahnya menjadi baris komentar, di mana Anda dapat mengingatkan diri sendiri tentang apa output dari perintah sebelumnya, atau apa yang akan dilakukan perintah selanjutnya. Sekali lagi, matikan pembungkus teks, atau pisahkan komentar Anda menjadi beberapa baris yang semuanya dimulai dengan hash. Menggunakan banyak komentar adalah praktik yang baik untuk dijaga, karena memungkinkan Anda dan orang lain mengubah skrip Anda dengan lebih mudah. Satu-satunya pengecualian adalah hack Hash-Bang yang disebutkan di atas, jadi jangan ikuti #s dengan! S. ;-)
Perintah Dikelilingi Oleh Kurung
Di masa lalu, pergantian perintah dilakukan dengan tanda centang tunggal (', bagikan tombol ~). Kami belum akan menyentuh ini, tetapi karena kebanyakan orang pergi dan mengeksplorasi setelah mempelajari dasar-dasarnya, mungkin ide yang baik untuk menyebutkan bahwa Anda harus menggunakan tanda kurung. Ini terutama karena ketika Anda bersarang - menempatkan perintah di dalam perintah lain - tanda kurung bekerja lebih baik.
Naskah Pertama Anda
Mari kita mulai dengan skrip sederhana yang memungkinkan Anda untuk menyalin file dan menambahkan tanggal ke akhir nama file. Sebut saja "datecp". Pertama, mari kita periksa untuk melihat apakah nama itu bertentangan dengan sesuatu:
Anda dapat melihat bahwa tidak ada output dari perintah yang mana, jadi kita siap untuk menggunakan nama ini.
Mari kita buat file kosong di folder ~ / bin:
sentuh ~ / bin / datecp
Dan, mari kita ubah izin sekarang, sebelum kita lupa:
Mari kita mulai membuat skrip kita. Buka file itu di editor teks pilihan Anda. Seperti yang saya katakan, saya suka kesederhanaan nano.
nano ~ / bin / datecp
Dan, mari kita lanjutkan dan letakkan di baris pertama prasyarat, dan komentar tentang apa yang dilakukan skrip ini.
Selanjutnya, mari kita deklarasikan variabel. Jika Anda pernah mengambil aljabar, Anda mungkin tahu apa itu aljabar. Variabel memungkinkan kita untuk menyimpan informasi dan melakukan sesuatu dengannya. Variabel dapat "berkembang" ketika direferensikan di tempat lain. Artinya, alih-alih menampilkan nama mereka, mereka akan menampilkan konten yang tersimpan. Anda nanti dapat mengatakan bahwa variabel yang sama untuk menyimpan informasi yang berbeda, dan setiap instruksi yang terjadi setelah itu akan menggunakan informasi baru. Tempat penampung yang benar-benar mewah.
Apa yang akan kita masukkan ke dalam variabel? Baiklah, mari kita simpan tanggal dan waktu! Untuk melakukan ini, kami akan memanggil perintah tanggal.
Lihatlah screenshot di bawah ini untuk bagaimana membangun output dari perintah date:
Anda dapat melihat bahwa dengan menambahkan variabel berbeda yang dimulai dengan%, Anda dapat mengubah output dari perintah ke apa yang Anda inginkan. Untuk informasi lebih lanjut, Anda dapat melihat halaman manual untuk perintah tanggal.
Mari kita gunakan iterasi terakhir dari perintah date, "date +% m_% d_% y-% H.% M.% S", dan gunakan itu dalam skrip kami.
Jika kita menyimpan skrip ini sekarang, kita bisa menjalankannya dan itu akan memberi kita output dari perintah tanggal seperti yang kita harapkan:
Tapi, mari kita lakukan sesuatu yang berbeda. Mari kita beri nama variabel, seperti date_formatted ke perintah ini. Sintaks yang tepat untuk ini adalah sebagai berikut:
variabel = $ (argumen opsi-perintah)
Dan bagi kami, kami akan membangunnya seperti ini:
date_formatted = $ (tanggal +% m_% d_% y-% H.% M.% S)
Inilah yang kami sebut substitusi perintah. Kami pada dasarnya memberi tahu bash bahwa setiap kali variabel "date_formatted" muncul, untuk menjalankan perintah di dalam tanda kurung. Lalu, apa pun output yang diberikan perintah harus ditampilkan alih-alih nama variabel, "date_formatted".
Berikut ini contoh skrip dan hasilnya:
Perhatikan bahwa ada dua ruang di output. Ruang di dalam tanda kutip dari perintah gema dan ruang di depan variabel keduanya ditampilkan. Jangan gunakan spasi jika Anda tidak ingin mereka muncul. Juga perhatikan bahwa tanpa menambahkan baris "gema" ini, skrip tidak akan menghasilkan keluaran sama sekali.
Mari kita kembali ke skrip kita. Selanjutnya mari kita tambahkan bagian penyalinan dari perintah.
cp -iv $ 1 $ 2. $ date_formatted
Ini akan memunculkan perintah copy, dengan opsi -i dan -v. Yang pertama akan meminta Anda untuk verifikasi sebelum menimpa file, dan yang terakhir akan menampilkan apa yang sedang terjadi pada baris perintah.
Selanjutnya, Anda dapat melihat saya telah menambahkan opsi "$ 1". Saat membuat skrip, tanda dolar ($) diikuti oleh angka akan menunjukkan argumen skrip yang bernomor saat dipanggil. Misalnya, dalam perintah berikut:
cp -iv Trogdor2.mp3 ringtone.mp3
Argumen pertama adalah "Trogdor2.mp3" dan argumen kedua adalah "ringtone.mp3".
Melihat kembali skrip kami, kami dapat melihat bahwa kami mereferensikan dua argumen:
Ini berarti bahwa ketika kita menjalankan skrip, kita harus memberikan dua argumen agar skrip berjalan dengan benar. Argumen pertama, $ 1, adalah file yang akan disalin, dan diganti sebagai argumen pertama perintah "cp -iv".
Argumen kedua, $ 2, akan bertindak sebagai file output untuk perintah yang sama. Tetapi, Anda juga dapat melihat bahwa itu berbeda. Kami telah menambahkan titik dan kami telah merujuk variabel "date_formatted" dari atas. Penasaran dengan apa yang dilakukannya ini?
Inilah yang terjadi ketika skrip dijalankan:
Anda dapat melihat bahwa file output terdaftar sebagai apa pun yang saya masukkan seharga $ 2, diikuti dengan tanda titik, kemudian output dari perintah tanggal! Masuk akal, benar?
Sekarang ketika saya menjalankan perintah datecp, itu akan menjalankan skrip ini dan memungkinkan saya untuk menyalin file apa pun ke lokasi baru, dan secara otomatis menambahkan tanggal dan waktu ke akhir nama file. Berguna untuk pengarsipan barang!
Script Shell adalah inti dari membuat OS Anda bekerja untuk Anda. Anda juga tidak perlu belajar bahasa pemrograman baru untuk mewujudkannya. Coba skrip dengan beberapa perintah dasar di rumah dan mulailah memikirkan untuk apa Anda dapat menggunakannya.
Apakah Anda skrip? Punya saran untuk pemula? Bagikan pemikiran Anda dalam komentar! Masih banyak yang akan datang dalam seri ini!