Panduan Pemula untuk Memecahkan Kerangka: Dasar-dasar

Daftar Isi:

Panduan Pemula untuk Memecahkan Kerangka: Dasar-dasar
Panduan Pemula untuk Memecahkan Kerangka: Dasar-dasar

Video: Panduan Pemula untuk Memecahkan Kerangka: Dasar-dasar

Video: Panduan Pemula untuk Memecahkan Kerangka: Dasar-dasar
Video: Apple Vs Google Maps 2021 | iOS 15: Apple Maps finally caught up to Google Maps | New & Improved. - YouTube 2024, April
Anonim
Istilah "shell scripting" sering disebutkan di forum Linux, tetapi banyak pengguna yang tidak mengetahuinya. 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.
Istilah "shell scripting" sering disebutkan di forum Linux, tetapi banyak pengguna yang tidak mengetahuinya. 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 sesungguhnya 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 dapat 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 meminta perintah, seperti tanggal, dan menggunakan hasilnya 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 memprogram dalam hak mereka sendiri. Pembuatan skrip memungkinkan Anda untuk menggunakan fungsi pemrograman - seperti ‘for’ loops, 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.
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 meminta perintah, seperti tanggal, dan menggunakan hasilnya 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 memprogram dalam hak mereka sendiri. Pembuatan skrip memungkinkan Anda untuk menggunakan fungsi pemrograman - seperti ‘for’ loops, 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 kami, mari kita bahas beberapa informasi dasar. Kami akan menggunakan bash shell, yang sebagian besar distro Linux digunakan secara native. Bash tersedia untuk pengguna Mac OS dan Cygwin di Windows juga. Karena sangat universal, Anda seharusnya dapat membuat 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 hak istimewa "administrator" atau "superuser", jadi sebaiknya uji skrip sebelum Anda membuatnya berfungsi. Gunakan juga akal sehat, seperti memastikan Anda memiliki cadangan file yang akan Anda jalankan skripnya. Sangat penting juga 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 diberikan oleh 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 bisa menjalankannya dengan mengetikkan nama mereka, seperti perintah lain, daripada harus mengulang 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:

which [command]

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 dapat menulis apa yang Anda inginkan, semua mau tak mau. Ketika file teks dicoba untuk dieksekusi, shell akan mem-parsingnya untuk mencari petunjuk apakah skrip atau tidak, dan bagaimana menangani semuanya dengan benar. Karena itu, ada beberapa panduan yang perlu Anda ketahui.
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 file teks dicoba untuk dieksekusi, shell akan mem-parsingnya untuk mencari petunjuk apakah skrip atau tidak, 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 belum akan menyentuh hal ini, tetapi karena kebanyakan orang pergi dan menjelajahinya 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 mulai dengan skrip sederhana yang memungkinkan Anda menyalin file dan menambahkan tanggal ke akhir namafile. Mari kita menyebutnya "datecp". Pertama, mari kita periksa untuk melihat apakah nama itu bertentangan dengan sesuatu:

Anda dapat melihat bahwa tidak ada keluaran dari perintah apa, jadi kami siap untuk menggunakan nama ini.
Anda dapat melihat bahwa tidak ada keluaran dari perintah apa, jadi kami siap untuk menggunakan nama ini.

Mari buat file kosong di folder ~ / bin:

touch ~/bin/datecp

Dan, mari kita ubah izinnya sekarang, sebelum kita lupa:
Dan, mari kita ubah izinnya sekarang, sebelum kita lupa:
Mari mulai buat skrip kita. Buka file itu di editor teks pilihan Anda. Seperti saya katakan, saya suka kesederhanaan nano.
Mari mulai buat skrip kita. Buka file itu di editor teks pilihan Anda. Seperti saya katakan, saya suka kesederhanaan nano.

nano ~/bin/datecp

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

Selanjutnya, mari kita deklarasikan suatu 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.
Selanjutnya, mari kita deklarasikan suatu 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 waktu! Untuk melakukan ini, kami akan memanggil perintah tanggal.

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

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

Image
Image

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

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

variable=$(command –options arguments)

Dan bagi kami, kami akan membangunnya seperti ini:

date_formatted=$(date +%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".
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 hasilnya:

Image
Image
Perhatikan bahwa ada dua spasi dalam output. Ruang di dalam tanda kutip dari perintah echo dan ruang di depan variabel keduanya ditampilkan. Jangan menggunakan spasi jika Anda tidak ingin mereka muncul. Juga perhatikan bahwa tanpa ini ditambahkan "echo" garis, skrip akan benar-benar tidak memberikan output.
Perhatikan bahwa ada dua spasi dalam output. Ruang di dalam tanda kutip dari perintah echo dan ruang di depan variabel keduanya ditampilkan. Jangan menggunakan 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.
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‚ Äúringtone.mp3‚Äù.

Melihat kembali skrip kita, kita dapat melihat bahwa kita 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‚Äù.
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 mereferensi 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?
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 perlu mempelajari 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!

Direkomendasikan: