Bash

Programmation

Scripting

Options à mettre pour arrêter le script en cas d’erreur :

set -euo pipefail

Variables

# Pour les chaines de caractères
var1="Bonjour !"
# Mettre dans une variable les résultats d'une commande
var2="`date`"
# -OU-
var2="$(date)"
# Réalisation de calculs
var3=$(($a + $b))

Conditions

Comparaison de chaine de caractères :

if [ "$variable" == "test" ]; then
   # Opérateurs utilisable "==", "!=", ">", "<", "<=", "=>"
   echo "VRAI"
else
   echo "FAUX"
fi

Note : ici les opérateurs “>”, “<”, “<=” et “=>” permettent de comparer deux chaînes en fonction de l’ordre lexicographique.

Comparaison de nombres :

if [ "$a" -eq "$b" ]; then echo "a = b"; fi

Tester l’existence d’un fichier :

file="/etc/hosts"
if [ -f "$file" ]; then
   echo "$file found."
fi

Boucle for

Lister le contenu d’un répertoire :

for path in /etc/*; do
   echo $path
done

Générer une suite de nombre :

for i in {1..5}; do
   echo $i
done

Travailler avec la sortie d’une commande :

for line in $(ps aux); do
   echo $line
done

Les boules en trois parties :

for (( i=1; i<=5; i++ )); do
   echo $i
done

Les paramètres

Pour lire les paramètres, on peut utiliser cette syntaxe : $1 ou ${10}.

Quelques paramètres spéciaux :

  • $0 : le nombre du fichier
  • $@ : l’ensemble des arguments paramètres par paramètre
  • $# : le nombre d’arguments passés au script
  • $? : contient la code d’erreur renvoyé par la dernière commande exécutée (= 0 quand il n’y a pas d’erreur)

Les fonctions

function_name() {
   # Some code...
}
# To call this function
function_name

Exécution à distance

Exécute plusieurs commandes avec une seule connexion SSH :

ssh $HOST bash <<SSHOEF
    # les commandes
SSHOEF

Hooks et raccourcis

Les raccourcis

Raccourcis Description
CTRL + e Déplacement à la fin de la ligne
CTRL + l Equivalent de la commande clear
CTRL + u Coupe jusqu’au début de la ligne
CTRL + k Coupe jusqu’à la fin de la ligne
CTRL + w Coupe jusqu’au début du mot et le copie dans le presse-papier
CTRL + y Colle le contenu du presse-papier à l’endroit du curseur
CTRL + r Recherche incrémentale : active et recule
CTRL + s Recherche incrémentale : avance
CTRL + g Abandonne la recherche
ALT + . Ajoute le dernier paramètre de la commande précédente après le curseur

Modifier les raccourcis

En éditant le fichier ~/.inputrc :

"\e[A": history-search-backward
"\e[B": history-search-forward
"\C-h": "\C-e\C-u"

Exemple de hook

Exemple de fonction à mettre dans le fichier ~/.bashrc :

function _wiki_example1()
{
    READLINE_LINE="Modifie la sortie"
}
bind -x '"\M-o":_wiki_example1'

Variables Bash

Variable Description
PS1 Prompt de niveau 1
READLINE_LINE Contient la ligne courante
PROMPT_COMMAND Commande à exécuter avant l’affichage du prompt

Sources

Style

Bash completion

Autres sources