La question « Qu'est-ce que Bash ? » a été abordée dans l'article Qu’est ce qu' Linux Bash et comment l'utiliser ?Dans ce guide, nous allons approfondir Bash, en explorant ses fonctionnalités, ses capacités et ses fonctionnalités clés.
Bash (Bourne-Again SHell) est l'interpréteur de commandes par défaut des systèmes de type Unix, alliant puissance d'automatisation, flexibilité de gestion des processus et simplicité de création de scripts. Cet aide-mémoire couvre les aspects clés de l'utilisation de Bash : commandes de base pour la navigation et la gestion des fichiers, redirection d'E/S, variables, boucles, conditions et astuces de productivité (alias, autocomplétion, historique des commandes). Ce document convient aussi bien aux débutants qui apprennent le terminal qu'aux utilisateurs expérimentés à la recherche d'une référence rapide pour leurs tâches quotidiennes, de l'administration de serveur à l'automatisation de routine.
Bash est un outil extrêmement polyvalent capable d'exécuter de nombreuses fonctions. Vous trouverez ci-dessous un tableau des commandes Bash essentielles, classées par cas d'utilisation :
Aide-mémoire des commandes Bash par catégorie
- Exécution de commandes et de programmes
- Fonction:
- Lancez des programmes, des utilitaires et des scripts.
- Commandes/Constructions :
- ls, grep, mkdir, cd, chmod, ./script.sh, bash.
- Fonction:
- Automatisation et script
- Fonction:
- Créez et exécutez des scripts, des conditions, des boucles.
- Commandes/Constructions :
- si, pour, pendant, fonction, cas, sortie, test.
- Fonction:
- Variables et gestion des données
- Fonction:
- Créer des variables, des opérations arithmétiques et des chaînes.
- Commandes/Constructions :
- var=valeur, export, non défini, ${var}, $((expression)).
- Fonction:
- Gestion des processus et des signaux
- Fonction:
- Gérer les processus et les signaux.
- Commandes/Constructions :
- & (arrière-plan), tuer, tuer tous, tâches, fg, bg, Ctrl+C (SIGINT), Ctrl+Z (SIGTSTP).
- Fonction:
- Redirection d'E/S et tuyaux
- Fonction:
- Contrôler les flux de données.
- Commandes/Constructions :
- >, >>, 2>, &>, |.
- Fonction:
- Gestion et globalisation des systèmes de fichiers
- Fonction:
- Navigation, opérations sur les fichiers, correspondance de modèles.
- Commandes/Constructions :
- cp, mv, rm, *, ?, [], {}.
- Fonction:
- Interaction et commodité de l'utilisateur
- Fonction:
- Historique, autocomplétion, alias.
- Commandes/Constructions :
- historique, !!, !n, Tab, alias, homme, --aide.
- Fonction:
- Extension avancée
- Fonction:
- Générer des séquences et des motifs.
- Commandes/Constructions :
- {}, ~, $().
- Fonction:
Symboles/Opérateurs : >, >>, |, &, *, ?, [], {}, ~ — ce ne sont pas des commandes mais elles sont largement utilisées dans Bash pour le contrôle des données et des processus.
Combinaisons de touches : Ctrl+C, Ctrl+Z, Tab — raccourcis pour le contrôle des processus et la saisie semi-automatique.
Constructions de script : fonction si, pour, pendant — éléments de syntaxe pour l’écriture de scripts.
Pour des méthodes de script détaillées, reportez-vous à Linux Bases de Bash. Guide de script, et les explications des commandes peuvent être trouvées dans ULTIME Linux Aide-mémoire des commandes. Ci-dessous, nous nous concentrons sur les variables et l'environnement, la gestion des processus, la redirection des E/S, l'historique des commandes, les alias, les substitutions et les raccourcis clavier.
Variables et environnement
Les variables locales stockent les données de la session en cours :
name="User" # no spaces around '='
echo $name # output: User
Exporter des variables pour les rendre disponibles aux processus enfants (par exemple, les scripts) :
export EDITOR=nano # set default editor
Variables spéciales :
$? — code de sortie de la dernière commande (0 = succès) ;
$$ — PID du processus en cours ;
$ CHEMIN — chemins de recherche pour les exécutables.
Substitutions pour la flexibilité :
${var:-default} — renvoie la valeur par défaut si var n'est pas défini ;
${str// /_} — remplace tous les espaces par des traits de soulignement.
Astuce : configurez les variables d’environnement dans ~ / .bashrc pour persister à travers les sessions.
Gestion des processus
Mode d'arrière-plan : ajouter & pour exécuter une commande en arrière-plan :
sleep 30 & # run in background
Pause/reprise :
Ctrl + Z — mettre en pause un processus ;
fg — reprendre au premier plan, arrière-plan — continuer en arrière-plan.
Terminer les processus :
Ctrl + C — terminaison en douceur (SIGINT) ;
tuer -9 PID — forcer la terminaison (SIGKILL).
Trouver un PID de processus :
pgrep firefox # find PID by name
ps aux | grep ssh # search via filter
Redirection d'E/S
Contrôler les flux de données :
stdin (entrée), stdout (sortie), stderr (erreurs).
Opérateurs clés :
- > — écraser un fichier :
-
ls > files.txt # save file list
- >> — ajouter à un fichier ;
2> — rediriger les erreurs vers un fichier : -
grep "text" nofile.txt 2> errors.log
| — sortie de tuyau entre les commandes :
-
cat logs.txt | grep "ERROR" | sort
Redirection combinée :
-
script.sh &> output.log # combine stdout + stderr
Substitutions (expansion des paramètres)
Manipulation de chaînes :
- Supprimer une partie d'une chaîne :
-
file="/home/user/doc.txt"
echo ${file##*/} # doc.txt (like `basename`)
-
- Remplacer le texte :
-
str="hello world"
echo ${str// /_} # hello_world
-
Génération de listes :
echo file.{txt,log} # file.txt file.log
Arithmétique:
echo $((10 / 2)) # 5
Raccourcis
Édition de commande :
Ctrl+A / Ctrl+E — sauter au début/à la fin de la ligne ;
Ctrl+W / Alt+D — supprimer le mot gauche/droite ;
Ctrl + T — échanger les personnages.
Historique des commandes :
Ctrl + R — historique de recherche ;
!! — répéter la dernière commande ;
!$ — utiliser le dernier argument de la commande précédente.
Saisie semi-automatique:
Languette — nom de fichier/commande de saisie semi-automatique ;
Double Tab — afficher toutes les options.
Pro Tips
Alias pour les commandes fréquentes :
alias ll='ls -alh' # add to ~/.bashrc
Utilisation de l'historique :
history|grep "git"# find all "git" commands
Correction rapide :
^old^new # replace "old" with "new" in last command