Aller au contenu

Maîtriser Bash

Mise à jour :

Bash est le shell par défaut sur la majorité des systèmes Unix tels que Linux et macOS, et il joue un rôle essentiel dans l’administration des systèmes et l’automatisation des tâches. Grâce à sa flexibilité et à sa puissance, Bash permet aux utilisateurs de personnaliser leur environnement de travail et de le rendre plus efficace.

Dans ce guide, je vais vous montrer comment personnaliser et optimiser Bash à l’aide d’outils tels que bash-it, tout en explorant des astuces pour rendre votre terminal plus fonctionnel et adapté à vos besoins.

Historique

Bash, acronyme de “Bourne Again Shell”, a été créé en 1989 par Brian Fox dans le cadre du projet GNU. Conçu pour être un successeur amélioré du sh (le shell Bourne original), Bash a été développé avec l’objectif d’offrir des fonctionnalités avancées tout en restant compatible avec les scripts existants.

Initialement, Bash a été adopté principalement sur les systèmes Linux, en raison de son inclusion dans le projet GNU, garantissant une alternative libre aux shells propriétaires de l’époque. Sa flexibilité, combinée à des fonctionnalités comme la gestion des variables, la redirection de flux et les structures de contrôle, en a fait un choix de prédilection pour les administrateurs systèmes et développeurs.

Avec le temps, Bash est devenu le shell par défaut sur de nombreuses distributions Linux et même sur macOS jusqu’en 2019, où il a été remplacé par Zsh. Cependant, Bash reste toujours largement utilisé et apprécié pour sa stabilité et sa vaste compatibilité.

Comparé à d’autres shells tels que Zsh, Ksh et Tcsh, Bash se distingue par son équilibre entre simplicité et fonctionnalité. Cet historique d’évolution et d’adoption généralisée témoigne de la robustesse et de la polyvalence de Bash, qui continue d’être un pilier central dans l’administration des systèmes modernes.

Installation et configuration de base

L’un des avantages de Bash est qu’il est préinstallé sur la plupart des systèmes Linux et macOS, rendant son installation généralement inutile. Cependant, il peut être nécessaire de configurer Bash comme shell par défaut ou de vérifier sa version pour s’assurer que vous utilisez la plus récente.

Pour vérifier la version de Bash installée sur votre système, utilisez la commande suivante :

Terminal window
bash --version

Cela vous permettra de voir la version actuelle et de savoir si une mise à jour est recommandée pour bénéficier des dernières fonctionnalités et correctifs.

Définir Bash comme shell par défaut

Pour changer votre shell par défaut et le configurer sur Bash, utilisez la commande suivante :

Terminal window
chsh -s $(which bash)

Cette commande modifie le fichier /etc/passwd pour que Bash soit lancé automatiquement chaque fois que vous ouvrez un terminal. Assurez-vous que le chemin vers Bash est correct et que vous avez les permissions nécessaires pour effectuer cette modification.

Personnalisation de l’environnement

Le fichier .bashrc est un script de configuration exécuté à chaque ouverture d’une nouvelle session de terminal interactif non connecté. Il est l’un des éléments clés pour personnaliser l’environnement Bash et le rendre plus efficace et convivial.

Le fichier .bashrc est généralement situé dans votre répertoire personnel (~/.bashrc). Il permet de définir des variables d’environnement, des alias, des fonctions et des configurations spécifiques pour améliorer votre expérience utilisateur.

Ajouter des alias pour simplifier les commandes

Les alias sont des raccourcis pour les commandes que vous utilisez fréquemment. Voici comment ajouter des alias dans votre fichier .bashrc :

Terminal window
# Alias pour afficher les fichiers cachés en mode détaillé
alias ll='ls -la'
# Alias pour naviguer rapidement
alias ..='cd ..'
alias ...='cd ../..'
# Alias pour des commandes complexes
alias update='sudo apt update && sudo apt upgrade -y'

Après avoir ajouté des alias, rechargez le fichier .bashrc pour appliquer les changements :

Terminal window
source ~/.bashrc

Personnaliser le prompt Bash

Le prompt est la ligne qui apparaît dans votre terminal avant que vous tapiez une commande. Vous pouvez le personnaliser en modifiant la variable PS1 :

Terminal window
# Exemple de prompt personnalisé affichant l'utilisateur, l'hôte et le répertoire courant
export PS1='\u@\h:\w\$ '

Dans cet exemple :

  • \u représente le nom d’utilisateur.
  • \h représente le nom de l’hôte.
  • \w représente le répertoire de travail courant.

Pour ajouter des couleurs au prompt, utilisez des codes ANSI :

Terminal window
export PS1='\[\e[32m\]\u@\h:\[\e[34m\]\w\[\e[0m\]\$ '

Ce code colore l’utilisateur et l’hôte en vert et le répertoire en bleu.

Ajouter des fonctions personnalisées

Les fonctions permettent d’automatiser des tâches complexes en regroupant plusieurs commandes. Par exemple, une fonction pour nettoyer un répertoire temporaire peut ressembler à ceci :

Terminal window
clean_temp() {
rm -rf ~/temp/*
echo "Dossier temporaire nettoyé."
}

Ajoutez cette fonction à votre .bashrc, puis rechargez-le avec source ~/.bashrc pour l’utiliser.

Modifier des variables d’environnement

Le fichier .bashrc permet également de définir des variables d’environnement pour configurer des comportements spécifiques. Par exemple :

Terminal window
# Ajouter des répertoires au PATH
export PATH=$PATH:/usr/local/bin:/opt/scripts

Cette personnalisation via le fichier .bashrc vous permet de configurer votre environnement de travail pour mieux répondre à vos besoins, en rendant l’utilisation de Bash plus intuitive et puissante.

bash-it

Présentation

bash-it est un framework open-source qui simplifie et améliore la personnalisation de Bash. Il offre un ensemble de scripts, d’alias, de plugins, et de thèmes qui rendent l’utilisation de Bash plus puissante et agréable, sans avoir besoin de configurer manuellement chaque élément.

bash-it regroupe et automatise des configurations avancées qui seraient fastidieuses à implémenter individuellement. Grâce à ce framework, vous pouvez rapidement ajouter des alias personnalisés, des complétions de commande, des fonctions, et des thèmes pour embellir et enrichir votre terminal.

bash-it se compose de plusieurs éléments :

  • Alias : Raccourcis prédéfinis pour simplifier les commandes courantes.
  • Plugins : Modules qui ajoutent des fonctionnalités spécifiques (ex. : support Git, Docker).
  • Thèmes : Personnalisation du prompt pour rendre le terminal plus informatif et esthétique.
  • Complétions : Améliorations de l’autocomplétion pour des commandes complexes.

Installation et configuration de bash-it

L’installation de bash-it est simple et permet de configurer rapidement un environnement de terminal personnalisé. Voici comment procéder pour installer et configurer bash-it sur votre système.

  1. Cloner le dépôt de bash-it : Pour installer bash-it, commencez par cloner le dépôt GitHub dans votre répertoire personnel.

    Terminal window
    git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
  2. Lancer le script d’installation : Exécutez le script d’installation pour initialiser bash-it. Vous pouvez choisir de sauvegarder votre fichier .bashrc existant avant qu’il ne soit modifié.

    Terminal window
    ~/.bash_it/install.sh

    Pendant l’installation, vous aurez la possibilité de choisir si vous souhaitez que bash-it modifie automatiquement votre fichier .bashrc pour activer les configurations par défaut.

  3. Activer bash-it : Si vous choisissez de ne pas modifier votre .bashrc automatiquement, vous devrez ajouter la ligne suivante manuellement pour activer bash-it :

    Terminal window
    source ~/.bash_it/bash_it.sh
  4. Recharger la configuration : Pour appliquer les modifications, rechargez votre fichier .bashrc en utilisant la commande :

    Terminal window
    source ~/.bashrc

Configuration de bash-it

bash-it est livré avec de nombreuses fonctionnalités prêtes à l’emploi. Vous pouvez personnaliser votre installation en activant ou désactivant des modules spécifiques.

Activer et gérer les alias

Les alias sont stockés dans des fichiers individuels dans le dossier ~/.bash_it/aliases/enabled. Pour activer un alias, utilisez la commande :

Terminal window
bash-it show alias
Alias Enabled? Description
ag [ ] the silver searcher (ag) aliases
ansible [ ] ansible abbreviations
apt [ ] Apt and dpkg aliases for Ubuntu and Debian distros.
atom [ ] Atom.io editor abbreviations
bash-it [ ] Aliases for the bash-it command (these aliases are automatically included with the "general" aliases)
bolt [ ] puppet bolt aliases
bundler [ ] ruby bundler
bash-it enable alias ansible

Cette commande active un fichier d’alias spécifique (par exemple, pour Git) qui facilite l’exécution de commandes courantes.

Activer des plugins

Les plugins ajoutent des fonctionnalités spécifiques à votre terminal. Pour activer un plugin, utilisez la commande suivante :

Terminal window
bash-it show plugins
Plugin Enabled? Description
alias-completion [ ]
autojump [ ] Autojump configuration, see https://github.com/wting/autojump for more details
aws [ ] AWS helper functions
base [x] miscellaneous tools
...
bash-it enable plugin docker

Cette commande active le plugin Docker, qui fournit des commandes simplifiées et des complétions pour gérer vos conteneurs.

Activer des complétions

Les complétions de commande permettent à Bash de proposer des options lorsque vous commencez à taper une commande. Pour activer une complétion, utilisez :

Terminal window
bash-it enable completion ssh

Cela active la complétion pour les commandes SSH, facilitant la saisie de vos commandes de connexion.

Personnalisation des thèmes

L’un des aspects les plus attrayants de bash-it est la facilité avec laquelle vous pouvez personnaliser l’apparence de votre terminal grâce à une grande variété de thèmes. Ces thèmes permettent de modifier le prompt pour afficher des informations essentielles, telles que l’utilisateur, le nom de la machine, le répertoire courant, l’état de Git, et bien plus encore. Cette personnalisation rend l’environnement plus informatif et agréable à utiliser.

bash-it propose de nombreux thèmes prêts à l’emploi. Pour voir la liste complète des thèmes disponibles, vous pouvez parcourir le dossier ~/.bash_it/themes. Chaque sous-dossier contient un fichier .bash correspondant au thème.

Terminal window
ls ~/.bash_it/themes
90210 codeword font modern powerline-naked sexy
agnoster cooperkid gallifrey modern-t powerline-plain simple
atomic cupcake githelpers.theme.bash modern-time powerturk sirup
axin demula gitline morris primer slick
bakke dos hawaii50 n0qorg pro standard
barbuk doubletime inretio newin pure tonka
base.theme.bash doubletime_multiline iterate norbu purity tonotdo
binaryanomaly doubletime_multiline_pyonly kitsune nwinkler radek tylenol
bira dulcie lambda nwinkler_random_colors rainbowbrite wanelo
bobby duru liquidprompt oh-my-posh ramses zitron
bobby-python easy luan p4helpers.theme.bash rana zork
brainy elixr mairan parrot redline
brunton emperor mbriggs pete rjorgenson
candy envy metal powerline robbyrussell
clean essential minimal powerline-multiline roderik

Certains des thèmes les plus populaires incluent powerline, bobby, et pure.

Pour changer de thème, modifiez la variable BASH_IT_THEME dans votre fichier .bashrc. Par exemple, pour utiliser le thème powerline :

Terminal window
export BASH_IT_THEME='powerline'

Ensuite, rechargez votre configuration pour appliquer le nouveau thème :

Terminal window
source ~/.bashrc

Adapter le thème à vos besoins

Chaque thème peut être modifié pour inclure ou exclure certaines informations. Pour personnaliser un thème existant, localisez le fichier .bash correspondant dans le répertoire ~/.bash_it/themes, et apportez les modifications nécessaires.

Par exemple, pour ajouter une information sur l’état de la batterie à votre prompt, vous pouvez éditer le fichier et ajouter un appel de fonction approprié :

Terminal window
# Ajouter un segment d'état de la batterie
battery_status() {
if command -v acpi &> /dev/null; then
acpi -b | grep -o '[0-9]*%' | head -n 1
fi
}
export PS1='$(battery_status) '$PS1

Utilisation de fzf

fzf est un outil de recherche de fichiers en ligne de commande extrêmement performant et interactif, qui améliore considérablement la navigation dans le terminal. Voici comment l’installer, l’activer avec bash-it, et configurer votre .bashrc pour une utilisation optimale.

Installation de fzf

Pour installer fzf, vous pouvez utiliser le gestionnaire de paquets de votre système ou le cloner directement depuis GitHub.

  • Ubuntu/Debian :

    Terminal window
    sudo apt install fzf
  • Arch Linux :

    Terminal window
    sudo pacman -S fzf
  • macOS (avec Homebrew) :

    Terminal window
    brew install fzf

Activer le plugin fzf avec bash-it

Si vous utilisez bash-it, l’intégration est encore plus facile grâce au plugin dédié. Pour activer le plugin fzf, utilisez la commande suivante :

Terminal window
bash-it enable plugin fzf

Cette commande active le plugin fzf dans votre environnement bash-it et permet d’utiliser des commandes et des raccourcis pratiques liés à fzf.

Ajouter fzf dans le fichier .bashrc

Pour assurer un fonctionnement optimal de fzf, il est recommandé d’ajouter quelques lignes de configuration à votre fichier .bashrc. Voici ce que vous devez inclure :

Terminal window
# Option pour utiliser Ctrl+R pour la recherche dans l'historique
source /usr/share/bash-completion/completions/fzf
source /usr/share/doc/fzf/examples/key-bindings.bash
export FZF_DEFAULT_OPTS="--height 40% --reverse --border"

Recharger la configuration

Après avoir modifié votre fichier .bashrc, rechargez-le pour appliquer les changements :

Terminal window
source ~/.bashrc

Écriture de scripts Bash

L’écriture de scripts Bash est une compétence essentielle pour automatiser les tâches répétitives et simplifier l’administration des systèmes. Dans ce chapitre, je vais brièvement introduire les concepts de base de l’écriture de scripts Bash et vous renvoyer vers mes guides pour des détails approfondis sur la création et la sécurisation des scripts.

Un script Bash est un fichier contenant une série de commandes qui sont exécutées en séquence. Ces scripts permettent d’automatiser des tâches complexes et de créer des processus reproductibles.

Un script Bash commence par la ligne de shebang, qui indique au système que le fichier doit être exécuté avec Bash :

#!/usr/bin/env bash
echo "Bonjour, ceci est un script Bash simple"

Cette première ligne #!/usr/bin/env bash doit être présente au début du fichier pour que le système sache quel interpréteur utiliser. Ensuite, des commandes et des instructions sont ajoutées pour former le corps du script.

Dans les scripts Bash, vous pouvez utiliser des variables pour stocker des valeurs et des paramètres pour rendre le script plus flexible.

#!/usr/bin/env bash
nom_utilisateur=$1
echo "Bienvenue, $nom_utilisateur!"

Ici, $1 représente le premier argument passé au script.

Les structures de contrôle telles que if, for, et while permettent de contrôler le flux d’exécution du script.

#!/bin/bash
if [ -f "/etc/passwd" ]; then
echo "Le fichier /etc/passwd existe."
else
echo "Le fichier /etc/passwd n'existe pas."
fi

Pour exécuter un script, il doit être rendu exécutable :

Terminal window
chmod +x mon_script.sh
./mon_script.sh

Plus loin dans l’écriture de scripts Bash

Pour apprendre à écrire correctement vos scripts et adopter de bonnes pratiques, je vous recommande de consulter mes guides détaillés :

Conclusion

Pour aller encore plus loin dans la personnalisation, envisagez l’intégration d’outils supplémentaires tels que asdf et direnv. asdf est un gestionnaire de versions qui vous permet de gérer facilement plusieurs versions de langages de programmation et d’outils, idéal pour les développeurs travaillant sur des projets variés. direnv est un utilitaire qui charge et décharge automatiquement des variables d’environnement spécifiques en fonction du répertoire courant, rendant la gestion des environnements de développement plus fluide et sans erreur.

Ces outils, combinés à bash-it, permettent de créer un environnement de développement avancé et personnalisé, parfaitement adapté à vos besoins. On arrive presque au même niveau que le shell zsh.