GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel d'introduction aux scripts Bash avec 5 exemples pratiques

Semblable à nos séries Unix Sed et Unix Awk en cours, nous publierons plusieurs articles sur les scripts Bash, qui couvrira toutes les techniques de script bash avec des exemples pratiques.

Shell est un programme qui interprète les commandes de l'utilisateur. Les commandes sont soit saisies directement par l'utilisateur, soit lues à partir d'un fichier appelé script shell.

Le shell est appelé en tant que shell interactif, lorsqu'il lit directement l'entrée de l'utilisateur.

Shell est appelé en tant que shell non interactif lorsqu'il lit les commandes d'un fichier et l'exécute. Dans ce cas, le shell lit chaque ligne d'un fichier de script de haut en bas et exécute chaque commande comme si elle avait été tapée directement par l'utilisateur.

Afficher la valeur de la variable shell intégrée $-, pour savoir si le shell est interactif ou non interactif.

# echo $-
himBH

Remarque :la variable $- contient un "i" lorsque le shell est interactif .

Unix a une variété de Shells. Bourne shell (sh), Bourne again shell (bash), C shell (csh), Korn shell (ksh), Tenex C shell (tcsh). Utilisez les commandes unix which ou whereis pour savoir où se trouve un shell spécifique, comme indiqué ci-dessous.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

Vous pouvez basculer entre les shells en tapant le nom du shell. Par exemple, tapez csh pour passer au shell C.

Écriture et exécution de script shell

Exemple 1. Script Hello World Bash

  1. Créez un script en saisissant les deux lignes suivantes dans un fichier à l'aide de votre éditeur préféré.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. Vous pouvez choisir n'importe quel nom pour le fichier. Le nom de fichier ne doit pas être le même que celui des commandes intégrées d'Unix.
  4. Le script commence toujours par les deux caractères "# !", appelés she-bang. Cela indique que le fichier est un script et doit être exécuté à l'aide de l'interpréteur (/bin/bash) spécifié par le reste de la première ligne du fichier.
  5. Exécutez le script comme indiqué ci-dessous. Si vous rencontrez des problèmes lors de l'exécution d'un script shell, reportez-vous au tutoriel d'exécution de script shell
  6. $ bash helloworld.sh
    Hello World
  7. Lorsque vous exécutez la commande "bash helloworld.sh", elle démarre le shell non interactif et lui transmet le nom du fichier en tant qu'argument.
  8. La première ligne indique au système d'exploitation quel shell générer pour exécuter le script.
  9. Dans l'exemple ci-dessus, l'interpréteur bash qui interprète le script et exécute les commandes une par une de haut en bas.
  10. Vous pouvez même exécuter le script, sans commencer "bash" par :
    • Modifier l'autorisation sur le script pour vous permettre (utilisateur) de l'exécuter, en utilisant la commande "chmod u+x helloworld.sh".
    • Le répertoire contenant le script doit être inclus dans la variable d'environnement PATH. S'il n'est pas inclus, vous pouvez exécuter le script en spécifiant le chemin absolu du script.
  11. echo est une commande qui affiche simplement l'argument que nous lui donnons. Il est également utilisé pour imprimer la valeur de la variable.

Fichiers de démarrage Bash

Comme nous l'avons vu précédemment dans notre séquence d'exécution pour .bash_profile et l'article sur les fichiers associés, lorsque le bash est appelé en tant que shell interactif, il lit et exécute d'abord les commandes de /etc/profile. Si /etc/profile n'existe pas, il lit et exécute les commandes de ~/.bash_profile, ~/.bash_login et ~/.profile dans l'ordre indiqué. L'option –noprofile peut être utilisée au démarrage du shell pour empêcher ce comportement.

Généralement, votre bash_profile exécute ~/.bashrc. Si vous le souhaitez, vous pouvez afficher un message de bienvenue. Cela ne s'exécute que lorsque vous vous connectez pour la première fois. Vous pouvez exporter les variables comme vous le souhaitez et vous pouvez définir les alias qui seront exécutés et disponibles une fois que vous aurez ouvert le shell. Lorsqu'un shell de connexion se ferme, Bash lit et exécute les commandes du fichier ~/.bash_logout.

Exemple 2. Imprimez un message de bienvenue lorsque vous vous connectez

Tapez le contenu suivant dans votre fichier bash_profile. Si le fichier n'existe pas, créez un fichier avec le contenu ci-dessous.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

Lorsque vous vous connectez à un shell interactif, vous verrez les messages de bienvenue comme indiqué ci-dessous.

login as: root
root@dev-db's password:
Welcome on dev-db

Exemple 3. Imprimer des informations relatives au système

Lorsque vous vous connectez à un shell interactif, vous pouvez afficher le nom du noyau installé sur le serveur, la version bash, la disponibilité et l'heure sur le serveur.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Lorsque vous lancez un shell interactif, il imprime le message comme indiqué ci-dessous.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Exemple 4. Imprimer les dernières informations de connexion

Si plusieurs utilisateurs utilisent la même machine avec la même connexion, des détails tels que la machine à partir de laquelle la dernière connexion s'est produite et l'heure à laquelle ils se sont connectés seraient les détails les plus utiles. Cet exemple imprime les dernières informations de connexion lors du démarrage d'un shell interactif.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

dernierjournal | grep "racine" | awk {'print "Dernière connexion depuis :"$3

print "Last Login Date &Time :",$4,$5,$6,$7,$8,$9 ;}'
Au démarrage, vous recevrez le message comme indiqué ci-dessous.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Dernière connexion depuis :sasikala-laptop

Date et heure de la dernière connexion :mar 22 février 11:24:01 +0100 2010

Exemple 5. Exporter des variables et définir des alias au démarrage

Les commandes les plus courantes que vous utiliserez dans vos fichiers .bashrc et .bash_profile sont les commandes d'exportation et d'alias.

Un alias remplace simplement un morceau de texte par un autre. Lorsque vous exécutez un alias, il remplace simplement ce que vous avez tapé par ce à quoi l'alias est égal. Par exemple, si vous souhaitez définir un alias pour la commande ls afin de répertorier les fichiers/dossiers avec les couleurs, procédez comme suit :

alias ls 'ls --color=tty'

Si vous ajoutez cette commande à l'un des fichiers de démarrage, vous pouvez exécuter la commande ls, où elle sera automatiquement remplacée par la commande ls –color=tty.

La commande d'exportation est utilisée pour définir une variable d'environnement. Diverses variables d'environnement sont utilisées par le système ou d'autres applications. Ils sont simplement un moyen de définir des paramètres que n'importe quelle application/script peut lire. Si vous définissez une variable sans la commande d'exportation, cette variable n'existe que pour ce processus particulier.

Dans l'exemple ci-dessous, il exporte la variable d'environnement HISTSIZE. La ligne qui commence par # est une ligne de commentaire.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}

Linux
  1. Quel interpréteur Shell exécute un script sans Shebang ?

  2. Tutoriel Awk :Comprendre les variables Awk avec 3 exemples pratiques

  3. Tutoriel sur l'état de sortie de Bash Shell avec des exemples pratiques

  4. Le tutoriel Ultimate Bash Array avec 15 exemples

  5. 15 commandes intégrées utiles de Bash Shell (avec exemples)

Bash Scripting - Commande Printf expliquée avec des exemples

Bash Scripting - Tableau associatif expliqué avec des exemples

Bash Scripting - Tableau indexé expliqué avec des exemples

Tutoriel étape par étape sur les scripts shell

Tutoriel sur les fonctions Bash Shell avec 6 exemples pratiques

Script bash pour la boucle expliqué avec des exemples