Buat skrip anda sendiri menggunakan bash

Belajar Linux

Terlepas dari pengedaran Linux yang kita gunakan, "tidak diragukan lagi kegemaran saya adalah Ubuntu― sebaik sahaja kita menggunakan sistem ini, pasti keperluan automasi. Iaitu: buat kami arahan sendiri yang melaksanakan perintah tertentu dengan cara yang diperibadikan. Keperluan ini disebabkan oleh sebab-sebab tertentu:

  • Permudahkan sintaks arahan yang biasanya kita laksanakan.
  • Lakukan tindakan yang merangkumi mana-mana keperluan yang tidak diramalkan dalam sistem operasi.
  • Urutan urutan yang kami tekun mengulangi.

Walaupun skrip bash dapat dijalankan di / dari direktori mana pun, biasanya buat direktori untuk menghoskan skrip ini. Dalam kes saya:

$ mkdir /home/pedro/.bin

Saya percaya ini direktori (disembunyikan dengan memimpin titik di depan nama) untuk menyimpan semua skrip yang saya gunakan di sana. Bahawa nama direktori tersembunyi tidak mempunyai makna lain selain - kecuali dinyatakan secara eksplisit sebaliknya - tidak akan muncul semasa melihat / rumah / pedro dari pemapar fail dalam mod grafik.

Sekarang anda mesti memberitahu Linux bahawa ia juga mesti dilihat di sana (/home/pedro/.bin) pesanan yang dilaksanakan dari terminal.

$ PATH=$PATH;/home/pedro/.bin

Dengan cara ini sistem akan mencari pesanan kami di sana sehingga kita menutup sesi. Untuk menjadikan persatuan ini kekal:

$ sudo nano /etc/environment

dan kami menambah

:/home/pedro/.bin

pada akhir baris PATH, sangat penting untuk tidak melupakan titik dua sebelum alamat direktori yang kami sertakan, kerana ini adalah mekanisme penambahan.

Skrip langkah demi langkah pertama kami

Kami membuat fail kami, seperti ini dalam kes saya:

$ touch ~/.bin/donde

Dan untuk mengeditnya, anda boleh menggunakan editor pilihan anda atau mengikuti petunjuk ini:

$ gedit ~/.bin/donde &

Dan kami menambah kandungan berikut:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

Analisis skrip

Talian panggilan pertama kami «shebang»(#! / Usr / bin / env bash) minta Linux melaporkan di mana bash shell terletak dan bahawa yang berikut dilaksanakan sesuai dengan keperluan bash. Langkah berjaga-jaga ini adalah senang untuk memastikan bahawa skrip kami berfungsi pada sebarang pemasangan. Kemungkinan lain shebang dia ketawa:

#!/bin/bash

Perbezaan antara mereka boleh menjadi sangat aneh, dan saya akan menerangkannya. Dalam yang terakhir ini Saya menganggap bahawa dalam sistem kami shell bash berada di alamat / bin / bash. Walau bagaimanapun, di mana saya mencadangkan dalam skrip Saya rasa saya tidak tahu di mana ia berada jurubahasa bash. Saya meminta sistem untuknya memberikan alamat itu.

Baris ketiga: Seperti yang anda lihat, baris kedua adalah jika. Untuk bash watak «$#« mengandungi bilangan parameter yang kita lalui dari baris perintah. Oleh itu, »jika [$ # -lt 1];» secara harfiah bermaksud "jika bilangan parameter kurang dari 1".

Baris keempat: Kemudian (secara harfiah diterjemahkan dari bahasa Inggeris: kemudian), di sini ditunjukkan bahawa apa yang akan datang akan dilaksanakan semasa penilaian keadaan if jadi jujur: dengan kata lain, bilangan parameter kurang dari 1, iaitu sifar.

Baris kelima: Jika kita menjalankan skrip kita tanpa parameter, kita akan menunjukkan di terminal «Anda perlu lulus parameter».

Baris keenam: Menunjukkan bahawa apa yang berikut akan dilaksanakan apabila keadaan yang telah kita nyatakan tidak benar.

Baris ketujuh: Se jalankan arahan «di manakah« disertakan dengan kandungan yang telah kami lalui sebagai parameter pertama.

Baris kelapan: dengan «fi»Menunjukkan bahawa blok itu berakhir if.

Menguji Skrip kami

Adalah penting tambah kebenaran menulis ke skrip:

$ chmod -x ~/.bin/donde

Tanpa ini, ralat "kebenaran ditolak" akan muncul.. Selepas itu, kita boleh menjalankan skrip kita.

$ donde php

Ia harus menunjukkan lokasi binari php, fail sumbernya, dan halaman manual. Sesuatu seperti itu:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

Pengambilan semula

  • Kami membolehkan a direktori ".bin" untuk menempatkan skrip kami.
  • Kami menyediakan maklumat ke Linux untuk memasukkan direktori ini dalam carian perintahnya.
  • Kami membuat skrip kami.
  • Perbezaan antara berbeza shebang.
  • Penggunaan bilangan parameter yang diluluskan dengan $ #.
  • Penggunaan parameter pertama dengan $1.

Saya berharap dan berharap skrip ini berguna untuk anda.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   miguel kata

    Sangat baik dan dijelaskan dengan baik, tetapi apa yang dimaksudkan oleh parameter?

    1.    Gambar placeholder Pedro Ruiz Hidalgo kata

      Terima kasih Miguel!

      Saya memahami berdasarkan parameter semua maklumat pelengkap yang diberikan kepada program, fungsi atau sistem. Oleh kerana ini boleh membebankan, izinkan saya menjawab anda dengan beberapa contoh.

      Dalam perintah linux untuk menyalin fail a.txt ke fail b.txt, kami akan menuliskan yang berikut:

      $cp a.txt b.txt

      Program cp di sini menerima dua parameter yang merupakan nama dua fail, yang pertama (mesti ada) a.txt dan yang kedua b.txt.

      Contoh lain: Sekiranya anda menghantar untuk mencetak dari konsol dengan arahan

      $ lp file.pdf

      Dalam kes ini "file.pdf" adalah parameter untuk program lp.

      Saya harap saya memenuhi keraguan anda.

      salam

  2.   miguel kata

    Komen saya tidak keluar, itu adalah rasa tidak hormat, saya tidak kembali ke forum ini lagi.

    1.    Gambar placeholder Pedro Ruiz Hidalgo kata

      Saya tidak tahu apa yang telah berlaku, bagaimanapun ia telah disiarkan.

      Greetings.