Opret dine egne scripts ved hjælp af bash

At lære Linux

Uanset hvilken Linux-distribution, vi bruger, er min tvivl uden tvivl Ubuntu―, så snart vi kommer ind i brugen af ​​dette system, bestemt automatiseringsbehov. Det vil sige: skab vores egne kommandoer der udfører bestemte kommandoer på en personlig måde. Dette behov kan skyldes visse årsager:

  • Forenkle syntaksen af de kommandoer, som vi normalt udfører.
  • Foretag handlinger, der dækker enhver behov, der ikke er forudset i systemet operationel.
  • Sekvensordrer at vi gentagne gange gentager.

Selvom et bash-script kan køres i / fra enhver mappe, er det normalt Opret en mappe for at være vært for disse scripts. I mit tilfælde:

$ mkdir /home/pedro/.bin

Jeg tror det bibliotek (skjult ved at føre perioden foran navnet) at holde alle de scripts, jeg bruger der. At navnet på biblioteket er skjult har ingen anden betydning end - medmindre andet udtrykkeligt er angivet - vises ikke, når du ser / home / pedro fra filviseren i grafiktilstand.

Nu skal du informer Linux om, at det også skal se der (/home/pedro/.bin) de ordrer, der udføres fra terminalen.

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

På denne måde vil systemet se efter vores ordrer der indtil vi lukker sessionen. For at gøre denne forening permanent:

$ sudo nano /etc/environment

og vi tilføjer

:/home/pedro/.bin

i slutningen af ​​PATH-linjen er det meget vigtigt ikke at glemme tyktarmen før adressen på det katalog, som vi inkluderer, da dette er tilføjelsesmekanismen.

Vores første trin-for-trin script

Vi opretter vores fil, sådan her i mit tilfælde:

$ touch ~/.bin/donde

Og for at redigere det kan du bruge din foretrukne editor eller følge denne indikation:

$ gedit ~/.bin/donde &

Og vi tilføjer følgende indhold:

#!/usr/bin/env bash

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

Script analyse

Vores første opkaldslinje «molevitten»(#! / Usr / bin / env bash) bede Linux om at rapportere hvor bash shell er placeret og at det, der følger, udføres i henhold til bashs krav. Denne forholdsregel det er praktisk at sikre sig, at vores scripts fungerer på enhver installation. En anden mulig molevitten han grinte:

#!/bin/bash

Forskellen mellem dem kan være meget freaky, og jeg vil forklare det. I denne sidste Jeg antager det i vores system bash shell er på / bin / bash adresse. Dog hvor jeg foreslår i manuskriptet Jeg ved vel ikke, hvor det er bash-tolken. Jeg beder systemet om, at han skal angive den adresse.

Tredje linje: Som du kan se, er den anden linje et if. For bash tegnene «$#« indeholder antallet af parametre, som vi sender fra kommandolinjen. Derfor, »hvis [$ # -lt 1];» betyder bogstaveligt "hvis antallet af parametre er mindre end 1".

Fjerde linje: Derefter (oversættes bogstaveligt fra engelsk: så), her er det angivet, hvad der kommer næste gang udføres, når tilstandsvurderingen if Vær ærlig: med andre ord, antallet af parametre er mindre end 1, det vil sige nul.

Femte linje: Hvis vi kører vores script uden parametre, viser vi i terminalen «Du skal sende en parameter».

Sjette linje: Angiver, at det følgende vil blive udført når den betingelse, vi har erklæret, ikke er sand.

Syvende linje: Se kør kommandoen «hvor er« ledsaget af det indhold, vi har bestået som første parameter.

Ottende linje: med «fi»Angiver, at blokken slutter if.

Test af vores script

Det er vigtigt tilføj skrivetilladelser til manuskriptet:

$ chmod -x ~/.bin/donde

Uden dette vises en "tilladelse nægtet" -fejl.. Derefter kan vi køre vores script.

$ donde php

Det skal vise os placeringen af ​​php-binære filer, deres kildefiler og mandsider. Noget i den stil:

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

Genoptagelse

  • Vi aktiverer en katalog ".bin" for at huse vores scripts.
  • Vi sørger for information til Linux for at inkludere denne mappe i dens kommandosøgninger.
  • Vi opretter vores script.
  • Forskel mellem anderledes molevitten.
  • Anvendelse af antal parametre, der er sendt med $ #.
  • Anvendelse af første parameter med $1.

Jeg håber og ønsker, at dette script er nyttigt for dig.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   miguel sagde han

    Meget god og godt forklaret, men hvad henviser en parameter til?

    1.    Billede af Pedro Ruiz Hidalgo sagde han

      Tak Miguel!

      Jeg forstår ved parameter alle supplerende oplysninger, der leveres til et program, en funktion eller et system. Da dette kan være besværligt, vil jeg svare dig med et par eksempler.

      I linux-kommandoen til at kopiere filen a.txt til filen b.txt, ville vi skrive følgende:

      $cp a.txt b.txt

      CP-programmet modtager her to parametre, som er navnene på to filer, den første (skal eksistere) a.txt og den anden b.txt.

      Et andet eksempel: Hvis du sender til udskrivning fra konsollen med kommandoen

      $ lp file.pdf

      I dette tilfælde er "file.pdf" en parameter for lp-programmet.

      Jeg håber, jeg har opfyldt din tvivl.

      hilsen

  2.   miguel sagde han

    Mine kommentarer kommer ikke ud, det er en mangel på respekt, jeg vender ikke tilbage til dette forum.

    1.    Billede af Pedro Ruiz Hidalgo sagde han

      Jeg ved ikke, hvad der er sket, under alle omstændigheder er det blevet offentliggjort.

      Greetings.