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 é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!

Ajouter comme source préférée