Crea els teus propis scripts usant bash

aprenent Linux

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.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   miguel va dir

    Molt bo i ben explicat, però a què es refereix amb un paràmetre?

    1.    Pedro Ruiz Hidalgo va dir

      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

  2.   miguel va dir

    No surten els meus comentaris, és una falta de respecte, no torno més a aquest fòrum.

    1.    Pedro Ruiz Hidalgo va dir

      Ignoro què ha passat, en qualsevol cas aquest sí que s'ha publicat.

      Salutacions.