Amb independència de la distribució de Linux que utilitzem, -què ha dubte que la meva preferida és Ubuntu- quant ens endinsem en l'ús d'aquest sistema ens sorgeixen determinades necessitats d'automatització. És a dir: crear els nostres ordres pròpies que realitzin de forma personalitzada determinats ordres. Aquesta necessitat pot obeir a determinades causes:
- Simplificar la sintaxi de les ordres que habitualment executem.
- Efectuar accions que cobreixin alguna necessitat que no estigui prevista en el sistema operatiu.
- seqüenciar ordres que assíduament repetim.
Encara que un script bash pot ser executat en / des de qualsevol directori, generalment es crea un directori per albergar aquests scripts. En el meu cas:
$ mkdir /home/pedro/.bin
crec aquest directori (ocult a l'portar el punt davant del nom) per albergar aquí tots els scripts que faig servir. Que el nom de directori està ocult no té una altra significació que -tret que s'especifiqui explícitament el contrari- no apareixerà quan visualitzi / home / pedro des del visualitzador d'arxius en mode gràfic.
Ara cal informar Linux que ha també buscar en aquest lloc (/Home/pedro/.bin) les ordres que s'executin des del terminal.
$ PATH=$PATH;/home/pedro/.bin
D'aquesta manera el sistema buscarà aquí les nostres ordres fins que tanquem la sessió. Per fer aquesta associació permanent:
$ sudo nano /etc/environment
i afegim
:/home/pedro/.bin
a la fi de la línia PATH, és molt important no oblidar els dos punts abans de la direcció de directori que estem incloent, ja que aquest és el mecanisme d'addició.
El nostre primer Script pas a pas
Creem el nostre arxiu, així en el meu cas:
$ touch ~/.bin/donde
I per editar-lo, es pot fer servir el vostre editor preferit o seguir aquesta indicació:
$ gedit ~/.bin/donde &
I afegim el següent contingut:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
Anàlisi de l'script
La nostra línia primera trucada «shebang»(#! / Usr / bin / env bash) demana a Linux que informi on es troba l'intèrpret d'ordres bash i que el que ve a continuació sigui executat d'acord amb els requeriments de bash. aquesta precaució és convenient per assegurar-nos que els nostres scripts funcionen en qualsevol instal·lació. Una altra possible shebang Sereia:
#!/bin/bash
La diferència entre elles pot arribar a ser molt friki, i pas a explicar-la. En aquesta última assumeixo que en el nostre sistema l'intèrpret d'ordres bash està en la direcció / bin / bash. No obstant això, en la que proposo a l'script suposo que no sé on és l'intèrpret bash. Li demano a el sistema que ell proporcioni aquesta direcció.
Tercera línia: Com es pot apreciar la segona línia es tracta d'un if. Per bash els caràcters «$#« contenen el nombre de paràmetres que estem passant des de la línia de comandaments. Per tant, »if [$ # -lt 1];» literalment significa «si el nombre de paràmetres és menor que 1».
Quarta línia: Llavors (Traduint literalment de l'ingés: llavors), aquí s'indica que el que ve a continuació serà executat quan l'avaluació de la condició if sigui certa: En altres paraules el nombre de paràmetres sigui menor 1, o sigui, zero.
Cinquena línia: Si executem el nostre script sense cap paràmetre mostrem al terminal «Necessites passar un paràmetre».
sisena línia: Indica que el que ve a continuació va a executar-se quan la condició que hem declarat no sigui certa.
Setena línia: Es executa la comanda «on es« acompanyat d'el contingut que nosaltres hem passat com primer paràmetre.
Vuitena línia: amb «fi»S'indica que finalitza el bloc if.
Provant el nostre Script
És important afegir permisos d'escriptura a l'script:
$ chmod -x ~/.bin/donde
Sense això ens apareixeria un error de «permís denegat». Després d'això, podem executar el nostre script.
$ donde php
Hauria mostrar-nos la localització de l'els binaris del PHP, els seus arxius font, i pàgines de manual. Una cosa així:
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
Recapitulant
- habilitem XNUMX directori «.bin» per albergar els nostres scripts.
- proporcionem informació a Linux perquè inclogui aquest directori en les seves recerques d'ordres.
- Creem el nostre script.
- diferència entre diferents shebang.
- Utilització de l' nombre de paràmetres passats amb $ #.
- Utilització de l' primer paràmetre amb $1.
Espero i desitjo que aquest script sigui de la vostra utilitat.
Molt bo i ben explicat, però a què es refereix amb un paràmetre?
Gràcies Miquel!
Entenc per paràmetre tota informació complementària que es subministra a un programa, funció o sistema. Com això pot ser molest, permet-me que et respongui amb uns exemples.
En l'ordre de linux per copiar el fitxer a.txt a el fitxer b.txt, escriuríem el següent:
$ Cp a.txt b.txt
El programa cp aquí rep dos paràmetres que són els noms de dos arxius, el primer (ha d'existir) a.txt i el segon b.txt.
Un altre exemple: Els missatges a imprimir des de la consola amb l'ordre
$ Lp arxiu.pdf
En aquest cas «arxiu.pdf» és un paràmetre per al programa lp.
Espero haver satisfet els teus dubtes.
Salutacions
No surten els meus comentaris, és una falta de respecte, no torno més a aquest fòrum.
Ignoro què ha passat, en qualsevol cas aquest sí que s'ha publicat.
Salutacions.