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.
Meget god og godt forklaret, men hvad henviser en parameter til?
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
Mine kommentarer kommer ikke ud, det er en mangel på respekt, jeg vender ikke tilbage til dette forum.
Jeg ved ikke, hvad der er sket, under alle omstændigheder er det blevet offentliggjort.
Greetings.