Panduan Pemula untuk Pembuatan Skrip Shell: Dasar-dasar

Istilah "shell scripting" sering disebutkan di forum Linux, tetapi banyak pengguna yang tidak terbiasa dengannya. Mempelajari metode pemrograman yang mudah dan hebat ini dapat membantu Anda menghemat waktu, mempelajari baris perintah dengan lebih baik, dan menghilangkan tugas manajemen file yang membosankan.

Apa Itu Shell Scripting?

Menjadi pengguna Linux berarti Anda bermain-main dengan baris perintah. Suka atau tidak, ada beberapa hal yang dilakukan dengan lebih mudah melalui antarmuka ini daripada dengan mengarahkan dan mengklik. Semakin banyak Anda menggunakan dan mempelajari baris perintah, semakin Anda melihat potensinya. Nah, baris perintah itu sendiri adalah sebuah program: shell. Sebagian besar distro Linux saat ini menggunakan Bash, dan inilah yang sebenarnya Anda masukkan ke dalam perintah.

Sekarang, beberapa dari Anda yang menggunakan Windows sebelum menggunakan Linux mungkin mengingat file batch. Ini adalah file teks kecil yang dapat 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 saat Anda tidak dapat membuka folder sistem atau membuat pintasan. File batch di Windows, meskipun berguna, adalah tiruan skrip shell yang murah.

Skrip shell memungkinkan kita untuk memprogram perintah dalam rantai dan membuat sistem menjalankannya sebagai peristiwa dalam skrip, seperti file batch. Mereka juga memungkinkan fungsi yang jauh lebih berguna, seperti penggantian perintah. Anda dapat menjalankan perintah, seperti tanggal, dan menggunakan keluarannya sebagai bagian dari skema penamaan file. Anda dapat mengotomatiskan pencadangan dan setiap file yang disalin dapat memiliki tanggal saat ini ditambahkan ke akhir namanya. Skrip bukan hanya pemanggilan perintah saja. Mereka adalah program dengan hak mereka sendiri. Scripting memungkinkan Anda untuk menggunakan fungsi pemrograman - seperti loop 'for', 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 skrip, saya pikir. Anda bisa memprogram dengan perintah yang sudah Anda ketahui, sambil mempelajari pokok-pokok dari sebagian besar bahasa pemrograman utama. Perlu melakukan sesuatu yang berulang dan membosankan? Buat skrip! Butuh jalan pintas untuk perintah yang sangat berbelit-belit? Buat skrip! Ingin membuat antarmuka baris perintah yang sangat mudah digunakan untuk sesuatu? Buat skrip!

Sebelum kamu memulai

Sebelum kita memulai seri scripting kita, mari kita bahas beberapa informasi dasar. Kami akan menggunakan shell bash, yang digunakan sebagian besar distribusi Linux secara native. Bash tersedia untuk pengguna Mac OS dan Cygwin di Windows juga. Karena ini sangat universal, Anda harus dapat membuat skrip apa pun platform Anda. Selain itu, selama semua perintah yang direferensikan ada, skrip dapat bekerja pada banyak platform dengan sedikit atau tanpa penyesuaian.

Pembuatan skrip dapat dengan mudah menggunakan hak istimewa "administrator" atau "pengguna super", jadi yang terbaik adalah menguji skrip sebelum Anda menggunakannya. Gunakan juga akal sehat, seperti memastikan Anda memiliki cadangan file yang akan Anda gunakan untuk menjalankan skrip. Ini juga sangat penting untuk menggunakan opsi yang tepat, seperti –i untuk perintah rm, sehingga interaksi Anda diperlukan. Ini dapat mencegah beberapa kesalahan besar. Karena itu, baca skrip yang Anda unduh dan berhati-hatilah dengan data yang Anda miliki, untuk berjaga-jaga jika terjadi kesalahan.

Pada intinya, skrip hanyalah file teks biasa. Anda dapat menggunakan editor teks apa pun untuk menulisnya: gedit, emacs, vim, nano… Daftar ini terus berlanjut. Pastikan untuk menyimpannya sebagai teks biasa, bukan sebagai teks kaya, atau dokumen Word. Karena saya menyukai kemudahan penggunaan yang disediakan nano, saya akan menggunakannya.

Izin dan Nama Skrip

Skrip dijalankan seperti program, dan agar hal ini terjadi, mereka harus memiliki izin yang sesuai. Anda dapat membuat skrip dapat dieksekusi dengan menjalankan perintah berikut di atasnya:

chmod + x ~ / somecrazyfolder / script

Ini akan memungkinkan siapa saja untuk menjalankan skrip tertentu itu. Jika Anda ingin membatasi penggunaannya hanya untuk pengguna Anda, Anda dapat menggunakan ini sebagai gantinya:

chmod u + x ~ / somecrazyfolder / script

Untuk menjalankan skrip ini, Anda harus melakukan cd ke direktori yang benar dan kemudian menjalankan skrip seperti ini:

cd ~ / somecrazyfolder

./script1

Untuk membuat segalanya lebih nyaman, 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. Biasanya di sinilah 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 perintah lain, daripada harus berpindah-pindah 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 [perintah]

Banyak orang menamai skrip awal mereka "test", dan ketika mereka mencoba menjalankannya di baris perintah, tidak ada yang terjadi. Ini karena ini bertentangan dengan perintah pengujian, yang tidak melakukan apa pun 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 Pembuatan Skrip

Seperti yang saya sebutkan sebelumnya, setiap file skrip pada dasarnya adalah teks biasa. Itu tidak berarti Anda dapat menulis apa yang Anda inginkan secara sembarangan. Ketika file teks dicoba untuk dieksekusi, shell akan menguraikannya untuk petunjuk apakah itu skrip atau tidak, dan bagaimana menangani semuanya dengan benar. Karena itu, ada beberapa pedoman yang perlu Anda ketahui.

  1. Setiap skrip harus dengan "#! / Bin / bash"
  2. Setiap baris baru adalah perintah baru
  3. Baris komentar dimulai dengan #
  4. Perintah dikelilingi oleh ()

Hack Hash-Bang

Saat shell mem-parsing file teks, cara paling langsung untuk mengidentifikasi file tersebut sebagai skrip adalah dengan membuat baris pertama Anda:

#! / bin / bash

Jika Anda menggunakan shell lain, gantikan jalurnya di sini. Baris komentar dimulai dengan hash (#), tetapi menambahkan bang (!) Dan jalur shell setelahnya adalah semacam peretasan yang akan melewati aturan komentar ini dan akan memaksa skrip untuk dieksekusi dengan shell yang ditunjukkan oleh baris ini.

Baris Baru = Perintah Baru

Setiap baris baru harus dianggap sebagai perintah baru, atau komponen dari sistem yang lebih besar. Pernyataan if / then / else, misalnya, akan mengambil alih beberapa baris, tetapi setiap komponen dari sistem itu berada di baris baru. Jangan biarkan sebuah perintah mengalir ke baris berikutnya, karena ini dapat memotong perintah sebelumnya dan memberi Anda kesalahan pada baris berikutnya. Jika editor teks Anda melakukan itu, Anda harus mematikan pembungkusan teks agar aman. Anda dapat mematikan pembungkusan teks dalam nano bit menekan ALT + L.

Komentar Sering dengan #s

Jika Anda memulai baris dengan #, baris 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 oleh perintah selanjutnya. Sekali lagi, matikan pembungkusan teks, atau bagi komentar Anda menjadi beberapa baris yang semuanya dimulai dengan hash. Menggunakan banyak komentar adalah praktik yang baik untuk dipertahankan, karena memungkinkan Anda dan orang lain mengubah skrip Anda dengan lebih mudah. Satu-satunya pengecualian adalah peretasan Hash-Bang yang disebutkan di atas, jadi jangan ikuti #s dengan! S. ;-)

Perintah Dikelilingi Dengan Tanda Kurung

Di masa lalu, penggantian perintah dilakukan dengan tanda centang tunggal (`, share the ~ key). Kami belum akan membahas ini, tetapi karena kebanyakan orang pergi dan menjelajah setelah mempelajari dasar-dasarnya, mungkin ada baiknya untuk menyebutkan bahwa Anda harus menggunakan tanda kurung sebagai gantinya. Ini terutama karena ketika Anda menumpuk - meletakkan perintah di dalam perintah lain - tanda kurung berfungsi lebih baik.

Script Pertama Anda

Mari kita mulai dengan skrip sederhana yang memungkinkan Anda menyalin file dan menambahkan tanggal ke akhir nama file. Sebut saja "datecp". Pertama, mari kita periksa apakah nama itu bentrok dengan sesuatu:

Anda dapat melihat bahwa tidak ada keluaran dari perintah yang mana, jadi kita siap untuk menggunakan nama ini.

Mari buat file kosong di folder ~ / bin:

sentuh ~ / bin / datecp

Dan, mari kita ubah izinnya 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. Variabel memungkinkan kita menyimpan informasi dan melakukan berbagai hal dengannya. Variabel bisa "meluas" saat direferensikan di tempat lain. Artinya, alih-alih menampilkan namanya, mereka akan menampilkan konten yang disimpan. Anda kemudian dapat memberitahu variabel yang sama untuk menyimpan informasi yang berbeda, dan instruksi apapun yang muncul setelah itu akan menggunakan informasi baru. Ini adalah placeholder yang sangat mewah.

Apa yang akan kita masukkan variabel? Baiklah, mari simpan tanggal dan waktunya! Untuk melakukan ini, kami akan memanggil perintah tanggal.

Lihatlah tangkapan layar di bawah ini untuk cara membuat output dari perintah tanggal:

Anda dapat melihat bahwa dengan menambahkan variabel berbeda yang dimulai dengan%, Anda dapat mengubah keluaran perintah menjadi apa yang Anda inginkan. Untuk informasi lebih lanjut, Anda dapat melihat halaman manual untuk perintah tanggal.

Mari kita gunakan iterasi terakhir dari perintah tanggal, "date +% m_% d_% y-% H.% M.% S", dan gunakan itu dalam skrip kita.

Jika kita menyimpan skrip ini sekarang, kita dapat menjalankannya dan itu akan memberi kita keluaran dari perintah tanggal seperti yang kita harapkan:

Tapi, mari lakukan sesuatu yang berbeda. Mari beri nama variabel, seperti date_formatted ke perintah ini. Sintaks yang tepat untuk ini adalah sebagai berikut:

variabel = $ (argumen perintah –pilihan)

Dan bagi kami, kami akan membuatnya seperti ini:

date_formatted = $ (tanggal +% m_% d_% y-% H.% M.% S)

Inilah yang kami sebut substitusi perintah. Kami pada dasarnya memberitahu bash bahwa setiap kali variabel "date_formatted" muncul, untuk menjalankan perintah di dalam tanda kurung. Kemudian, output apa pun yang diberikan perintah harus ditampilkan sebagai ganti nama variabel, "date_formatted".

Berikut ini contoh skrip dan keluarannya:

Perhatikan bahwa ada dua spasi di keluaran. Spasi di dalam tanda petik perintah echo dan spasi di depan variabel keduanya ditampilkan. Jangan gunakan spasi jika Anda tidak ingin mereka muncul. Perhatikan juga bahwa tanpa baris "echo" yang ditambahkan ini, skrip sama sekali tidak akan menghasilkan keluaran.

Mari kembali ke naskah kita. Selanjutnya mari tambahkan di bagian penyalinan perintah.

cp –iv $ 1 $ 2. $ date_formatted

Ini akan memanggil 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 down pada baris perintah.

Selanjutnya, Anda dapat melihat saya telah menambahkan opsi "$ 1". Saat membuat skrip, tanda dolar ($) diikuti dengan angka akan menunjukkan argumen bernomor itu ketika 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:

Artinya, saat menjalankan skrip, kita perlu memberikan dua argumen agar skrip dapat 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 keluaran untuk perintah yang sama. Tapi, Anda juga bisa melihat bahwa itu berbeda. Kami telah menambahkan titik dan kami mereferensikan variabel "date_formatted" dari atas. Penasaran seperti apa fungsinya?

Inilah yang terjadi ketika skrip dijalankan:

Anda dapat melihat bahwa file keluaran terdaftar sebagai apa pun yang saya masukkan sebesar $ 2, diikuti oleh titik, lalu keluaran dari perintah tanggal! Masuk akal, bukan?

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 mengarsipkan barang!

Skrip shell adalah inti dari membuat OS Anda bekerja untuk Anda. Anda juga tidak perlu mempelajari bahasa pemrograman baru untuk mewujudkannya. Cobalah membuat skrip dengan beberapa perintah dasar di rumah dan mulailah memikirkan untuk apa Anda dapat menggunakannya.

Apakah Anda membuat naskah? Punya saran untuk pemula? Bagikan pemikiran Anda di komentar! Masih banyak lagi yang akan datang dalam seri ini!