Guide de survie pour Bash

Classé dans : Programmation | 0

Comme pour les autres posts « Guide de survie pour … » ce guide vous propose un ensemble de tips pour mieux exploiter Bash sur votre système.

Bach est disponible nativement sous Linux (Debian, Ubuntu, Slackware…), également disponible sur MacOS ( plus par défaut sur les dernières versions, mais peut être réactivé).

Sous Windows il est possible d’installer Git-Bash qui permet d’avoir un terminal bash sous Windows 7 et +.

Dernière mise à jour : 04/05/23


Effectuer un calcul avec bash => duree=$(($minute*60))

Remplacer du texte dans un fichier avec sed => sed -i "s/SrcString/NewString/g" FILE

Afficher un calendrier pour mai 2023 => calc 5 2023

Exécuter une commande sur une liste de fichiers => ls *.log | xargs rm -f

Idem avec find : find . -name *jpg -exec rm {} +

Historique des commandes : history

Re-exécuter une commande : !X (X = n° de la commande dans l’historique)

Paramètres des scripts et fonctions Bash :

$1 = 1er argument, $2 = deuxième …
$0 = nom de la commande en cours
$@ = tous les arguments

Créer plusieurs dossiers avec une seule commande : mkdir app/{src,build,components,js,css}
cette commande crée les dossiers app/src, app/build, app/components, app/js et app/css

Liste de valeurs dans les commandes bach avec {} : tail -f {access,error}.log
Ouvre les fichiers access.log et error.log

Revenir au dossier précédent : cd -

Résultat de la dernière commande : $?

Ré-exécuter la dernière commande : !!

Stocker le résultat d’une commande dans une variable : LISTE=`ls *.log`


Écrire une Boucle IF en bash :

if [ CONDITION ]; then
...
else
...
fi

Boucle WHILE avec un compteur

fin=30
index=1
while [ $index -lt $fin ]
do
   index=$(($index+1))
   echo $index
done

Boucle FOR sur une liste

for i in `ls *.log`
do
  echo "Fichier $i trouvé" 
done 

Bloc CASE

case "$1" in
   -i|--input) 
	print "option -i ou --input" 
	;;
    --debug)
	print "option --debug"
	;;
esac 

Demander une saisie dans un script, deux méthodes

# -n évite le retour à la ligne 
echo -n "Confirmer suppression O/N ?"
read REP
# la saisie est stockée dans $REP

# idem avec l'option -p de read qui permet de spécifier un prompt 
read -p "Confirmer la suppression O/N ?" REP 

Créer une fonction bash

maFonction() { 
  echo "ma fonction param1 = $1, param2 = $2"
}

On peut ensuite exécuter cette fonction avec maFonction en bash, pour passer des paramètres maFonction val1 val2

Les paramètres sont récupérés dans la fonction avec $1, $2

Pour se créer une bibliothèque de fonctions bash, il suffit de toutes les déclarer dans un même fichier, par exemple : myFuncs.sh. Il faut ensuite dans chacun de vos script ‘charger’ ce fichier pour que les fonctions soient disponibles. Le chargement se fait avec : source ~/myFuncs.sh (si le fichier est dans votre home). Vous pouvez également placer la commande dans ~/.bashrc qui est chargé au démarrage de chaque shell bash et ainsi disposer de vos fonctions dans le terminal