Créez vos propres scripts en utilisant bash

Apprendre Linux

Indépendamment de la distribution Linux que nous utilisons, `` aucun doute que mon préféré est Ubuntu '' dès que nous entrons dans l'utilisation de ce système, certains besoins d'automatisation. C'est-à-dire: créer notre propres commandes qui exécutent certaines commandes de manière personnalisée. Ce besoin peut être dû à certaines causes:

  • Simplifiez la syntaxe des commandes que nous exécutons habituellement.
  • Prenez des mesures qui couvrent tout besoin qui n'est pas prévu dans le système opérationnel.
  • Ordres de séquence que nous répétons assidûment.

Bien qu'un script bash puisse être exécuté dans / à partir de n'importe quel répertoire, il est généralement créer un répertoire pour héberger ces scripts. Dans mon cas:

$ mkdir /home/pedro/.bin

j'y crois répertoire (masqué en précédant le point devant le nom) pour contenir tous les scripts que j'utilise là-bas. Que le nom du répertoire soit caché n'a pas d'autre signification que - sauf indication contraire explicite - n'apparaîtra pas lors de la visualisation de / home / pedro à partir de la visionneuse de fichiers en mode graphique.

Maintenant tu dois informer Linux qu'il devrait également y chercher (/home/pedro/.bin) les ordres exécutés depuis le terminal.

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

De cette façon, le système recherchera nos commandes là-bas jusqu'à ce que nous fermions la session. Pour rendre cette association permanente:

$ sudo nano /etc/environment

et nous ajoutons

:/home/pedro/.bin

à la fin de la ligne PATH, il est très important de ne pas oublier le deux-points avant l'adresse du répertoire que l'on inclut, car c'est le mécanisme d'addition.

Notre premier script pas à pas

Nous créons notre fichier, comme ceci dans mon cas:

$ touch ~/.bin/donde

Et pour l'éditer, vous pouvez utiliser votre éditeur préféré ou suivre cette indication:

$ gedit ~/.bin/donde &

Et nous ajoutons le contenu suivant:

#!/usr/bin/env bash

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

Analyse de script

Notre première ligne d'appel «case»(#! / Usr / bin / env bash) demander à Linux de signaler où se trouve le shell bash et que ce qui suit est exécuté selon les exigences de bash. Cette précaution il est pratique de s'assurer que nos scripts fonctionnent sur n'importe quelle installation. Un autre possible case il rit:

#!/bin/bash

La différence entre eux peut devenir très bizarre, et je vais vous l'expliquer. Dans ce dernier Je suppose que dans notre système le shell bash est à l'adresse / bin / bash. Cependant, là où je propose dans le script Je suppose que je ne sais pas où c'est l'interprète bash. Je demande au système pour lui de fournir cette adresse.

Troisième ligne: Comme vous pouvez le voir, la deuxième ligne est un if. Pour bash les personnages «$#« contiennent le nombre de paramètres que nous transmettons à partir de la ligne de commande. Par conséquent, »if [$ # -lt 1];» signifie littéralement "si le nombre de paramètres est inférieur à 1".

Quatrième ligne: Ensuite (traduction littéralement de l'anglais: alors), ici il est indiqué que ce qui vient ensuite sera exécuté lorsque l'évaluation de la condition if Sois sincère: en d'autres termes, le nombre de paramètres est inférieur à 1, c'est-à-dire nul.

Cinquième ligne: Si nous exécutons notre script sans aucun paramètre, nous afficherons dans le terminal «Vous devez passer un paramètre».

Sixième ligne: Indique que ce qui suit sera exécuté lorsque la condition que nous avons déclarée n'est pas vraie.

Septième ligne: Se exécutez la commande «où se trouve« accompagné du contenu que nous avons passé comme premier paramètre.

Huitième ligne: avec «fi»Indique que le bloc se termine if.

Tester notre script

Il est important ajouter des autorisations d'écriture au script:

$ chmod -x ~/.bin/donde

Sans cela, une erreur «autorisation refusée» apparaîtrait.. Après cela, nous pouvons exécuter notre script.

$ donde php

Il devrait nous montrer l'emplacement des binaires php, leurs fichiers source et leurs pages de manuel. Quelque chose comme ça:

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

Récapitulation

  • Nous activons un Répertoire ".bin" pour héberger nos scripts.
  • Nous fournissons informations à Linux pour inclure ce répertoire dans ses recherches de commandes.
  • Nous créons notre script.
  • Différence entre distintos case.
  • Utilisation de nombre de paramètres passés avec $ #.
  • Utilisation de premier paramètre avec $1.

J'espère et souhaite que ce script vous soit utile.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   miguel dit

    Très bien et bien expliqué, mais à quoi fait référence un paramètre?

    1.    Image de balise Pedro Ruiz Hidalgo dit

      Merci Miguel!

      J'entends par paramètre toutes les informations complémentaires fournies à un programme, une fonction ou un système. Comme cela peut être fastidieux, permettez-moi de vous répondre avec quelques exemples.

      Dans la commande linux pour copier le fichier a.txt dans le fichier b.txt, nous écririons ce qui suit:

      $cp a.txt b.txt

      Le programme cp reçoit ici deux paramètres qui sont les noms de deux fichiers, le premier (doit exister) a.txt et le second b.txt.

      Un autre exemple: si vous envoyez à l'impression depuis la console avec la commande

      $ lp fichier.pdf

      Dans ce cas, "file.pdf" est un paramètre du programme lp.

      J'espère avoir satisfait vos doutes.

      salutations

  2.   miguel dit

    Mes commentaires ne sortent pas, c'est un manque de respect, je ne reviens pas sur ce forum.

    1.    Image de balise Pedro Ruiz Hidalgo dit

      Je ne sais pas ce qui s'est passé, en tout cas celui-ci a été publié.

      Salutations.