Bash, abréviation de "Bourne Again SHell", est un shell Unix et un langage de commande qui sert à la fois d'interpréteur de commandes pour le système d'exploitation et de langage de programmation pour écrire des scripts shell. Créé comme un remplacement du Bourne Shell (sh), Bash intègre des fonctionnalités du Korn Shell (ksh) et du C Shell (csh), ce qui en fait un outil puissant et polyvalent pour les tâches en ligne de commande et de script. Bash est largement utilisé dans diverses distributions Linux, macOS et d'autres systèmes d'exploitation de type Unix, et il sert de shell par défaut sur de nombreux systèmes.
Bash a été développé par Brian Fox pour le projet GNU en 1987 comme un remplacement logiciel libre du Bourne Shell (sh). L'objectif était de fournir aux utilisateurs un shell plus riche en fonctionnalités tout en maintenant la compatibilité avec les scripts sh existants. Au fil des ans, Bash a évolué grâce aux contributions de nombreux développeurs, et sa croissance a été alimentée par la popularité croissante de Linux et des logiciels open-source.
Dans ses premières années, Bash a rapidement gagné en popularité parmi les utilisateurs et les développeurs en raison de son extensibilité et de l'ensemble riche de fonctionnalités qu'il a introduites. Les fonctionnalités clés comprenaient l'édition de ligne de commande, le contrôle des tâches et des capacités de script améliorées. À l'heure actuelle, Bash est activement maintenu, la version 5.2 ayant été publiée en septembre 2021. Il continue d'être un outil standard pour les administrateurs système, les développeurs et quiconque travaillant avec des systèmes d'exploitation de type Unix.
Bash s'est inspiré de plusieurs autres shells et langages de programmation. La syntaxe et les structures de commande du Korn Shell (ksh) et du C Shell (csh) ont fortement influencé sa conception. De plus, ses fonctionnalités de langage de commande facilitent l'intégration avec des langages de programmation comme Python et Ruby, souvent utilisés dans des scripts pour une fonctionnalité améliorée.
Bash est largement utilisé pour le scripting et l'automatisation des tâches système, la gestion des installations de logiciels, l'exécution des tâches d'administration système et le traitement des données. Il est intégré dans les flux de travail de développement de nombreuses applications logicielles et pipelines CI/CD, ainsi que dans les environnements cloud et les pratiques DevOps.
Bash prend en charge l'assignation de variables sans déclaration de type préalable. Par exemple :
name="World"
echo "Hello, $name!"
Bash inclut des instructions conditionnelles telles que if-else pour le contrôle de flux :
if [ "$name" == "World" ]; then
echo "Hello, World!"
else
echo "Hello, Stranger!"
fi
Bash permet des boucles comme for
, while
et until
. Voici un exemple d'une boucle for
:
for i in {1..5}; do
echo "Iteration $i"
done
Vous pouvez définir et invoquer des fonctions dans Bash :
greet() {
echo "Hello, $1!"
}
greet "User"
Bash prend en charge la substitution de commande en utilisant des accents graves ou $(...)
:
today=$(date)
echo "Today is $today"
Bash prend en charge les tableaux indexés unidimensionnels :
fruits=("apple" "banana" "cherry")
echo "First fruit: ${fruits[0]}"
Bash fournit des fonctionnalités de manipulation de chaînes telles que l'extraction de sous-chaînes :
text="Hello World"
echo ${text:6:5} # Affiche "World"
Bash permet des opérations arithmétiques de base en utilisant $((...))
:
result=$((5 + 3))
echo "Result is $result"
Vous pouvez rediriger l'entrée et la sortie dans Bash :
echo "Hello" > output.txt
Bash permet l'utilisation de documents here pour une entrée multi-lignes, facilitant le passage de chaînes multi-lignes aux commandes :
cat << EOF
This is a multi-line string.
EOF
Bien que les scripts Bash puissent être édités dans n'importe quel éditeur de texte, plusieurs environnements de développement intégrés (IDE) offrent un support pour Bash. Ceux-ci incluent Visual Studio Code, Atom, Sublime Text et Eclipse avec des plugins.
Les scripts Bash sont interprétés plutôt que compilés, l'interpréteur Bash lui-même exécutant les scripts. La commande pour exécuter un script est :
bash script.sh
Pour construire des projets, il est courant de créer un Makefile en utilisant make
, ou d'utiliser des scripts Bash pour automatiser des tâches telles que l'installation ou le déploiement.
Bash est utilisé dans divers domaines, notamment :
Bash trouve ses comparaisons les plus proches dans des langages comme Python et Perl pour le scripting, tandis qu'il peut être comparé à des langages de programmation plus généralistes comme C ou Java dans des cas d'utilisation spécifiques.
Bash excelle dans les interactions en ligne de commande et les tâches système, tandis que Python est plus polyvalent pour des tâches de programmation complexes, le traitement de données et le développement d'applications. Python offre une riche bibliothèque standard qui le rend adapté aux applications plus grandes.
Perl est souvent utilisé pour le traitement de texte et les tâches d'administration système ; cependant, il a une syntaxe plus complexe par rapport à Bash. Bash est axé sur l'exécution de commandes, tandis que Perl est plus centré sur la programmation.
JavaScript est principalement un langage web côté client, tandis que Bash sert d'interpréteur de commandes et de processeur de scripts pour les opérations système. Bash n'est pas adapté au développement web, tandis que JavaScript excelle dans ce domaine.
Lors de la traduction de scripts Bash vers d'autres langages, assurez-vous de valider les équivalents des commandes et de vérifier les dépendances sur les fonctionnalités au niveau du système. Des outils comme sh2py
existent pour convertir des scripts shell en Python, mais les différences sémantiques doivent être soigneusement gérées.
Il existe quelques outils disponibles pour la traduction source-à-source, notamment :