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