Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{toc/}} | ||
| 2 | |||
| 3 | == Présentation == | ||
| 4 | |||
| 5 | **Bash** (//Bourne Again SHell//) est le shell par défaut sur la majorité des distributions GNU/Linux. | ||
| 6 | C'est à la fois un interpréteur de commandes interactif et un langage de script puissant. | ||
| 7 | |||
| 8 | ----- | ||
| 9 | |||
| 10 | == Principes de base == | ||
| 11 | |||
| 12 | * Exécution de commandes : ##ls##, ##pwd##, ##echo##, etc. | ||
| 13 | * Variables simples : ##nom="John"## | ||
| 14 | * Substitution : ##$(commande)## | ||
| 15 | * Redirection : ##>##, ##>>##, ##<##, ##~|## | ||
| 16 | * Opérateurs conditionnels : ##if##, ##&&##, ##~|~|## | ||
| 17 | |||
| 18 | ----- | ||
| 19 | |||
| 20 | == Exemple simple == | ||
| 21 | |||
| 22 | {{code language="bash"}} | ||
| 23 | #!/bin/bash | ||
| 24 | |||
| 25 | echo "Bonjour $USER" | ||
| 26 | echo "Aujourd'hui nous sommes le $(date)" | ||
| 27 | {{/code}} | ||
| 28 | |||
| 29 | ----- | ||
| 30 | |||
| 31 | == Scripts Bash == | ||
| 32 | |||
| 33 | Un script Bash est un fichier texte commençant par ###!/bin/bash##. Il est exécutable et permet d'automatiser des tâches. | ||
| 34 | |||
| 35 | * Donner les droits : ##chmod +x monscript.sh## | ||
| 36 | * Lancer : ##./monscript.sh## | ||
| 37 | * Vérifier la syntaxe sans exécuter : ##bash -n monscript.sh## | ||
| 38 | |||
| 39 | Pour un script qui fait autre chose qu'afficher du texte, commencer par le mode strict : | ||
| 40 | |||
| 41 | {{code language="bash"}} | ||
| 42 | set -euo pipefail | ||
| 43 | {{/code}} | ||
| 44 | |||
| 45 | * ##-e## : arrêt à la première commande en échec | ||
| 46 | * ##-u## : erreur si une variable non définie est utilisée | ||
| 47 | * ##-o pipefail## : un échec dans un tube n'est plus masqué | ||
| 48 | |||
| 49 | ----- | ||
| 50 | |||
| 51 | == Structures de contrôle == | ||
| 52 | |||
| 53 | **if/else** : | ||
| 54 | |||
| 55 | {{code language="bash"}} | ||
| 56 | if [ "$USER" = "root" ]; then | ||
| 57 | echo "Attention, vous êtes root !" | ||
| 58 | else | ||
| 59 | echo "Utilisateur normal." | ||
| 60 | fi | ||
| 61 | {{/code}} | ||
| 62 | |||
| 63 | **Boucles** : | ||
| 64 | |||
| 65 | {{code language="bash"}} | ||
| 66 | for f in *.txt; do | ||
| 67 | echo "Fichier : $f" | ||
| 68 | done | ||
| 69 | {{/code}} | ||
| 70 | |||
| 71 | ----- | ||
| 72 | |||
| 73 | == Fichiers de configuration == | ||
| 74 | |||
| 75 | * ##~~/.bashrc## : exécuté à chaque shell interactif | ||
| 76 | * ##~~/.bash_profile## : à la connexion | ||
| 77 | * ##/etc/bash.bashrc## : global à tous les utilisateurs | ||
| 78 | |||
| 79 | Voir aussi [[Oh My Bash>>doc:Wiki Batcave John.Infrastructure.Oh My Bash.WebHome]], utilisé sur le serveur principal. | ||
| 80 | |||
| 81 | ----- | ||
| 82 | |||
| 83 | == Liens internes == | ||
| 84 | |||
| 85 | * [[Retour à la section Tutos Linux>>doc:Wiki Batcave John.TutosLinux.WebHome]] | ||
| 86 | * [[Variables d’environnement>>doc:Wiki Batcave John.TutosLinux.Variables.WebHome]] | ||
| 87 | * [[Raccourcis Bash>>doc:Wiki Batcave John.TutosLinux.Raccourcis.WebHome]] | ||
| 88 | * [[Scripts perso>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] | ||
| 89 | |||
| 90 | == Ressources externes == | ||
| 91 | |||
| 92 | * [[Advanced Bash Scripting Guide>>https://tldp.org/LDP/abs/html/]] | ||
| 93 | * [[ShellCheck>>https://www.shellcheck.net]] |