Lag dine egne skript ved hjelp av bash

Lære Linux

Uansett Linux-distribusjon vi bruker, er det ingen tvil om at favoritten min er Ubuntu så snart vi kommer i bruk av dette systemet, sikkert automatiseringsbehov. Det vil si: skape vår egne kommandoer som utfører visse kommandoer på en personlig måte. Dette behovet kan skyldes visse årsaker:

  • Forenkle syntaksen av kommandoene som vi vanligvis utfører.
  • Ta handlinger som dekker eventuelle behov som ikke er forutsett i systemet operativt.
  • Sekvensbestillinger som vi gjentatte ganger gjentar.

Selv om et bash-skript kan kjøres i / fra hvilken som helst katalog, er det vanligvis lag en katalog for å være vert for disse skriptene. I mitt tilfelle:

$ mkdir /home/pedro/.bin

Jeg tror dette katalog (skjult ved å føre perioden foran navnet) å holde alle skriptene jeg bruker der. At navnet på katalogen er skjult, har ingen annen betydning enn - med mindre annet er uttrykkelig spesifisert - vises ikke når du ser / home / pedro fra filviseren i grafisk modus.

Nå må du informer Linux om at det også skal se der (/home/pedro/.bin) ordrene som utføres fra terminalen.

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

På denne måten vil systemet se etter våre bestillinger der til vi avslutter økten. For å gjøre denne foreningen permanent:

$ sudo nano /etc/environment

og vi legger til

:/home/pedro/.bin

på slutten av PATH-linjen, er det veldig viktig å ikke glemme kolon før adressen til katalogen som vi inkluderer, siden dette er tilleggsmekanismen.

Vårt første trinnvise manus

Vi oppretter filen vår, slik i mitt tilfelle:

$ touch ~/.bin/donde

Og for å redigere det, kan du bruke din foretrukne redaktør eller følge denne indikasjonen:

$ gedit ~/.bin/donde &

Og vi legger til følgende innhold:

#!/usr/bin/env bash

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

Skriptanalyse

Vår første samtalelinje «shebang»(#! / Usr / bin / env bash) be Linux rapportere der bash-skallet er plassert og at det som følger utføres i henhold til bashs krav. Denne forholdsregelen det er praktisk å sørge for at våre skript fungerer på enhver installasjon. En annen mulig shebang han lo:

#!/bin/bash

Forskjellen mellom dem kan være veldig freaky, og jeg vil forklare det. I denne siste Jeg antar det i systemet vårt bash-skallet er på / bin / bash-adressen. Imidlertid hvor jeg foreslår i manuset Jeg antar at jeg ikke vet hvor det er bash-tolken. Jeg ber systemet om at han oppgir adressen.

Tredje linje: Som du kan se, er den andre linjen et if. For bash tegnene «$#« inneholder antall parametere som vi sender fra kommandolinjen. Derfor, »hvis [$ # -lt 1];» betyr bokstavelig talt "hvis antall parametere er mindre enn 1".

Fjerde linje: Deretter (bokstavelig talt oversatt fra engelsk: da), her er det indikert at det som kommer neste vil bli utført når tilstandsvurderingen if vær ærlig: med andre ord, antall parametere er mindre enn 1, det vil si null.

Femte linje: Hvis vi kjører skriptet vårt uten parametere, vil vi vise i terminalen «Du må sende en parameter».

Sjette linje: Indikerer at det som følger følger vil bli utført når tilstanden vi har erklært ikke er sant.

Syvende linje: Se kjør kommandoen «hvor er« ledsaget av innholdet som vi har passert som første parameter.

Åttende linje: med «fi»Indikerer at blokken slutter if.

Tester skriptet vårt

Det er viktig legge til skrivetillatelser til manuset:

$ chmod -x ~/.bin/donde

Uten dette ville en "tillatelse nektet" feil vises.. Etter det kan vi kjøre skriptet vårt.

$ donde php

Det skal vise oss plasseringen til php-binærfiler, deres kildefiler og man-sider. Noe sånt:

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

Recapping

  • Vi aktiverer en ".bin" katalog for å huse våre skript.
  • Vi skaffer informasjon til Linux for å inkludere denne katalogen i kommandosøkene.
  • Vi lager skriptet vårt.
  • Forskjell mellom forskjellig shebang.
  • Bruken av antall parametere sendt med $ #.
  • Bruken av første parameter med $1.

Jeg håper og ønsker at dette skriptet er nyttig for deg.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   miguel sa

    Veldig bra og godt forklart, men hva refererer en parameter til?

    1.    Pedro Ruiz Hidalgo plassholderbilde sa

      Takk Miguel!

      Jeg forstår ved parameter all utfyllende informasjon som leveres til et program, en funksjon eller et system. Da dette kan være tungvint, la meg svare deg med noen få eksempler.

      I linux-kommandoen for å kopiere filen a.txt til filen b.txt, vil vi skrive følgende:

      $cp a.txt b.txt

      CP-programmet mottar her to parametere som er navnene på to filer, den første (må eksistere) a.txt og den andre b.txt.

      Et annet eksempel: Hvis du sender til utskrift fra konsollen med kommandoen

      $ lp file.pdf

      I dette tilfellet er "file.pdf" en parameter for lp-programmet.

      Jeg håper jeg har oppfylt tvilen din.

      Hilsen

  2.   miguel sa

    Kommentarene mine kommer ikke ut, det er mangel på respekt, jeg kommer ikke tilbake til dette forumet.

    1.    Pedro Ruiz Hidalgo plassholderbilde sa

      Jeg vet ikke hva som har skjedd, i alle fall er det publisert.

      Hilsener.