If-Koubou

Panduan Pemula untuk Shell Scripting: Dasar-dasar

Panduan Pemula untuk Shell Scripting: Dasar-dasar (Bagaimana caranya)

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

Apa itu Scripting Shell?

Menjadi pengguna Linux berarti Anda bermain-main dengan baris perintah. Suka atau tidak, hanya ada beberapa hal yang dilakukan jauh lebih mudah melalui antarmuka ini daripada dengan menunjuk dan mengklik. Semakin banyak Anda menggunakan dan mempelajari baris perintah, semakin Anda melihat potensinya. Nah, baris perintah itu sendiri adalah sebuah program: shell. Kebanyakan 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 ingat file batch. Ini adalah file teks kecil yang dapat Anda isi dengan perintah untuk dieksekusi dan Windows akan menjalankannya secara bergantian. Ini 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. Batch file di Windows, sementara berguna, adalah imitasi murah dari skrip shell.

Skrip shell memungkinkan kita untuk memprogram perintah dalam rantai dan membiarkan sistem menjalankannya sebagai peristiwa yang ditulis, sama seperti file batch. Mereka juga memungkinkan untuk fungsi yang jauh lebih berguna, seperti penggantian perintah. Anda dapat menjalankan perintah, seperti tanggal, dan menggunakan outputnya sebagai bagian dari skema penamaan file. Anda dapat mengotomatiskan cadangan dan setiap file yang disalin dapat memiliki tanggal saat ini ditambahkan ke bagian akhir namanya. Skrip juga bukan sekadar perintah perintah. Mereka adalah program yang benar. Scripting memungkinkan Anda untuk menggunakan fungsi-fungsi pemrograman - seperti 'for' loop, if / then / else statements, dan sebagainya - secara langsung di dalam antarmuka sistem operasi Anda. Dan, Anda tidak perlu mempelajari bahasa lain karena Anda menggunakan apa yang sudah Anda ketahui: baris perintah.

Itu benar-benar kekuatan scripting, saya pikir. Anda bisa memprogram dengan perintah yang sudah Anda ketahui, sambil mempelajari pokok bahasa pemrograman utama. Perlu melakukan sesuatu yang berulang dan membosankan? Buat skrip! Butuh jalan pintas untuk perintah yang benar-benar rumit? Buat skrip! Ingin membangun antarmuka baris-perintah yang sangat mudah digunakan untuk sesuatu? Buat skrip!

Sebelum kamu memulai

Sebelum memulai seri scripting, mari kita bahas beberapa informasi dasar. Kami akan menggunakan shell bash, yang kebanyakan distro Linux digunakan secara native. Bash tersedia untuk pengguna Mac OS dan Cygwin di Windows juga. Karena ini sangat universal, Anda harus dapat skrip terlepas dari platform Anda. Selain itu, selama semua perintah yang direferensikan ada, skrip dapat bekerja pada banyak platform dengan sedikit atau tidak perlu tweaker.

Scripting dapat dengan mudah menggunakan "administrator" atau "superuser" hak istimewa, jadi yang terbaik untuk menguji skrip sebelum Anda menempatkan mereka untuk bekerja. Juga gunakan akal sehat, seperti memastikan Anda memiliki cadangan file yang akan Anda jalankan skripnya. Ini juga sangat penting untuk menggunakan opsi yang tepat, seperti -i untuk perintah rm, sehingga interaksi Anda diperlukan. Ini dapat mencegah beberapa kesalahan yang buruk. Karena itu, baca skrip yang Anda unduh dan berhati-hatilah dengan data yang Anda miliki, untuk berjaga-jaga jika ada yang salah.

Pada intinya, skrip adalah file teks biasa. Anda dapat menggunakan editor teks 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 suka kemudahan penggunaan yang disediakan nano, saya akan menggunakannya.

Izin Skrip dan Nama

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

chmod + x ~ / somecrazyfolder / script1

Ini akan memungkinkan siapa pun 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 sesuai dan menjalankan skrip seperti ini:

cd ~ / somecrazyfolder

./script1

Untuk membuat semuanya lebih nyaman, Anda dapat menempatkan skrip dalam 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 pengguna lain. Dengan menempatkan skrip di sini, Anda dapat menjalankannya dengan mengetikkan namanya, seperti perintah lainnya, daripada harus meng-CD 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 mana [perintah]

Banyak orang menyebut skrip awal mereka "tes", dan ketika mereka mencoba menjalankannya di baris perintah, tidak ada yang terjadi. Ini karena konflik dengan perintah tes, yang tidak melakukan apa-apa tanpa argumen. Selalu pastikan nama skrip Anda tidak bertentangan dengan perintah, jika tidak Anda mungkin menemukan diri Anda melakukan hal-hal yang tidak ingin Anda lakukan!

Scripting Guidelines

Seperti yang saya sebutkan sebelumnya, setiap file skrip pada dasarnya adalah teks biasa. Itu tidak berarti Anda bisa menulis apa yang Anda inginkan, semua tidak mau. Ketika sebuah file teks dicoba untuk dieksekusi, shell akan mem-parsing mereka untuk mencari petunjuk apakah mereka skrip atau bukan, dan bagaimana menangani semuanya dengan benar. Karena itu, ada beberapa panduan 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

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 hash (#), tetapi menambahkan bang (!) Dan path shell setelah itu adalah semacam hack yang akan melewati aturan komentar ini dan akan memaksa skrip untuk mengeksekusi 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 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 berada di sisi yang aman. Anda dapat mematikan pembungkusan teks dalam bit nano dengan menekan ALT + L.

Komentar Seringkali dengan #s

Jika Anda memulai baris dengan #, garisnya diabaikan. Ini mengubahnya menjadi baris komentar, di mana Anda dapat mengingatkan diri Anda tentang apa output dari perintah sebelumnya, atau apa yang akan dilakukan oleh perintah berikutnya. Sekali lagi, matikan pembungkusan teks, atau bagikan 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 menyesuaikan skrip Anda dengan lebih mudah. Satu-satunya pengecualian adalah hack Hash-Bang yang disebutkan sebelumnya, jadi jangan ikuti #s dengan! S. ;-)

Perintah-Perintah Dikelilingi Oleh Parenthes

Di masa tua, penggantian perintah dilakukan dengan tanda centang tunggal (', berbagi kunci ~). Kami tidak akan menyentuh ini, tetapi karena kebanyakan orang pergi dan menjelajahi setelah mempelajari dasar-dasarnya, mungkin ide yang baik untuk menyebutkan bahwa Anda harus menggunakan tanda kurung sebagai gantinya. Ini terutama karena ketika Anda meletakkan - menempatkan perintah di dalam perintah lain - tanda kurung bekerja lebih baik.

Naskah Pertama Anda

Mari kita mulai dengan skrip sederhana yang memungkinkan Anda menyalin file dan menambahkan tanggal ke akhir nama file. Mari kita menyebutnya "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 buat file kosong di folder ~ / bin:

sentuh ~ / bin / datecp

Dan, mari kita ubah izinnya sekarang, sebelum kita lupa:

Mari kita mulai membangun skrip kita. Buka file itu di editor teks pilihan Anda. Seperti saya katakan, saya suka kesederhanaan nano.

nano ~ / bin / datecp

Dan, mari kita lanjutkan dan masukkan baris pertama prasyarat, dan komentar tentang apa yang dilakukan skrip ini.

Selanjutnya, mari kita mendeklarasikan variabel. Jika Anda pernah mengambil aljabar, Anda mungkin tahu apa itu. Suatu variabel memungkinkan kita untuk menyimpan informasi dan melakukan berbagai hal dengannya. Variabel dapat "diperluas" ketika dirujuk di tempat lain. Artinya, alih-alih menampilkan nama mereka, mereka akan menampilkan konten yang disimpan. Anda nantinya dapat mengatakan bahwa variabel yang sama untuk menyimpan informasi yang berbeda, dan setiap instruksi yang terjadi setelah itu akan menggunakan informasi baru. Ini adalah placeholder yang sangat mewah.

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

Lihatlah screenshot di bawah ini untuk bagaimana membangun output dari perintah tanggal:

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 gunakan iterasi terakhir dari perintah tanggal, "tanggal +% m_% d_% y-% H.% M.% S", dan gunakan itu di 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, ayo lakukan sesuatu yang berbeda. Mari beri nama variabel, seperti date_formatted ke perintah ini. Sintaks yang tepat untuk ini adalah sebagai berikut:

variable = $ (argumen perintah-opsi)

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 mengatakan bash bahwa setiap kali variabel "date_formatted" muncul, untuk menjalankan perintah di dalam tanda kurung. Kemudian, output apa pun yang diberikan perintah harus ditampilkan daripada nama variabel, "date_formatted".

Berikut ini contoh skrip dan outputnya:

Perhatikan bahwa ada dua spasi dalam output. Ruang di dalam tanda kutip dari perintah echo dan ruang di depan variabel keduanya ditampilkan. Jangan gunakan spasi jika Anda tidak ingin mereka muncul. Juga perhatikan bahwa tanpa ini ditambahkan "echo" garis, skrip akan benar-benar tidak memberikan output.

Mari kembali ke skrip kita. Mari kita tambahkan di bagian menyalin dari perintah.

cp -iv $ 1 $ 2. $ date_formatted

Ini akan memanggil perintah salin, 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”. Ketika scripting, tanda dolar ($) diikuti oleh angka akan menunjukkan argumen bernomor dari skrip ketika dipanggil. Misalnya, dalam perintah berikut:

cp -iv Trogdor2.mp3 ringtone.mp3

Argumen pertama adalah "Trogdor2.mp3" dan argumen kedua adalah "nada dering.mp3".

Melihat kembali skrip kami, kami dapat melihat bahwa kami merujuk dua argumen:

Ini berarti bahwa ketika kita 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 output untuk perintah yang sama. Tetapi, Anda juga dapat melihat bahwa itu berbeda. Kami telah menambahkan jangka waktu dan kami telah mereferensikan variabel "date_formatted" dari atas. Penasaran seperti apa ini?

Inilah yang terjadi ketika skrip dijalankan:

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

Sekarang ketika saya menjalankan perintah datecp, ia akan menjalankan skrip ini dan memungkinkan saya untuk menyalin file apa saja ke lokasi baru, dan secara otomatis menambahkan tanggal dan waktu untuk mengakhiri namafile. Berguna untuk mengarsipkan barang!

Shell scripting adalah inti dari pembuatan OS Anda untuk Anda. Anda tidak harus belajar bahasa pemrograman baru untuk mewujudkannya juga. Coba scripting dengan beberapa perintah dasar di rumah dan mulailah memikirkan apa yang dapat Anda gunakan untuk ini.

Apakah Anda skrip? Punya saran untuk pemula? Bagikan pendapat Anda di komentar! Masih ada lagi yang akan datang dalam seri ini!