Aller au contenu

Maîtrisez Zsh

Mise à jour :

Zsh est un shell Unix interactif et scriptable, reconnu pour sa richesse fonctionnelle et sa flexibilité. Il est souvent choisi par les utilisateurs qui souhaitent aller au-delà des capacités offertes par bash ou d’autres shells traditionnels. Grâce à ses fonctionnalités avancées comme l’autocomplétion intelligente, la gestion des plugins et la personnalisation poussée, Zsh est devenu un outil incontournable pour de nombreux administrateurs systèmes et développeurs.

Dans ce guide, je vais vous montrer comment installer, configurer et utiliser Zsh pour optimiser votre expérience en ligne de commande. Vous trouverez ici des conseils pratiques pour tirer pleinement parti de ce shell puissant. De l’installation à la personnalisation en passant par l’utilisation de Oh My Zsh, ce guide couvre tout ce dont vous avez besoin pour commencer à utiliser Zsh efficacement.

Historique de Zsh

Zsh a été créé en 1990 par Paul Falstad, dans le but de combiner les meilleures fonctionnalités des shells existants à l’époque, tels que bash, ksh et tcsh, tout en ajoutant de nouvelles fonctionnalités.

Au fil des ans, Zsh a progressivement gagné en popularité grâce à sa flexibilité et ses capacités avancées. Initialement, il était surtout utilisé par une poignée d’utilisateurs expérimentés qui recherchaient plus de fonctionnalités que ce que les shells traditionnels pouvaient offrir. Avec le temps, des développeurs et administrateurs systèmes ont commencé à adopter Zsh pour sa capacité à améliorer la productivité en ligne de commande.

Un tournant décisif pour la popularité de Zsh a été l’introduction de Oh My Zsh en 2009, un framework qui a grandement simplifié la gestion de la configuration, l’ajout de plugins et la personnalisation du shell. Grâce à Oh My Zsh, même les utilisateurs moins techniques ont pu accéder facilement aux puissantes fonctionnalités de Zsh.

Aujourd’hui, Zsh est utilisé par des millions d’adminstrateurs dans le monde entier. Il est devenu le shell par défaut sur macOS depuis Catalina (version 10.15), ce qui témoigne de sa robustesse et de sa popularité croissante. Cette adoption massive n’est pas seulement due à son historique, mais aussi à la communauté active qui continue de développer et d’améliorer Zsh, le rendant ainsi toujours plus performant et convivial.

Installation de Zsh

Voyons comment installer Zsh sur Linux, macOS et Windows.

Installation sur Linux

Sur la plupart des distributions Linux, Zsh est disponible directement dans les dépôts de paquets. Voici comment l’installer sur les distributions les plus courantes.

Ubuntu / Debian

Sur Ubuntu et Debian, l’installation de Zsh se fait simplement avec les commandes suivantes :

Terminal window
sudo apt update
sudo apt install zsh

CentOS / RHEL

Pour CentOS et Red Hat Enterprise Linux (RHEL), vous pouvez installer Zsh en utilisant yum ou dnf selon votre version :

Terminal window
sudo yum install zsh

ou

Terminal window
sudo dnf install zsh

Arch Linux

Sur Arch Linux, Zsh peut être installé avec pacman :

Terminal window
sudo pacman -S zsh

Installation sur macOS

Sur macOS, Zsh est préinstallé à partir de la version Catalina (10.15). Toutefois, si vous n’avez pas la dernière version Zsh (5.9 actuellement), vous pouvez le faire via Homebrew :

Terminal window
brew install zsh

Une fois installé, vous pouvez vérifier la version de Zsh avec la commande suivante :

Terminal window
zsh --version

Installation sur Windows

Sur Windows, Zsh peut être utilisé à travers le Windows Subsystem for Linux (WSL). Pour l’installer, suivez ces étapes :

  1. Installez WSL avec une distribution Linux comme Ubuntu.
  2. Ouvrez le terminal WSL et utilisez les commandes spécifiques à la distribution pour installer Zsh (par exemple, sudo apt install zsh pour Ubuntu).

Définir le shell par défaut

Pour que Zsh devienne votre shell par défaut, vous devez exécuter la commande suivante :

Terminal window
chsh -s $(which zsh)

Cela modifiera votre shell par défaut dans le fichier /etc/passwd, ce qui signifie que chaque fois que vous ouvrirez un terminal, Zsh sera lancé automatiquement.

Premier pas avec Zsh

Une fois Zsh installé, la première chose à faire de configurer les paramètres de base pour adapter le shell à vos besoins.

Lancer Zsh pour la première fois

Pour lancer Zsh, il vous suffit de taper zsh dans votre terminal. La première fois que vous le faites, Zsh vous proposera une configuration initiale. Vous verrez un message vous demandant si vous souhaitez exécuter la configuration initiale :

Terminal window
$ zsh
Do you want to create the configuration file ~/.zshrc? [Y/n]

Si vous choisissez Y, Zsh va générer un fichier de configuration minimal dans votre répertoire personnel appelé .zshrc. Ce fichier contrôle le comportement de Zsh et peut être modifié pour ajuster votre environnement.

Dans certains cas, ce fichier est vide, mais nous allons voir comment le compléter.

Configurer votre environnement

L’un des premiers éléments à configurer est votre prompt (l’invite de commande). Le prompt est la ligne qui s’affiche dans votre terminal avant que vous saisissiez une commande. Avec Zsh, vous pouvez personnaliser votre prompt pour afficher des informations utiles comme le nom de l’utilisateur, le nom de la machine et le répertoire courant. Par exemple :

Terminal window
export PS1='%n@%m:%~%# '

Cet exemple affiche le nom de l’utilisateur (%n), le nom de la machine (%m), et le répertoire courant (%~), suivi d’un # pour l’utilisateur root, ou d’un $ pour un utilisateur normal.

La liste des paramètres :

  • %n : Nom d’utilisateur
  • %m : Nom de la machine (hostname)
  • %* : Heure actuelle au format 24 heures (HH:MM:SS)
  • %~ : Répertoire courant
  • %# : Affiche # si root, $ sinon
  • %? : Code de retour de la dernière commande exécutée (0 si succès, autre chose si échec)

Voici quelques exemples de prompts plus complets que vous pouvez utiliser dans votre fichier .zshrc. Ces prompts incluent des informations supplémentaires telles que l’heure, le statut de la dernière commande, l’utilisateur, le nom de la machine et même des éléments spécifiques comme les informations Git si vous travaillez dans un dépôt.

Terminal window
export PS1='%n@%m [%*] %~ %# '

Exemple d’affichage :

user@hostname [14:30:12] ~/projects $
Terminal window
export PS1='%(!.%F{red}.%F{green})%n@%m%f:%~ %# [%?] '
  • %(!…) : Affiche en rouge si root, en vert sinon
  • %n : Nom d’utilisateur
  • %m : Nom de la machine
  • %~ : Répertoire courant
  • %# : Affiche # si root, $ sinon

Utilisation de couleurs

Les couleurs dans le prompt Zsh sont configurées en utilisant des séquences d’échappement spécifiques qui indiquent au terminal de changer la couleur du texte. Ces séquences sont entourées par les codes %F{color} et %f dans votre prompt.

  • %F{color} : Change la couleur du texte à la couleur spécifiée.
  • %f : Réinitialise la couleur du texte à la valeur par défaut (généralement blanc ou gris selon votre terminal).

Les couleurs de base que vous pouvez utiliser sont les suivantes :

  • black : Noir
  • red : Rouge
  • green : Vert
  • yellow : Jaune
  • blue : Bleu
  • magenta : Magenta (violet)
  • cyan : Cyan (bleu clair)
  • white : Blanc

Activer l’autocomplétion

L’autocomplétion est l’une des fonctionnalités les plus utiles de Zsh. Pour l’activer, ajoutez les lignes suivantes à votre fichier .zshrc :

Terminal window
autoload -U compinit
compinit

Ces commandes chargent et initialisent le système d’autocomplétion de Zsh, vous permettant de compléter automatiquement les noms de commandes, les chemins de fichiers et bien plus encore en appuyant simplement sur la touche Tab.

Gérer les alias

Les alias sont des raccourcis pour les commandes que vous utilisez fréquemment. Par exemple, au lieu de taper ls -la chaque fois que vous voulez lister les fichiers d’un répertoire avec des détails, vous pouvez créer un alias :

Terminal window
alias ll='ls -la'

Cela vous permet de taper simplement ll au lieu de ls -la.

Tester la configuration

Après avoir effectué des modifications dans votre fichier .zshrc, vous devez recharger la configuration pour voir les changements en exécutant :

Terminal window
source ~/.zshrc

Autocomplétion dans Zsh

L’un des atouts majeurs de Zsh par rapport à d’autres shells est son système d’autocomplétion avancée, qui va bien au-delà de ce que propose bash. L’autocomplétion dans Zsh permet de compléter automatiquement non seulement les noms de fichiers et de commandes, mais aussi les options des commandes, les variables d’environnement, les chemins de répertoires et bien plus encore. Dans cette section, je vais vous expliquer comment activer et personnaliser l’autocomplétion dans Zsh pour rendre votre expérience en ligne de commande encore plus efficace.

  • Complétion intelligente des commandes :

    Par exemple, si vous commencez à taper git ch et appuyez sur Tab, Zsh peut suggérer git checkout ou git cherry-pick, selon ce qui est le plus probable en fonction du contexte.

  • Complétion des options de commandes :

    Zsh ne se limite pas à la complétion des noms de commandes. Il peut aussi compléter les options spécifiques aux commandes. Par exemple, si vous tapez ls -- et appuyez sur Tab, Zsh affichera une liste de toutes les options possibles pour la commande ls, comme --all, --long, etc.

  • Complétion des noms de fichiers et de répertoires :

    Zsh excelle dans la complétion des chemins de fichiers et de répertoires. Si vous commencez à taper un chemin, Zsh peut compléter automatiquement le nom du fichier ou du répertoire en fonction du contexte actuel. Par exemple, si vous tapez cd /u et appuyez sur Tab, Zsh peut compléter /usr/ si c’est le seul répertoire correspondant.

  • Complétion des variables d’environnement :

    Lorsque vous tapez une commande qui utilise une variable d’environnement, Zsh peut compléter le nom de la variable pour vous. Par exemple, si vous tapez echo $P et appuyez sur Tab, Zsh peut compléter avec $PATH ou toute autre variable d’environnement commençant par P.

  • Autocomplétion contextuelle :

    Zsh est capable de fournir des complétions contextuelles, ce qui signifie qu’il peut ajuster ses suggestions en fonction de la situation. Par exemple, si vous utilisez la commande ssh, Zsh peut compléter les noms d’hôtes connus à partir du fichier ~/.ssh/known_hosts.

  • Autocomplétion des arguments de commandes :

    Certaines commandes acceptent des arguments spécifiques et Zsh peut les compléter également. Par exemple, si vous utilisez kill pour arrêter un processus, Zsh peut compléter avec les PID des processus en cours d’exécution.

La navigation dans le terminal

Zsh offre une multitude d’options pour améliorer la navigation dans le terminal, rendant votre expérience plus fluide et efficace. Que vous passiez d’un répertoire à un autre, que vous recherchiez des commandes dans votre historique, ou que vous souhaitiez rapidement corriger une faute de frappe, Zsh dispose d’outils puissants pour vous aider. Dans cette section, je vais vous montrer comment exploiter ces fonctionnalités pour naviguer plus facilement et efficacement dans votre terminal.

L’une des fonctionnalités les plus pratiques de Zsh est la gestion avancée de l’historique des commandes. Zsh vous permet de retrouver et réexécuter rapidement des commandes que vous avez tapées précédemment.

  • Recherche dans l’historique avec Ctrl + R Vous pouvez rechercher dans l’historique des commandes en appuyant sur Ctrl + R. Cette combinaison de touches ouvre une recherche incrémentale dans l’historique. Commencez à taper une partie de la commande que vous recherchez et Zsh affichera la commande la plus récente correspondant à votre saisie.
    • Exemple : Si vous avez précédemment exécuté git push origin main et que vous tapez git, Zsh vous proposera cette commande. Vous pouvez ensuite appuyer sur Entrée pour l’exécuter à nouveau ou sur les flèches pour naviguer dans les autres commandes correspondantes.
  • Navigation dans l’historique avec les flèches Vous pouvez également utiliser les flèches et pour parcourir les commandes précédentes. Zsh mémorise l’ensemble des commandes que vous avez exécutées dans votre session et vous permet de les parcourir rapidement.

Changement rapide de répertoires

Naviguer entre différents répertoires est une tâche quotidienne pour tout utilisateur de Zsh. Heureusement, Zsh offre plusieurs moyens d’accélérer cette navigation.

  • Utilisation de cd et de la complétion Le moyen le plus simple de changer de répertoire est d’utiliser la commande cd, suivie d’une partie du chemin, puis d’appuyer sur la touche Tab. Zsh complétera automatiquement le reste du chemin si celui-ci est unique, ou vous proposera des options si plusieurs possibilités existent.

    • Exemple : Tapez cd /u et appuyez sur Tab. Si /usr/ est le seul répertoire correspondant, Zsh le complétera pour vous.
  • Retour au répertoire précédent avec cd - Vous pouvez rapidement revenir au dernier répertoire dans lequel vous étiez en utilisant cd -. Cette commande est particulièrement utile lorsque vous travaillez entre deux répertoires.

    • Exemple : Si vous êtes dans /home/user/projects et que vous changez de répertoire vers /etc, taper cd - vous ramènera instantanément à /home/user/projects.

Les raccourcis clavier dans la ligne de commande

Lorsque vous tapez une longue commande avec plusieurs arguments, il peut être fastidieux de revenir en arrière pour modifier une partie spécifique. Zsh offre des raccourcis pour naviguer rapidement dans une ligne de commande :

  1. Ctrl + A ou Cmd + ← : Place le curseur au début de la ligne.
  2. Ctrl + E ou Cmd + → : Place le curseur à la fin de la ligne.
  3. Alt + B ou Option + ←: Déplace le curseur d’un mot en arrière.
  4. Alt + F ou Option + →: Déplace le curseur d’un mot en avant.
  5. Ctrl + B : Déplace le curseur d’un caractère en arrière (équivalent à la flèche gauche).
  6. Ctrl + F : Déplace le curseur d’un caractère en avant (équivalent à la flèche droite).
  7. Ctrl + U : Coupe tout ce qui se trouve avant le curseur sur la ligne de commande et le place dans le presse-papiers.
  8. Ctrl + K : Coupe tout ce qui se trouve après le curseur sur la ligne de commande et le place dans le presse-papiers.
  9. Ctrl + W : Supprime le mot situé juste avant le curseur.
  10. Ctrl + Y : Colle le texte précédemment coupé avec Ctrl + U, Ctrl + K, ou Ctrl + W.
  11. Ctrl + L : Efface l’écran et repositionne le curseur en haut, similaire à la commande clear.
  12. Ctrl + T : Échange (transpose) les deux caractères situés juste avant le curseur.

Personnalisation avec ‘Oh My Zsh!’

L’une des principales raisons pour lesquelles Zsh est si populaire est sa capacité à être facilement personnalisé. Oh My Zsh est un framework open-source qui facilite cette personnalisation en offrant une gestion simplifiée des thèmes et des plugins. Dans cette section, je vais vous guider à travers l’installation de Oh My Zsh, l’utilisation de thèmes pour personnaliser votre prompt et l’ajout de plugins pour étendre les fonctionnalités de Zsh.

oh-my-zsh

Installation de Oh My Zsh

L’installation de Oh My Zsh est très simple. Elle peut être effectuée en exécutant une seule commande dans votre terminal. Cette commande télécharge et installe Oh My Zsh, puis configure Zsh pour utiliser ce framework.

Terminal window
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Une fois l’installation terminée, Oh My Zsh remplace automatiquement votre fichier .zshrc actuel par un nouveau fichier .zshrc de base, tout en sauvegardant l’ancien sous le nom .zshrc.pre-oh-my-zsh.

Utilisation des thèmes

L’un des avantages de Oh My Zsh est la facilité avec laquelle vous pouvez changer le thème de votre prompt. Oh My Zsh est livré avec une variété de thèmes préinstallés, chacun modifiant l’apparence de votre prompt.

Pour changer de thème, vous devez modifier la variable ZSH_THEME dans votre fichier .zshrc. Par exemple, pour utiliser le thème agnoster, ouvrez votre fichier .zshrc dans un éditeur de texte et modifiez la ligne correspondante :

Terminal window
ZSH_THEME="agnoster"

Après avoir modifié le thème, rechargez votre fichier .zshrc pour appliquer les changements :

Terminal window
source ~/.zshrc

Voici quelques thèmes populaires inclus avec Oh My Zsh :

  • robbyrussell (le thème par défaut) : Un thème simple et propre.
  • agnoster : Un thème très populaire, surtout lorsqu’il est utilisé avec des polices supportant les icônes powerline.
  • spaceship : Un thème minimaliste et performant qui affiche des informations contextuelles comme l’état du dépôt Git.

Vous pouvez voir tous les thèmes disponibles ici.

Ajouter et gérer des plugins

Oh My Zsh facilite également l’ajout de plugins pour étendre les fonctionnalités de Zsh. Ces plugins peuvent améliorer la complétion automatique, ajouter des raccourcis pour les commandes fréquemment utilisées, et bien plus encore.

Les plugins sont définis dans le fichier .zshrc dans la section plugins. Par exemple, pour activer les plugins git et zsh-autosuggestions, modifiez la ligne suivante dans votre .zshrc :

Terminal window
plugins=(git zsh-autosuggestions)

Après avoir ajouté ou modifié les plugins, rechargez votre fichier .zshrc pour appliquer les changements :

Terminal window
source ~/.zshrc

Plugins populaires

Voici quelques plugins populaires que vous pouvez envisager d’activer :

  • git : Ajoute de nombreuses commandes pratiques pour travailler avec Git.
  • zsh-syntax-highlighting : Ajoute la coloration syntaxique dans le terminal pour améliorer la lisibilité des commandes.
  • zsh-autosuggestions : Affiche des suggestions de commandes en fonction de votre historique lorsque vous commencez à taper une commande.
  • docker : Ajoute des raccourcis et des complétions pour travailler avec Docker.

Personnalisation avancée avec .oh-my-zsh/custom

Si vous souhaitez aller encore plus loin dans la personnalisation, Oh My Zsh permet d’ajouter des scripts personnalisés, des thèmes et des plugins dans le répertoire ~/.oh-my-zsh/custom. Cela vous permet de personnaliser votre environnement sans affecter les fichiers de configuration principaux, ce qui est particulièrement utile lors des mises à jour d’Oh My Zsh.

Le thème Powerlevel10k

Powerlevel10k est un thème pour Zsh qui transforme radicalement l’apparence et la fonctionnalité de votre prompt.

powerlevel10k zsh

Fonctionnalités avancées de Powerlevel10k

Powerlevel10k offre également des fonctionnalités avancées pour les utilisateurs qui souhaitent encore plus de personnalisation :

  1. Prompt conditionnel : Afficher ou masquer des segments du prompt en fonction de conditions spécifiques, comme l’état d’un dépôt Git ou le type de machine.
  2. Prompt dynamique : Réduire automatiquement la longueur du prompt lorsque l’espace est limité, en supprimant ou en simplifiant certains segments.
  3. Integration avec des outils tiers : Powerlevel10k peut s’intégrer avec d’autres outils et environnements, comme les environnements Python ou Node.js, pour afficher des informations contextuelles dans le prompt.

Installation de polices spécifiques avec Powerlevel10k

Pour tirer pleinement parti des icônes et des symboles spéciaux de Powerlevel10k, il est recommandé d’utiliser une police compatible comme MesloLGS NF, qui est optimisée pour les terminaux avec des caractères supplémentaires. Voici comment installer cette police :

  1. Téléchargez et installez la police MesloLGS NF : Vous pouvez télécharger la police directement depuis le dépôt GitHub de Powerlevel10k : MesloLGS NF Ouvrez le fichier téléchargé et cliquez sur “Installer la police”.
  2. Configurer le terminal pour utiliser la nouvelle police :
    • Ouvrez les préférences de votre Terminal.
    • Changez la police en sélectionnant MesloLGS NF.

Installation de Powerlevel10k

L’installation de Powerlevel10k est simple et peut être effectuée de plusieurs manières. Si vous utilisez Oh My Zsh, voici comment l’installer :

  1. Clonez le dépôt de Powerlevel10k dans le répertoire des thèmes d’Oh My Zsh :

    Terminal window
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
  2. Configurez Oh My Zsh pour utiliser Powerlevel10k en tant que thème :

    Ouvrez votre fichier .zshrc dans un éditeur de texte et modifiez la ligne définissant le thème :

    Terminal window
    ZSH_THEME="powerlevel10k/powerlevel10k"
  3. Rechargez votre fichier .zshrc pour appliquer les modifications :

    Terminal window
    source ~/.zshrc

Configuration initiale de Powerlevel10k

Une fois Powerlevel10k installé, il se lance automatiquement avec un assistant de configuration lors du premier démarrage. Cet assistant vous guide à travers plusieurs options pour personnaliser l’apparence de votre prompt.

  1. Lancement de l’assistant de configuration :

    Si l’assistant ne se lance pas automatiquement, vous pouvez l’exécuter manuellement avec la commande :

    Terminal window
    p10k configure
  2. Options de personnalisation :

    L’assistant vous demandera de choisir des options telles que :

    • Apparence du prompt : Minimaliste, classique, ou avec des segments riches en informations.
    • Icônes et symboles : Choisissez si vous souhaitez utiliser des icônes et des symboles spéciaux (nécessite une police compatible).
    • Indicateurs de statut : Activez ou désactivez les indicateurs de statut pour des éléments tels que l’état du dépôt Git, l’état des commandes précédentes, etc.
    • Couleurs et styles : Choisissez parmi différentes palettes de couleurs et styles pour correspondre à vos préférences visuelles.

Personnalisation manuelle de Powerlevel10k

Bien que l’assistant de configuration offre une grande flexibilité, vous pouvez également personnaliser Powerlevel10k manuellement en éditant le fichier de configuration généré .p10k.zsh. Ce fichier contient toutes les options de configuration que vous avez sélectionnées, ainsi que des variables supplémentaires que vous pouvez ajuster pour affiner encore plus votre prompt.

  1. Accès au fichier .p10k.zsh :

    Vous pouvez ouvrir ce fichier avec un éditeur de texte pour y apporter des modifications :

    Terminal window
    nano ~/.p10k.zsh
  2. Personnalisation des segments du prompt :

    Powerlevel10k organise le prompt en segments, chacun représentant une information spécifique comme le nom d’utilisateur, l’hôte, le répertoire courant, l’état Git, etc. Vous pouvez activer, désactiver, ou réorganiser ces segments en modifiant les lignes correspondantes dans .p10k.zsh.

    • Exemple : Pour ajouter ou retirer l’affichage de l’utilisateur, trouvez la ligne suivante :

      Terminal window
      typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(context dir vcs)

      Ici, context représente l’utilisateur et l’hôte. Vous pouvez le supprimer de la liste si vous ne souhaitez pas afficher ces informations.

  3. Changer les couleurs et les icônes :

    Chaque segment du prompt peut être personnalisé avec des couleurs et des icônes spécifiques. Par exemple, pour changer la couleur du répertoire courant, modifiez la variable suivante :

    Terminal window
    typeset -g POWERLEVEL9K_DIR_FOREGROUND=39

    Vous pouvez également personnaliser les icônes en modifiant les variables comme POWERLEVEL9K_DIR_ICON.

Créer et utiliser des fonctions personnalisées

Zsh vous permet de créer des fonctions personnalisées, qui sont des blocs de code réutilisables pouvant exécuter une série de commandes. Les fonctions sont extrêmement utiles pour automatiser des tâches répétitives, simplifier des commandes complexes, ou ajouter des fonctionnalités spécifiques à votre environnement de travail. Dans cette section, je vais vous montrer comment créer, utiliser et gérer des fonctions personnalisées dans votre fichier .zshrc.

Créer une fonction de base

Une fonction Zsh est définie avec la syntaxe suivante :

Terminal window
nom_de_la_fonction() {
# Code à exécuter
}

Par exemple, imaginons que vous souhaitez créer une fonction qui va rapidement créer un nouveau répertoire et se déplacer à l’intérieur de celui-ci. Vous pouvez définir cette fonction comme suit :

Terminal window
mkcd() {
mkdir -p "$1"
cd "$1"
}

Avec cette fonction, vous pouvez simplement taper mkcd nom_du_dossier pour créer un nouveau répertoire et y entrer immédiatement.

Utilisation de paramètres dans une fonction

Les fonctions peuvent également accepter des paramètres, ce qui les rend encore plus flexibles. Dans l’exemple précédent, $1 fait référence au premier argument passé à la fonction (dans ce cas, le nom du répertoire).

Voici un autre exemple où une fonction prend plusieurs arguments. Supposons que vous souhaitiez créer une fonction qui archive un dossier spécifique :

Terminal window
backup() {
local source_dir="$1"
local backup_dir="$2"
tar -czvf "${backup_dir}/$(basename "$source_dir")_backup_$(date +%Y%m%d).tar.gz" "$source_dir"
}

Cette fonction backup prend deux arguments : le répertoire à sauvegarder (source_dir) et le répertoire de destination (backup_dir). Elle crée une archive tar.gz du répertoire source et la place dans le répertoire de sauvegarde avec un nom de fichier incluant la date.

Fonctions avec logique conditionnelle

Les fonctions peuvent également inclure des conditions et des boucles, permettant de créer des scripts plus sophistiqués directement dans votre Zsh. Voici un exemple de fonction qui vérifie si un fichier existe avant de le supprimer :

Terminal window
safe_remove() {
if [ -f "$1" ]; then
rm "$1"
echo "$1 a été supprimé."
else
echo "Erreur : $1 n'existe pas."
fi
}

Avec cette fonction, vous pouvez être sûr que le fichier existe avant d’essayer de le supprimer, évitant ainsi des erreurs.

Gestion des fonctions dans .zshrc

Les fonctions personnalisées sont généralement ajoutées directement dans votre fichier .zshrc, ce qui les rend disponibles chaque fois que vous ouvrez un nouveau terminal. Pour ajouter une fonction, ouvrez simplement votre fichier .zshrc avec un éditeur de texte :

Terminal window
nano ~/.zshrc

Ensuite, ajoutez la définition de votre fonction à la fin du fichier ou dans une section dédiée aux fonctions. Par exemple :

Terminal window
# Fonctions personnalisées
mkcd() {
mkdir -p "$1"
cd "$1"
}
backup() {
local source_dir="$1"
local backup_dir="$2"
tar -czvf "${backup_dir}/$(basename "$source_dir")_backup_$(date +%Y%m%d).tar.gz" "$source_dir"
}
safe_remove() {
if [ -f "$1" ]; then
rm "$1"
echo "$1 a été supprimé."
else
echo "Erreur : $1 n'existe pas."
fi
}

Recharger et tester vos fonctions

Après avoir ajouté vos fonctions, n’oubliez pas de recharger votre fichier .zshrc pour que les modifications soient prises en compte :

Terminal window
source ~/.zshrc

Vous pouvez maintenant utiliser vos fonctions dans le terminal comme n’importe quelle autre commande.

Organisation avancée : les fichiers séparés

Si vous avez de nombreuses fonctions ou des fonctions complexes, vous pouvez les organiser dans des fichiers séparés pour maintenir un .zshrc propre et facile à gérer. Par exemple, vous pouvez créer un fichier ~/.zsh_functions pour y stocker toutes vos fonctions :

  1. Créez un fichier pour vos fonctions :

    Terminal window
    touch ~/.zsh_functions
  2. Déplacez vos fonctions dans ce fichier.

  3. Dans votre .zshrc, sourcez ce fichier pour charger les fonctions au démarrage :

    Terminal window
    source ~/.zsh_functions

Recommandations pour aller plus loin

Bien que ce guide couvre les bases et quelques aspects avancés de Zsh, il reste encore beaucoup à explorer. Voici quelques recommandations pour approfondir votre maîtrise de Zsh :

  1. Explorez davantage de plugins : Zsh dispose de nombreux plugins au-delà de ceux mentionnés dans ce guide. Visitez le dépôt Oh My Zsh Plugins pour découvrir d’autres plugins qui pourraient correspondre à vos besoins spécifiques.
  2. Automatisez vos tâches quotidiennes : Utilisez les fonctions et les scripts Zsh pour automatiser les tâches répétitives. Cela peut inclure des scripts de déploiement, la gestion de fichiers, ou l’intégration avec d’autres outils comme Docker ou Kubernetes.
  3. Contribuez à la communauté Zsh : Si vous avez développé des configurations, des fonctions, ou des plugins utiles, envisagez de les partager avec la communauté Zsh. Vous pouvez contribuer à des projets existants ou créer votre propre dépôt GitHub.
  4. Restez à jour avec les nouvelles versions de Zsh : Zsh continue d’évoluer, avec des nouvelles fonctionnalités et des corrections de bugs. Assurez-vous de garder votre installation Zsh à jour pour profiter des dernières améliorations.

Conclusion

En investissant du temps pour personnaliser et optimiser votre configuration Zsh, vous pouvez non seulement améliorer votre productivité, mais aussi rendre votre environnement de travail plus agréable et mieux adapté à vos besoins. Je vous encourage à continuer d’explorer, d’expérimenter et de faire de Zsh un outil central dans votre boîte à outils de développeur.

Bonne continuation avec Zsh !