Programmation en bash - partie 1

Bien que nous l'utilisions généralement pour des opérations administratives ou de gestion de fichiers, le confort de Linux/Unix étend ses fonctionnalités bien au-delà de cet objectif, nous permettant de programmer scripts Ce guide n'est pas destiné à être une référence complète sur la programmation Bash, mais plutôt une introduction aux commandes et structures de base, qui nous permettront d'étendre la puissance de notre système GNU / Linux.

Qu'est-ce qu'un "script"?

Fondamentalement, nous disons que c'est un fichier qui contient du code écrit dans un certain langage de programmation que le système utilise pour une certaine tâche. Il n'a pas besoin d'avoir une entrée externe ou une interface graphique, mais il doit provoquer une sortie de données traitées (même si l'utilisateur ne les voit pas).

Le langage utilisé par Bash est défini par son propre interpréteur et combine la syntaxe d'autres shells, comme le Korn Shell (ksh) ou le C Shell (csh). La plupart des commandes généralement utilisées dans la console peuvent également être utilisées dans les scripts, à l'exception de celles qui appartiennent strictement à une distribution particulière.

Structure d'un script

Pour commencer il faut avoir un éditeur de texte et envie de programmer. Les fichiers que nous sauvegardons avec une extension .sh peuvent être exécutés (ou interprétés) par la console, à condition que la première ligne soit la suivante:

#! / Bin / bash

Cela indique au système d'utiliser la console pour exécuter le fichier. De plus, le caractère # vous permet d'écrire des commentaires. Pour créer l'exemple le plus simple, nous ajoutons une ligne supplémentaire, vue dans l'image suivante:

La commande echo affiche un message à l'écran, dans ce cas le typique "Hello world!" Si nous le sauvegardons et l'exécutons avec la console, nous verrons le résultat.

Commandes de base

Les commandes suivantes sont courantes et très utiles pour tout type de programme. Nous précisons qu'il y en a beaucoup plus, mais pour l'instant, nous couvrirons les points suivants.

Alias: permet de remplacer une chaîne de mots par une plus courte, permettant la réduction du code.

#create un alias appelé per avec l'adresse de l'alias de dossier #Downloads per = '/ home / user / Downloads' #Chaque fois que nous voulons l'utiliser, il suffit d'appeler #le nouveau mot par #Pour détruire cet alias, nous utilisons unalias unalias per

break: permet de quitter immédiatement une boucle for, while, until ou select (nous étudierons les boucles en détail plus tard)

#Créer une boucle qui attribuera les nombres de 1 à 5 # pour chaque "tour de boucle" pour le compteur en 1 2 3 4 5 faire #Nous imprimons la valeur courante de la variable #counter, qui est analysée par le caractère $ echo " $ counter ”#Si la valeur du compteur est égale à 3 if [$ counter –eq 3] alors #Le break sort de la boucle pour break fi done

continue - Similaire à break, sauf qu'il ignore la boucle actuelle et passe à la suivante.

#Créer une boucle qui attribuera les nombres de 1 à 5 # pour chaque "tour de boucle" pour le compteur en 1 2 3 4 5 do #Si la valeur du compteur est égale à 3 si [$ counter –eq 3] alors #Continue empêche le reste du cycle en cours d'être analysé en sautant au tour suivant, c'est-à-dire que la #valeur 3 ne sera pas imprimée. continuer fi echo "$ counter" terminé

declare: déclare des variables et leur assigne des valeurs, tout comme la composition (elles fonctionnent de la même manière). Nous pouvons le combiner avec quelques options: -i déclare des entiers; -r pour les variables en lecture seule, dont la valeur ne peut pas être modifiée; –A pour les tableaux ou «tableaux»; -f pour les fonctions; -x pour les variables qui peuvent être "exportées" en dehors de l'environnement du script lui-même.

déclarer –i num = 12 déclarer –x pi = 3.14

help: affiche l'aide pour une commande spécifique.

jobs: affiche les processus en cours.

#Avec –c nous montrons le nom des commandes, avec –p # le pid (id de processus) de chaque processus. emplois -cp

let: évaluer une expression arithmétique

soit a = 11 soit a = a + 5 #Enfin, nous affichons la valeur de a qui est 16 echo "11 + 5 = $ a"

local: crée des variables locales, qui doivent être utilisées de préférence dans les fonctions du script lui-même pour éviter les erreurs. Vous pouvez utiliser les mêmes fonctions que la commande declare.

local v1 = "Ceci est une variable locale"

déconnexion: permet de se déconnecter complètement d'un Shell; utile pour les cas où nous travaillons avec plus d'une fenêtre shell, dans lesquels la commande exit ne permettra qu'une seule fenêtre à la fois.

printf: permet d'imprimer des données et de les formater. Il a de nombreuses options, nous en mentionnerons donc quelques-unes.

#% f s'imprime sous forme de nombre flottant, n pour la nouvelle # ligne printf "% fn" 5 5.000000 # & d permet de passer des nombres décimaux comme arguments printf "Il y a% d commandes évaluées en% d dollars.n" 20 500 Il y a 20 commandes évaluées à 500 Dollars.

read: lit une ligne depuis l'entrée standard (module utilisé pour charger des données via le clavier par exemple). Nous pouvons passer des options comme: -t pour donner un temps limite de lecture; -a pour que chaque mot soit affecté à une position dans le tableau aname; -d pour utiliser un délimiteur qui sera écrit à la fin de la ligne; entre autres.

echo "Entrez votre nom et appuyez sur ENTREE" #Lisez le nom de la variable read name echo "Votre nom est $ name"

type: décrit une commande et son comportement. Il peut être utile de connaître les définitions de données pour chaque commande.

type –a '[' #type nous dit que [est une commande interne de Shell [est une commande interne de Shell # -a permet de trouver les répertoires qui contiennent # un exécutable avec le nom écrit. [est / usr / bin / [

ulimit: limite l'accès et l'utilisation de certaines ressources système aux processus, idéal pour les programmes qui permettent des changements administratifs ou qui s'adressent à différents types d'utilisateurs. Lors de la définition d'une limite, nous écrivons un nombre qui représente les kilo-octets de la limite.

#Nous voyons nos limites actuelles ulimit –a # -f vous permet de limiter les utilisateurs à ne pas pouvoir # créer des fichiers de plus de 512000 Ko (500 # Mo) ulimit –f 512000 # -v limite la mémoire virtuelle du processus. ulimit –v 512000

wait: attendez qu'un certain processus ou travail soit exécuté pour continuer.

#Le script attend que le processus de pid # 2585 soit exécuté

attendre 2585

D'autres commandes utiles que nous pouvons ajouter aux scripts sont représentées par des symboles.

!!: relancez la dernière commande

! wer: exécute la dernière commande qui a commencé par l'expression «wer».

'==', '! =', '>', '<', '> =' et '<=': opérateurs relationnels.

|: L'opérateur OR généralement utilisé pour joindre deux expressions régulières.

: commande d'échappement qui vous permet de formater des expressions. Par exemple: a pour une alerte sonore, n pour une nouvelle ligne, b pour un retour arrière, etc.

Merci Juan Carlos Ortiz!

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.   Difficile moyen dit

    Génial! Quoi qu'il en soit, 2 commentaires: la balise Ubuntu est à moitié trop, car elle généralise quelque chose de générique. Et si ces tutoriels continuent d'avancer, ce serait bien qu'ils soient liés les uns aux autres….
    A part ça, ce déménagement est intéressant!

  2.   Utilisons Linux dit

    Bonne contribution! Brillant!

  3.   Giovanni escobar sosa dit

    Il ne manque que des références pour ceux qui veulent en savoir plus. Certains bons mais pas si faciles à trouver dans nos pays sont
    - Un guide pratique des commandes Linux, des éditeurs et de la programmation Shell, Mark Sobell (chapitre 8)
    - Programmation Pro Bash, Chris FA Johnson (bien que ce soit pour ceux qui ont d'autres références ou un peu plus de connaissances).

    Bon article.

  4.   Utilisons Linux dit

    Bonne date! Je vous remercie!

  5.   Patricio Dorantes Jamarne dit

    : @ La fonction "se connecter en tant que" a supprimé mon commentaire précédent, je vais donc le résumer plus loin:
    emplois -cp
    bash: jobs: -c: option non valide
    jobs: utilisation: jobs [-lnprs] [jobspec…] ou jobs -x commande [args]

    -eq -gt -lt n'accepte pas les variables de virgule décimale, entre forum et forum j'ai découvert que bc est un bon allié:
    si [`echo 9.999 10> 1 | bc` -eq XNUMX]; puis
    echo "9.999 10 est supérieur à XNUMX, assurez-vous que votre processeur fonctionne toujours"
    d'autre
    echo «9.999 10 n'est pas supérieur à XNUMX, tout fonctionne normalement
    fi

  6.   PasDeBrooklyn dit

    Cet article résume très bien toutes les généralités du script bash:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Sur ce site, vous trouverez de nombreuses questions et réponses sur les particularités de bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Voici quelques scripts vraiment sympas, et bon, vous pouvez les apprendre en lisant les scripts d'autres personnes:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   PasDeBrooklyn dit

    Vous avez raison avec ce que vous dites, sauf pour bash. Chaque système que j'ai vu a bash dans / bin / bash.

    Mais pour python, perl, ruby, etc., c'est bien de l'utiliser. Je le fais

  8.   Guille dit

    Par coïncidence, à l'université, nous utilisons des scripts bash, donc les données sont 10, très bonnes!

  9.   alex j'ai vu dit

    une version pdf à télécharger serait bien !! 😀

  10.   Marco Antonio de Fuentes dit

    Très bon site. J'ai finalement trouvé quelque chose d'utile. Je vous remercie.