Oavsett vilken Linux-distribution vi använder, är min tvekan tvivelaktigt min favorit Ubuntu så snart vi börjar använda detta system, säkert automatiseringsbehov. Det vill säga: skapa vår egna kommandon som utför vissa kommandon på ett personligt sätt. Detta behov kan bero på vissa orsaker:
- Förenkla syntaxen av de kommandon som vi vanligtvis utför.
- Vidta åtgärder som täcker alla behov som inte förutses i systemet operativ.
- Sekvensbeställningar som vi upprepade gånger upprepar.
Även om ett bash-skript kan köras i / från vilken katalog som helst, är det vanligtvis skapa en katalog för att vara värd för dessa skript. I mitt fall:
$ mkdir /home/pedro/.bin
Jag tror det här katalog (dold genom att leda perioden framför namnet) att hålla alla skript jag använder där. Att namnet på katalogen är dolt har ingen annan betydelse än - om inte annat uttryckligen anges - visas inte när du tittar på / home / pedro från filvisaren i grafiskt läge.
Nu måste du informera Linux om att det också ska se där (/home/pedro/.bin) beställningarna som utförs från terminalen.
$ PATH=$PATH;/home/pedro/.bin
På detta sätt kommer systemet att leta efter våra beställningar där tills vi avslutar sessionen. För att göra denna förening permanent:
$ sudo nano /etc/environment
och vi lägger till
:/home/pedro/.bin
i slutet av PATH-raden är det mycket viktigt att inte glömma kolon före adressen till katalogen som vi inkluderar, eftersom detta är tilläggsmekanismen.
Vårt första steg-för-steg-skript
Vi skapar vår fil, så här i mitt fall:
$ touch ~/.bin/donde
Och för att redigera det kan du använda din föredragna redigerare eller följa denna indikation:
$ gedit ~/.bin/donde &
Och vi lägger till följande innehåll:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
Skriptanalys
Vår första samtalslinje «shebang»(#! / Usr / bin / env bash) fråga Linux att rapportera var ligger bash-skalet och att det som följer utförs enligt bashs krav. Denna försiktighetsåtgärd det är bekvämt att se till att våra skript fungerar på alla installationer. En annan möjlig shebang han skrattade:
#!/bin/bash
Skillnaden mellan dem kan vara väldigt freaky, och jag kommer att förklara det. I denna sista Jag antar det i vårt system bash-skalet finns på / bin / bash-adressen. Men där jag föreslår i manuset Jag antar att jag inte vet var det är bash tolk. Jag ber systemet för honom att ange den adressen.
Tredje raden: Som du kan se är den andra raden ett if. För bash karaktärerna «$#« innehålla antalet parametrar som vi skickar från kommandoraden. Därför »om [$ # -lt 1];» betyder bokstavligen "om antalet parametrar är mindre än 1".
Fjärde raden: Sedan (bokstavligen översatt från engelska: då), här anges det att vad som kommer nästa kommer att utföras när tillståndsutvärderingen if var sann: med andra ord är antalet parametrar mindre än 1, det vill säga noll.
Femte raden: Om vi utför vårt skript utan några parametrar, kommer vi att visa i terminalen «Du måste skicka en parameter».
Sjätte raden: Indikerar att det som följer kommer att köras när det villkor vi har förklarat inte är sant.
Sjunde raden: Se kör kommandot «var är« åtföljs av innehållet som vi har skickat som första parametern.
Åttonde raden: med «fi»Indikerar att blocket slutar if.
Testar vårt manus
Det är viktigt lägg till skrivbehörighet till manuset:
$ chmod -x ~/.bin/donde
Utan detta skulle ett "tillstånd nekat" -fel visas.. Efter det kan vi köra vårt skript.
$ donde php
Det bör visa oss platsen för php-binärer, deras källfiler och man-sidor. Något sådant:
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 möjliggör en katalog ".bin" för att hysa våra skript.
- Vi tillhandahåller information till Linux för att inkludera den här katalogen i kommandosökningarna.
- Vi skapar vårt manus.
- Skillnad mellan annorlunda shebang.
- Användning av antal parametrar som skickats med $ #.
- Användning av första parametern med $1.
Jag hoppas och önskar att det här skriptet är användbart för dig.
Mycket bra och väl förklarade, men vad hänvisar en parameter till?
Tack Miguel!
Jag förstår med parameter all kompletterande information som levereras till ett program, en funktion eller ett system. Eftersom detta kan vara besvärligt, låt mig svara dig med några exempel.
I linux-kommandot för att kopiera filen a.txt till filen b.txt skulle vi skriva följande:
$cp a.txt b.txt
CP-programmet här får två parametrar som är namnen på två filer, den första (måste finnas) a.txt och den andra b.txt.
Ett annat exempel: Om du skickar för att skriva ut från konsolen med kommandot
$ lp file.pdf
I det här fallet är "file.pdf" en parameter för lp-programmet.
Jag hoppas att jag har uppfyllt dina tvivel.
hälsningar
Mina kommentarer kommer inte ut, det är en brist på respekt, jag återvänder inte till detta forum igen.
Jag vet inte vad som har hänt, det har i alla fall publicerats.
Hälsningar.