Laman » bagaimana untuk » Panduan Permulaan untuk Shell Scripting The Basics

    Panduan Permulaan untuk Shell Scripting The Basics

    Istilah "skrip shell" sering disebut dalam forum Linux, tetapi banyak pengguna tidak begitu mengenalinya. Belajar kaedah pengaturcaraan yang mudah dan berkuasa ini dapat membantu anda menjimatkan masa, mempelajari garis arahan yang lebih baik, dan mengusir tugas pengurusan fail yang membosankan.

    Apa itu Scripting Shell?

    Menjadi pengguna Linux bermakna anda bermain-main dengan baris arahan. Suka atau tidak, hanya ada beberapa perkara yang dilakukan lebih mudah melalui antara muka ini berbanding dengan menunjuk dan mengklik. Semakin banyak anda menggunakan dan mempelajari barisan arahan, semakin banyak potensi yang anda lihat. Nah, baris arahan itu sendiri adalah program: shell. Kebanyakan distros Linux hari ini menggunakan Bash, dan inilah yang sebenarnya anda masukkan arahan.

    Sekarang, sesetengah daripada anda yang menggunakan Windows sebelum menggunakan Linux mungkin mengingati batch file. Ini adalah sedikit fail teks yang anda boleh isi dengan perintah untuk melaksanakan dan Windows akan menjalankannya pula. Ia adalah cara pintar dan kemas untuk mendapatkan beberapa perkara, seperti permainan lari di makmal komputer sekolah tinggi anda apabila anda tidak dapat membuka folder sistem atau membuat jalan pintas. Fail batch di Windows, sementara berguna, adalah tiruan murah skrip shell.

    Skrip Shell membolehkan kami untuk memerintahkan program dalam rantai dan sistem melaksanakannya sebagai acara skrip, seperti fail batch. Mereka juga membolehkan fungsi yang jauh lebih berguna, seperti penggantian perintah. Anda boleh membuat arahan, seperti tarikh, dan menggunakan output sebagai sebahagian daripada skema penamaan fail. Anda boleh mengautomasikan sandaran dan setiap fail yang disalin boleh mempunyai tarikh semasa yang ditambahkan pada akhir namanya. Skrip tidak semata-mata menyuruh arahan, sama ada. Mereka adalah program dalam hak mereka sendiri. Skrip membolehkan anda menggunakan fungsi pengaturcaraan - seperti 'untuk' gelung, jika / kemudian / kenyataan lain, dan sebagainya - terus di antara muka sistem operasi anda. Dan, anda tidak perlu belajar bahasa lain kerana anda menggunakan apa yang anda sudah tahu: baris perintah.

    Itulah kuasa skrip, saya fikir. Anda dapat program dengan arahan yang sudah anda ketahui, semasa belajar bahasa-bahasa utama kebanyakan bahasa pengaturcaraan. Perlu melakukan sesuatu yang berulang dan membosankan? Skrip itu! Perlukan pintasan untuk arahan yang benar? Skrip itu! Mahu membina antara muka baris arahan yang sangat mudah untuk sesuatu? Skrip itu!

    Sebelum awak bermula

    Sebelum kita memulakan siri skrip kami, mari kita lihat beberapa maklumat asas. Kami akan menggunakan shell bash, yang kebanyakan pengedaran Linux digunakan secara asli. Bash tersedia untuk pengguna Mac OS dan Cygwin pada Windows juga. Oleh kerana ia begitu universal, anda harus dapat skrip tanpa mengira platform anda. Di samping itu, selagi semua arahan yang dirujuk ada, skrip boleh berfungsi pada pelbagai platform dengan sedikit sehingga tidak diperlukan.

    Scripting dapat dengan mudah menggunakan keistimewaan "administrator" atau "superuser", jadi lebih baik untuk menguji skrip sebelum Anda mengerjakannya. Juga gunakan akal, seperti memastikan anda mempunyai sandaran fail yang anda hendak jalankan skrip. Ia juga sangat penting untuk menggunakan pilihan yang betul, seperti -i untuk arahan rm, supaya interaksi anda diperlukan. Ini boleh menghalang kesilapan yang salah. Oleh itu, bacalah skrip yang anda muat turun dan berhati-hati dengan data yang anda ada, sekiranya perkara tidak berlaku.

    Pada inti mereka, skrip hanyalah fail teks biasa. Anda boleh menggunakan mana-mana editor teks untuk menulisnya: gedit, emacs, vim, nano ... Senarai ini menyala. Pastikan anda menyimpannya sebagai teks biasa, bukan teks yang kaya, atau dokumen Word. Oleh kerana saya suka kemudahan penggunaan yang disediakan oleh nano, saya akan menggunakannya.

    Kebenaran Skrip dan Nama

    Skrip dilaksanakan seperti program, dan agar ini berlaku, mereka perlu mempunyai kebenaran yang sewajarnya. Anda boleh membuat skrip yang boleh dilaksanakan dengan menjalankan arahan berikut:

    chmod + x ~ / somecrazyfolder / script1

    Ini akan membolehkan sesiapa sahaja menjalankan skrip tertentu itu. Jika anda ingin menyekat penggunaannya hanya kepada pengguna anda, anda boleh menggunakannya sebagai ganti:

    chmod u + x ~ / somecrazyfolder / script1

    Untuk menjalankan skrip ini, anda perlu cd ke direktori yang betul dan kemudian jalankan skrip seperti ini:

    cd ~ / somecrazyfolder

    ./ script1

    Untuk membuat perkara lebih mudah, anda boleh meletakkan skrip dalam folder "bin" di direktori rumah anda:

    ~ / bin

    Dalam banyak distro moden, folder ini tidak lagi dibuat secara lalai, tetapi anda boleh menciptanya. Ini biasanya di mana fail boleh laku disimpan yang dimiliki oleh pengguna anda dan bukan kepada pengguna lain. Dengan meletakkan skrip di sini, anda hanya boleh menjalankannya dengan menaip nama mereka, sama seperti arahan lain, bukannya perlu cd sekitar dan menggunakan awalan './'.

    Sebelum anda menamakan skrip, walaupun, anda harus perintah berikut untuk memeriksa jika anda memasang program yang menggunakan nama itu:

    yang [perintah]

    Banyak orang menamakan skrip awal mereka "ujian," dan ketika mereka cuba untuk menjalankannya di baris arahan, tidak ada yang terjadi. Ini kerana ia bertentangan dengan arahan ujian, yang tidak melakukan apa-apa tanpa hujah. Sentiasa pastikan nama skrip anda tidak bertentangan dengan arahan, jika tidak, anda mungkin mendapati diri anda melakukan perkara yang tidak anda kehendaki!

    Garis Panduan Skrip

    Seperti yang saya nyatakan sebelum ini, setiap fail skrip pada dasarnya adalah teks biasa. Itu tidak bermakna anda boleh menulis apa yang anda mahukan semua tidak berguna. Apabila fail teks cuba dilaksanakan, cangkerang akan menghuraikannya untuk petunjuk sama ada ia skrip atau tidak, dan cara mengendalikan semuanya dengan betul. Kerana ini, terdapat beberapa panduan yang perlu anda ketahui.

    1. Setiap skrip sepatutnya dengan "#! / Bin / bash"
    2. Setiap baris baru adalah arahan baru
    3. Baris komen bermula dengan #
    4. Perintah dikelilingi oleh ()

    The Hash-Bang Hack

    Apabila shell memecah melalui fail teks, cara yang paling langsung untuk mengenal pasti fail sebagai skrip adalah dengan membuat baris pertama anda:

    #! / bin / bash

    Sekiranya anda menggunakan shell lain, tukar laluannya di sini. Baris komen bermula dengan hash (#), tetapi menambah bang (!) Dan laluan shell selepas ia adalah satu jenis hack yang akan memintas peraturan komen ini dan akan memaksa skrip untuk melaksanakan dengan shell yang baris ini menunjuk ke.

    Line Baru = Perintah Baru

    Setiap baris baru harus dianggap sebagai arahan baru, atau komponen sistem yang lebih besar. Jika / kemudian / kenyataan lain, misalnya, akan mengambil alih beberapa baris, tetapi setiap komponen sistem itu berada dalam barisan baru. Jangan biarkan arahan berdarah ke baris seterusnya, kerana ini boleh memecah perintah sebelumnya dan memberi anda ralat pada baris seterusnya. Jika editor teks anda berbuat demikian, anda perlu mematikan pembungkus teks untuk berada di bahagian yang selamat. Anda boleh mematikan pembungkusan teks dalam sedikit nano yang memukul ALT + L.

    Komen Sering dengan #s

    Sekiranya anda memulakan baris dengan #, baris diabaikan. Ini menjadikannya garis komen, di mana anda boleh mengingatkan diri anda tentang apa yang dihasilkan dari arahan sebelumnya, atau apa yang akan dilakukan oleh perintah seterusnya. Sekali lagi, matikan pembungkusan teks, atau memecahkan komen kepada beberapa baris yang semuanya bermula dengan hash. Menggunakan banyak komen adalah amalan yang baik untuk disimpan, kerana ia membolehkan anda dan orang lain tweak skrip anda dengan lebih mudah. Satu-satunya pengecualian ialah hack Hash-Bang yang dinyatakan di atas, jadi jangan ikuti #s dengan! S. ;-)

    Perintah Dikelilingi oleh Parentheses

    Pada hari yang lebih lama, penggantian perintah dilakukan dengan tanda semak tunggal (', berkongsi kunci ~). Kami tidak akan menyentuh ini lagi, tetapi apabila kebanyakan orang pergi dan meneroka selepas mempelajari asas-asas, mungkin adalah idea yang baik untuk menyatakan bahawa anda harus menggunakan kurungan. Ini terutamanya kerana apabila anda sarang - meletakkan arahan dalam perintah lain - kurungan berfungsi dengan lebih baik.

    Skrip Pertama Anda

    Mari kita mulakan dengan skrip mudah yang membolehkan anda menyalin fail dan memasukkan tarikh pada akhir nama fail. Mari kita panggil "datecp". Pertama, mari kita semak untuk melihat sama ada nama itu bercanggah dengan sesuatu:

    Anda dapat melihat bahawa tiada output arahan yang mana, jadi kami bersedia menggunakan nama ini.

    Mari buat fail kosong dalam folder ~ / bin:

    sentuh ~ / bin / datecp

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

    Mari mulakan skrip kami kemudian. Buka fail itu dalam editor pilihan teks anda. Seperti saya katakan, saya suka kesederhanaan nano.

    nano ~ / bin / datecp

    Dan, mari kita teruskan dan masukkan dalam baris pertama prasyarat, dan komen mengenai skrip ini.

    Seterusnya, mari kita menyatakan pembolehubah. Jika anda pernah mengambil aljabar, anda mungkin tahu apa itu. Pembolehubah membolehkan kami menyimpan maklumat dan melakukan perkara dengannya. Pembolehubah boleh "berkembang" apabila dirujuk di tempat lain. Iaitu, bukannya memaparkan nama mereka, mereka akan memaparkan kandungan mereka yang disimpan. Anda kemudian boleh memberitahu pembolehubah yang sama untuk menyimpan maklumat yang berbeza, dan apa-apa arahan yang berlaku selepas itu akan menggunakan maklumat baru ini. Ia adalah pemegang tempat yang benar-benar mewah.

    Apa yang akan kita masukkan dalam pembolehubah? Nah, mari kita simpan tarikh dan masa! Untuk melakukan ini, kami akan memanggil arahan tarikh.

    Lihatlah tangkapan skrin di bawah untuk membina output arahan tarikh:

    Anda dapat melihatnya dengan menambahkan pembolehubah yang berlainan yang bermula dengan%, anda boleh menukar output arahan kepada yang anda inginkan. Untuk maklumat lanjut, anda boleh melihat halaman manual untuk arahan tarikh.

    Mari kita gunakan lelaran terakhir arahan tarikh, "tarikh +% m_% d_% y-% H.% M.% S", dan gunakannya dalam skrip kami.

    Sekiranya kami menyimpan skrip ini sekarang, kami dapat menjalankannya dan ia akan memberi kami output arahan tarikh seperti yang kami harapkan:

    Tetapi, mari kita buat sesuatu yang berbeza. Mari kita berikan nama berubah, seperti date_formatted ke perintah ini. Sintaks yang betul untuk ini adalah seperti berikut:

    variable = $ (command -options arguments)

    Dan bagi kami, kami akan membinanya seperti ini:

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

    Inilah yang kita panggil penggantian perintah. Kami pada dasarnya memberitahu bash bahawa apabila pembolehubah "date_formatted" muncul, untuk menjalankan perintah di dalam kurungan. Kemudian, apa sahaja keluaran arahan yang diberikan harus dipaparkan dan bukannya nama pembolehubah, "date_formatted".

    Inilah skrip contoh dan outputnya:

    Perhatikan bahawa terdapat dua ruang dalam output. Ruang dalam petikan perintah echo dan ruang di hadapan pembolehubah dipaparkan. Jangan gunakan ruang jika anda tidak mahu mereka muncul. Juga ambil perhatian bahawa tanpa baris ini "echo" ditambahkan, skrip akan memberikan output yang sama sekali tidak.

    Mari kita kembali ke skrip kita. Mari seterusnya menambah bahagian penyalinan arahan.

    cp -iv $ 1 $ 2. $ date_formatted

    Ini akan memohon arahan salinan, dengan pilihan -i dan -v. Yang pertama akan meminta anda untuk pengesahan sebelum menwriting fail, dan yang terakhir akan memaparkan apa yang sedang turun di baris arahan.

    Seterusnya, anda dapat melihat saya telah menambah pilihan "$ 1". Apabila skrip, tanda dolar ($) yang diikuti dengan nombor akan menandakan hujah bernombor skrip apabila ia digunakan. Sebagai contoh, dalam arahan berikut:

    cp -iv Trogdor2.mp3 ringtone.mp3

    Hujah pertama ialah "Trogdor2.mp3" dan hujah kedua adalah "ringtone.mp3".

    Melihat kembali skrip kami, kami dapat melihat bahawa kami merujuk dua hujah:

    Ini bermakna apabila kita menjalankan skrip, kita perlu menyediakan dua hujah untuk skrip berjalan dengan betul. Argumen pertama, $ 1, adalah fail yang akan disalin, dan diganti sebagai hujah pertama perintah "cp -iv".

    Hujah kedua, $ 2, akan bertindak sebagai fail output untuk arahan yang sama. Tetapi, anda juga boleh melihat bahawa ia berbeza. Kami telah menambah tempoh dan kami merujuk kepada pembolehubah "tarikh_formatted" dari atas. Ingin tahu apa yang dilakukannya?

    Inilah yang berlaku apabila skrip dijalankan:

    Anda dapat melihat bahawa fail output disenaraikan sebagai apa sahaja yang saya masukkan untuk $ 2, diikuti dengan satu tempoh, kemudian output perintah tarikh! Maklum, betul?

    Sekarang apabila saya menjalankan arahan datecp, ia akan menjalankan skrip ini dan membenarkan saya menyalin mana-mana fail ke lokasi baru, dan secara automatik menambah tarikh dan masa untuk mengakhiri nama fail. Berguna untuk mengarkibkan barangan!


    Skrip Shell adalah di tengah membuat OS anda berfungsi untuk anda. Anda tidak perlu belajar bahasa pengaturcaraan baru untuk menjadikannya berlaku. Cuba skrip dengan beberapa arahan asas di rumah dan mula memikirkan apa yang anda boleh gunakan untuk ini.

    Adakah anda skrip? Ada nasihat untuk pemula? Kongsi pendapat anda dalam komen! Ada lagi yang akan datang dalam siri ini!