23Aug
Istilah "shell scripting" sering disebutkan di forum Linux, namun banyak pengguna yang tidak mengenalnya. Mempelajari metode pemrograman yang mudah dan hebat ini dapat membantu Anda menghemat waktu, mempelajari baris perintah dengan lebih baik, dan membuang tugas pengelolaan file yang membosankan.
Apa itu Scripting Shell?
Menjadi pengguna Linux berarti Anda bermain-main dengan command-line. Suka atau tidak suka, hanya ada beberapa hal yang dilakukan dengan lebih mudah melalui antarmuka ini daripada dengan menunjuk dan mengklik. Semakin banyak yang Anda gunakan dan mempelajari command-line, semakin Anda melihat potensinya. Nah, command-line 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 ingat file batch. Ini adalah file teks kecil yang bisa Anda isi dengan perintah untuk dijalankan dan Windows akan menjalankannya secara bergantian. Ini adalah cara yang cerdas dan rapi untuk menyelesaikan beberapa hal, seperti permainan di lab komputer sekolah menengah Anda saat Anda tidak dapat membuka folder sistem atau membuat jalan pintas. Batch file di Windows, sementara berguna, adalah imitasi murah skrip shell. Shell Shell
memungkinkan kita untuk memprogram perintah dalam rantai dan membiarkan sistem mengeksekusi mereka sebagai acara skrip, seperti file batch. Mereka juga memungkinkan fungsi yang jauh lebih bermanfaat, seperti substitusi perintah. Anda dapat memanggil perintah, seperti tanggal, dan menggunakannya sebagai bagian dari skema penamaan file. Anda dapat mengotomatisasi backup dan setiap file yang disalin dapat memiliki tanggal saat ini ditambahkan ke akhir namanya. Script bukan hanya doa perintah saja. Mereka adalah program dengan hak mereka sendiri. Scripting memungkinkan Anda untuk menggunakan fungsi pemrograman - seperti 'untuk' loop, jika pernyataan /then/ yang lain, 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 kira. Anda bisa memprogram dengan perintah yang sudah Anda ketahui, sambil belajar pokok dari sebagian besar bahasa pemrograman utama. Perlu melakukan sesuatu yang berulang dan membosankan? Script itu! Butuh jalan pintas untuk perintah yang benar-benar berbelit-belit? Script itu! Ingin membangun antarmuka command-line yang sangat mudah digunakan untuk sesuatu? Script itu!
Sebelum Anda Memulai
Sebelum memulai seri scripting, mari kita bahas beberapa informasi dasar. Kami akan menggunakan shell bash, yang sebagian besar distribusi Linux digunakan secara native. Bash tersedia untuk pengguna Mac OS dan Cygwin di Windows juga. Karena begitu universal, Anda harus bisa script terlepas dari platform Anda. Selain itu, asalkan semua perintah yang ada dirujuk, skrip dapat bekerja pada banyak platform tanpa sedikit tweaker yang diperlukan.
Scripting dapat dengan mudah menggunakan hak istimewa "administrator" atau "superuser", jadi sebaiknya uji skrip sebelum Anda menggunakannya. Juga gunakan akal sehat, seperti memastikan Anda memiliki backup file yang akan Anda jalankan naskahnya. Ini juga sangat penting untuk menggunakan pilihan yang tepat, seperti -i untuk perintah rm, sehingga interaksi Anda diperlukan. Hal ini bisa mencegah beberapa kesalahan buruk. Dengan demikian, baca skrip yang Anda unduh dan hati-hati dengan data yang Anda miliki, kalau-kalau ada yang salah.
Pada intinya, skrip hanyalah file teks biasa. Anda bisa menggunakan editor teks untuk menuliskannya: 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 diberikan nano, saya akan menggunakannya.
Script Permissions and Names
Script dijalankan seperti program, dan agar hal ini terjadi, mereka harus memiliki hak akses yang benar. Anda dapat membuat skrip yang dapat dijalankan dengan menjalankan perintah berikut:
chmod + x ~ /somecrazyfolder/ script1
Ini akan memungkinkan seseorang 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 memasukkan direktori yang tepat dan kemudian menjalankan skrip seperti ini.:
cd ~ / somecrazyfolder
. /script1
Untuk membuat segalanya lebih mudah, Anda dapat menempatkan skrip di folder "bin" di direktori home Anda:
~ / bin
Di banyak distro modern, folder ini tidak lagi dibuat secara default, tapi Anda bisa membuatnya. Ini biasanya dimana file eksekusi disimpan milik pengguna Anda dan bukan pengguna lain. Dengan menempatkan skrip di sini, Anda bisa menjalankannya dengan mengetikkan nama mereka, seperti perintah lainnya, alih-alih harus mengitari dan menggunakan awalan './'.
Sebelum memberi nama naskah, Anda harus mengikuti perintah berikut untuk memeriksa apakah Anda menginstal program yang menggunakan nama itu:
yang [perintahnya]
Banyak orang menamai skrip awal mereka "uji coba", dan saat mereka mencobajalankan di command-line, tidak ada yang terjadi. Ini karena bertentangan dengan perintah uji, yang tidak melakukan apa pun 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 script pada dasarnya adalah teks biasa. Itu tidak berarti Anda bisa menulis apa yang Anda inginkan tanpa banyak bicara. Saat file teks dicoba dijalankan, kerang akan menguraiinya untuk petunjuk apakah skripnya atau tidak, dan bagaimana menangani semuanya dengan benar. Karena itu, ada beberapa panduan yang perlu Anda ketahui.
- Setiap naskah seharusnya sesuai dengan "#!/bin/ bash "
- Setiap baris baru adalah perintah baru
- Comment lines dimulai dengan #
- Commands dikelilingi oleh()
The Hash-Bang Hack
Ketika sebuah shell mem-parsing melalui file teks, cara yang paling langsung untuk mengidentifikasi file sebagaiscript adalah dengan membuat baris pertama Anda:
#!/bin/ bash
Jika Anda menggunakan shell lain, ganti jalurnya di sini. Baris komentar dimulai dengan hash( #), namun menambahkan bang( !) Dan jalur shell setelah itu adalah semacam hack yang akan melewati aturan komentar ini dan akan memaksa skrip untuk mengeksekusi dengan shell yang ditunjukkan oleh garis ini.
New Line = Command Baru
Setiap baris baru harus dianggap sebagai perintah baru, atau komponen dari sistem yang lebih besar. Jika pernyataan /then/ yang lain, misalnya, akan mengambil alih banyak jalur, namun setiap komponen sistem itu ada dalam baris baru. Jangan biarkan perintah berdarah ke baris berikutnya, karena ini bisa memotong perintah sebelumnya dan memberi Anda kesalahan pada baris berikutnya. Jika editor teks Anda melakukan itu, Anda harus mematikan pembungkus teks agar tetap berada di sisi yang aman. Anda bisa mematikan pembungkus teks dalam bit nano yang menabrak ALT + L.
Komentar Seringkali dengan #s
Jika Anda memulai sebuah baris dengan #, barisnya akan diabaikan. Ini mengubahnya menjadi baris komentar, di mana Anda dapat mengingatkan diri Anda dari apa output dari perintah sebelumnya, atau apa perintah berikutnya yang akan dilakukan. Sekali lagi, matikan pembungkus teks, atau hentikan komentar ke beberapa baris yang dimulai dengan hash. Menggunakan banyak komentar adalah praktik yang baik untuk dijaga, karena ini memungkinkan Anda dan orang lain men-tweak skrip Anda dengan lebih mudah. Satu-satunya pengecualian adalah hack Hash-Bang tersebut, jadi jangan ikuti #s with! S.;-) Perintah
Dikelilingi oleh Tanda Tangan
Di hari tua, substitusi perintah dilakukan dengan tanda centang tunggal( `, bagikan tombol ~).Kami tidak akan menyentuh hal ini, tapi karena kebanyakan orang pergi dan menjelajahi setelah mempelajari dasar-dasarnya, mungkin ide bagus untuk menyebutkan bahwa Anda sebaiknya menggunakan tanda kurung. Hal ini terutama karena ketika Anda meletakkan perintah di dalam perintah lain - tanda kurung bekerja lebih baik.
Skrip Pertama Anda
Mari kita mulai dengan skrip sederhana yang memungkinkan Anda menyalin file dan menambahkan tanggal sampai akhir nama file. Mari kita menyebutnya "datecp".Pertama, mari periksa apakah nama itu bertentangan dengan sesuatu:
Anda dapat melihat bahwa tidak ada keluaran dari perintah mana, jadi kami siap untuk menggunakan nama ini.
Mari kita membuat file kosong di folder ~ / bin:
sentuh ~ /bin/ datecp
Dan, mari kita ganti izinnya sekarang, sebelum kita lupa:
Mari kita mulai membangun skrip kita saat itu. Bukalah file itu di editor teks pilihan Anda. Seperti saya katakan, saya menyukai kesederhanaan nano.
nano ~ /bin/ datecp
Dan, ayo maju dan letakkan di baris pertama prasyarat, dan komentar tentang apa yang dilakukan skrip ini.
Selanjutnya, mari kita nyatakan sebuah variabel. Jika Anda pernah menggunakan aljabar, Anda mungkin tahu apa itu. Variabel memungkinkan kita menyimpan informasi dan melakukan berbagai hal dengan itu. Variabel dapat "diperluas" bila dirujuk di tempat lain. Artinya, alih-alih menampilkan nama mereka, mereka akan menampilkan isi yang tersimpan. Anda kemudian dapat memberi tahu variabel yang sama untuk menyimpan informasi yang berbeda, dan setiap instruksi yang terjadi setelah itu akan menggunakan informasi baru. Ini adalah tempat yang sangat mewah.
Apa yang akan kita masukkan ke dalam variabel? Baiklah, mari simpan tanggal dan waktu! 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 menjadi sesuai keinginan Anda. Untuk informasi lebih lanjut, Anda bisa melihat halaman manual untuk perintah tanggal.
Mari kita gunakan iterasi terakhir dari perintah tanggal, "date +% m_% d_% y-% H.% M.% S", dan gunakan itu di skrip kami.
Jika kita ingin menyimpan naskah ini sekarang, kita bisa menjalankannya dan itu akan memberi kita keluaran dari perintah tanggal seperti yang kita harapkan:
Tapi, mari kita melakukan sesuatu yang berbeda. Mari beri nama variabel, seperti date_formatted ke perintah ini. Sintaks yang tepat untuk ini adalah sebagai berikut:
variable = $( argumen command -options)
Dan bagi kami, kami akan membangunnya seperti ini:
date_formatted = $( date +% m_% d_% y-% H.%M.% S)
Inilah yang kita sebut substitusi perintah. Kami pada dasarnya mengatakan bash bahwa kapan pun variabel "date_formatted" muncul, untuk menjalankan perintah di dalam tanda kurung. Lalu, output apa pun yang diberikan perintah harus ditampilkan, bukan nama variabelnya, "date_formatted".
Berikut adalah contoh skrip dan hasilnya:
Perhatikan bahwa ada dua spasi pada output. Ruang di dalam tanda kutip perintah gema dan ruang di depan variabel sama-sama ditampilkan. Jangan gunakan spasi jika Anda tidak ingin mereka muncul. Perhatikan juga bahwa tanpa ini menambahkan baris "echo", naskahnya sama sekali tidak menghasilkan output.
Mari kembali ke naskah kita. Mari tambahkan selanjutnya 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 melakukan verifikasi sebelum menimpa sebuah file, dan yang terakhir akan menampilkan apa yang ada pada command-line.
Selanjutnya, Anda dapat melihat bahwa saya telah menambahkan opsi "$ 1".Saat skrip, tanda dolar( $) diikuti oleh angka akan menunjukkan argumen bernomor naskah 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 naskah kita, kita dapat melihat bahwa kita merujuk dua argumen:
Ini berarti bahwa ketika kita menjalankan skenarionya, kita harus menyediakan dua argumen agar skrip dijalankan dengan benar. Argumen pertama, $ 1, adalah file yang akan disalin, dan diganti sebagai argumen pertama "cp -iv".
Argumen kedua, $ 2, akan bertindak sebagai file output untuk perintah yang sama. Tapi, Anda juga bisa melihat bahwa itu berbeda. Kami telah menambahkan sebuah periode dan kami telah mereferensikan variabel "date_formatted" dari atas. Penasaran seperti apa ini?
Inilah yang terjadi saat skrip dijalankan:
Anda dapat melihat bahwa file output terdaftar sebagai apapun yang saya masukkan seharga $ 2, diikuti oleh sebuah periode, kemudian output dari perintah tanggal! Masuk akal, bukan?
Sekarang ketika saya menjalankan perintah datecp, ia akan menjalankan skrip ini dan mengizinkan saya untuk menyalin file apapun ke lokasi baru, dan secara otomatis menambahkan tanggal dan waktu untuk mengakhiri nama file. Berguna untuk pengarsipan barang!
Shell scripting adalah inti dari membuat OS Anda bekerja untuk Anda. Anda tidak perlu belajar bahasa pemrograman baru untuk mewujudkannya. Cobalah skrip dengan beberapa perintah dasar di rumah dan mulailah memikirkan apa yang dapat Anda gunakan untuk ini.
Apakah Anda skrip? Punya saran untuk pemula? Bagikan pemikiran Anda ke dalam komentar! Masih ada lagi seri ini!