Tutoriel Tmux : Multiplexeur de Terminal pour Linux
Tmux (Terminal Multiplexer) est un outil puissant qui vous permet de gérer plusieurs sessions de terminal dans une seule fenêtre. Il est particulièrement utile pour exécuter des processus longs, organiser votre flux de travail et maintenir des sessions qui persistent même après vous être déconnecté d'un serveur.
Qu'est-ce que Tmux ?
Tmux est un multiplexeur de terminal, ce qui signifie qu'il vous permet d'exécuter plusieurs sessions de terminal dans une seule fenêtre de terminal. Considérez-le comme un gestionnaire de fenêtres pour votre terminal - il vous permet de créer, d'accéder et de contrôler plusieurs sessions de terminal, chacune avec plusieurs fenêtres et panneaux.
Le concept fondamental de tmux est la séparation du terminal (votre émulateur de terminal comme gnome-terminal, iTerm2, etc.) des sessions qui s'exécutent à l'intérieur. Cette séparation offre des capacités puissantes qui seraient autrement impossibles avec un terminal standard.
Comment fonctionne Tmux
Tmux fonctionne avec une architecture client-serveur :
Serveur : Lorsque vous exécutez une commande tmux pour la première fois, un processus serveur tmux démarre en arrière-plan. Ce serveur gère toutes vos sessions, fenêtres et panneaux.
Sessions : Une session est une instance de tmux qui peut contenir plusieurs fenêtres. Chaque session est indépendante et peut être attachée ou détachée des clients de terminal.
Client : Lorsque vous exécutez des commandes tmux, vous créez en réalité des connexions client au serveur tmux. Ces clients affichent ce qui se passe dans une session.
Cette architecture est ce qui donne à tmux ses puissantes capacités de persistance. Même si tous les clients se déconnectent, le serveur continue de fonctionner, gardant vos sessions actives.
Pourquoi utiliser Tmux ?
Tmux offre plusieurs avantages clés qui le rendent inestimable pour le travail en terminal :
Sessions persistantes
L'une des fonctionnalités les plus puissantes de tmux est la persistance des sessions. Vos sessions continuent de fonctionner même lorsque vous vous déconnectez du terminal. C'est particulièrement précieux lorsque :
- Vous travaillez sur des serveurs distants via SSH
- Vous exécutez des processus longs qui prennent des heures à compléter
- Vous êtes déconnecté de façon inattendue d'une session de terminal
Gestion des fenêtres et des panneaux
Tmux vous permet d'organiser efficacement votre travail en terminal :
- Créer plusieurs fenêtres dans une seule session (comme des onglets de navigateur)
- Diviser les fenêtres en plusieurs panneaux pour le multitâche
- Redimensionner et réorganiser les panneaux selon vos besoins
- Exécuter plusieurs commandes simultanément dans une disposition structurée
Productivité améliorée
Tmux améliore considérablement votre flux de travail en terminal :
- Basculer entre différents projets ou tâches sans ouvrir plusieurs fenêtres de terminal
- Maintenir des environnements de travail cohérents entre les sessions de terminal
- Utiliser des raccourcis clavier pour naviguer rapidement entre les fenêtres et les panneaux
- Copier et coller du texte entre les panneaux et les sessions
Installation de Tmux
Avant d'utiliser tmux, vous devrez l'installer :
Ubuntu/Debian :
sh
sudo apt update
sudo apt install tmux
CentOS/RHEL/Fedora :
sh
# CentOS/RHEL
sudo yum install tmux
# Fedora
sudo dnf install tmux
macOS :
sh
# Avec Homebrew
brew install tmux
Concepts de base de Tmux
Comprendre la structure hiérarchique de tmux est essentiel pour l'utiliser efficacement :
Session : Le conteneur de niveau supérieur qui peut contenir plusieurs fenêtres. Une session est ce à quoi vous vous attachez et détachez. Chaque session a un nom unique et peut être considérée comme un espace de travail de projet.
Fenêtre : Similaire à un onglet dans un navigateur, une fenêtre existe au sein d'une session et peut contenir un ou plusieurs panneaux. Chaque fenêtre a son propre ensemble de panneaux et peut exécuter différents programmes indépendamment.
Panneau : Une vue de terminal séparée dans une fenêtre. Les panneaux vous permettent d'exécuter plusieurs programmes côte à côte dans la même fenêtre. Vous pouvez diviser les fenêtres horizontalement ou verticalement pour créer des panneaux.
Cette hiérarchie à trois niveaux (Session → Fenêtre → Panneau) fournit un système d'organisation puissant pour votre travail en terminal. Par exemple, vous pourriez avoir une session pour un projet de développement web avec plusieurs fenêtres (une pour le code, une pour les logs, une pour la base de données), chacune avec plusieurs panneaux (éditeur, terminal, sortie).
Démarrer Tmux
Il existe plusieurs façons de démarrer tmux, selon vos besoins :
Créer une nouvelle session
Pour démarrer une nouvelle session tmux sans nom :
sh
tmux
Cela ouvrira une nouvelle session tmux avec une barre d'état en bas affichant les informations de session.
Créer une session nommée
Pour une meilleure organisation, surtout lorsque vous travaillez sur plusieurs projets, créez des sessions nommées :
sh
tmux new -s nom_session
Les sessions nommées facilitent l'identification et la gestion de plusieurs sessions.
Se connecter à une session existante
Pour vous connecter à une session existante :
sh
tmux attach -t nom_session
Si vous n'avez qu'une seule session, vous pouvez simplement utiliser :
sh
tmux attach
Comprendre la barre d'état
Lorsque vous démarrez tmux, vous remarquerez une barre d'état au bas du terminal. Cette barre fournit des informations importantes :
- Nom de la session actuelle
- Liste des fenêtres avec la fenêtre active mise en évidence
- Informations système comme l'heure et la date
- Nom d'hôte
La barre d'état est votre principal indicateur visuel de ce qui se passe dans tmux, et elle peut être personnalisée pour afficher des informations supplémentaires.
Raccourcis clavier de Tmux
Toutes les commandes tmux commencent par une touche préfixe. Par défaut, c'est Ctrl+b
. Après avoir appuyé sur la touche préfixe, vous pouvez appuyer sur une autre touche pour exécuter une commande.
Par exemple, pour créer une nouvelle fenêtre, vous appuieriez sur Ctrl+b
suivi de c
.
Comprendre le mécanisme de touche préfixe
Le mécanisme de touche préfixe est central au fonctionnement de tmux. Puisque tmux s'exécute à l'intérieur d'un terminal, il a besoin d'un moyen de distinguer entre :
- Les commandes que vous voulez envoyer aux programmes s'exécutant dans tmux
- Les commandes que vous voulez envoyer à tmux lui-même
En exigeant une touche préfixe avant les commandes tmux, tmux peut intercepter ces commandes tout en permettant à toutes les autres frappes de passer à vos programmes. C'est pourquoi vous pouvez utiliser vim, emacs ou tout autre programme basé sur terminal normalement à l'intérieur de tmux - tmux ne capture que les combinaisons de touches spécifiques qui commencent par le préfixe.
Pourquoi Ctrl+b ?
La touche préfixe par défaut Ctrl+b
a été choisie parce qu'elle est rarement utilisée par d'autres programmes. Cependant, de nombreux utilisateurs la changent en Ctrl+a
(similaire à GNU Screen) car elle est plus facile à presser d'une seule main.
Mode commande
Après avoir appuyé sur la touche préfixe, tmux entre en mode commande pendant une brève période (configurable) durant laquelle il attend votre commande. Si vous appuyez sur la mauvaise touche ou changez d'avis, vous pouvez appuyer sur Esc
ou attendre le délai d'expiration pour revenir au fonctionnement normal.
Commandes de base de Tmux
Gestion des sessions
tmux new -s nom_session
- Créer une nouvelle session avec un nom spécifiquetmux ls
- Lister toutes les sessionstmux attach -t nom_session
- Se connecter à une session existantetmux kill-session -t nom_session
- Tuer une session spécifique
Dans une session Tmux
Ctrl+b d
- Se détacher de la session actuelleCtrl+b $
- Renommer la session actuelleCtrl+b s
- Lister toutes les sessions et basculer entre elles
Gestion des fenêtres
Ctrl+b c
- Créer une nouvelle fenêtreCtrl+b n
- Passer à la fenêtre suivanteCtrl+b p
- Passer à la fenêtre précédenteCtrl+b w
- Lister toutes les fenêtres et en sélectionner uneCtrl+b ,
- Renommer la fenêtre actuelleCtrl+b &
- Fermer la fenêtre actuelle
Gestion des panneaux
Ctrl+b %
- Diviser le panneau actuel verticalementCtrl+b "
- Diviser le panneau actuel horizontalementCtrl+b o
- Basculer entre les panneauxCtrl+b ;
- Basculer vers le dernier panneau actifCtrl+b x
- Fermer le panneau actuelCtrl+b z
- Basculer le zoom du panneau (maximiser/minimiser)Ctrl+b {
- Déplacer le panneau actuel vers la gaucheCtrl+b }
- Déplacer le panneau actuel vers la droite
Mode copie
Ctrl+b [
- Entrer en mode copie- Touches fléchées ou navigation de style vim (h,j,k,l) pour se déplacer
Espace
- Commencer la sélectionEntrée
- Copier la sélectionCtrl+b ]
- Coller le texte copié
Exemples pratiques
Exemple 1 : Exécuter un processus long
L'un des cas d'utilisation les plus courants de tmux est l'exécution de processus longs qui doivent continuer même si vous vous déconnectez du terminal.
Démarrer une nouvelle session tmux nommée :
shtmux new -s processus_long
Créer une session nommée la rend plus facile à identifier plus tard.
Exécuter votre processus long (par exemple, une sauvegarde) :
shtar -czf backup.tar.gz /home/user/data
Ce processus s'exécutera à l'intérieur de la session tmux.
Si vous devez vous déconnecter : Appuyez sur
Ctrl+b
puisd
pour vous détacher de la session.Se détacher n'arrête pas le processus - il continue de s'exécuter en arrière-plan. C'est le mécanisme clé qui permet la persistance.
Plus tard, se reconnecter pour vérifier le processus :
shtmux attach -t processus_long
Lorsque vous vous reconnectez, vous verrez l'état actuel de votre processus exactement comme il était lorsque vous êtes parti.
Exemple 2 : Organiser votre travail de développement
Tmux excelle dans l'organisation de flux de travail complexes avec plusieurs tâches connexes.
Démarrer une nouvelle session pour votre projet :
shtmux new -s projet
Cela crée un espace de travail dédié à votre projet.
Créer des fenêtres pour différentes tâches :
- Appuyez sur
Ctrl+b c
pour créer une fenêtre pour le codage - Appuyez à nouveau sur
Ctrl+b c
pour créer une fenêtre pour les logs - Appuyez à nouveau sur
Ctrl+b c
pour créer une fenêtre pour la documentation
Chaque fenêtre est comme un onglet, isolant différents aspects de votre travail.
- Appuyez sur
Dans une fenêtre, divisez les panneaux pour le multitâche :
- Appuyez sur
Ctrl+b %
pour diviser verticalement pour l'éditeur et le terminal - Appuyez sur
Ctrl+b "
pour diviser horizontalement pour la sortie
Les panneaux vous permettent de voir simultanément plusieurs vues connexes.
- Appuyez sur
Naviguer dans votre espace de travail organisé :
- Utilisez
Ctrl+b n
etCtrl+b p
pour basculer entre les fenêtres - Utilisez
Ctrl+b o
pour parcourir les panneaux dans la fenêtre actuelle - Utilisez
Ctrl+b w
pour voir une liste visuelle de toutes les fenêtres
- Utilisez
Cette organisation vous permet de maintenir un environnement de travail cohérent pour chaque projet. Lorsque vous revenez à votre session "projet", tout est exactement comme vous l'avez laissé.
Exemple 3 : Session collaborative
Plusieurs utilisateurs peuvent se connecter à la même session tmux, permettant un travail collaboratif :
L'utilisateur 1 crée une session :
shtmux new -s collaboration
L'utilisateur 2 (connecté au même système) se connecte à la même session :
shtmux attach -t collaboration
Les deux utilisateurs verront le même terminal, et les actions d'un utilisateur seront visibles pour l'autre. C'est possible parce que l'architecture client-serveur de tmux permet à plusieurs clients de se connecter à la même session.
Personnalisation de Tmux
Tmux est hautement personnalisable via son fichier de configuration ~/.tmux.conf
. Ce fichier est lu au démarrage de tmux et vous permet de modifier les raccourcis clavier, l'apparence, le comportement, et plus encore.
Comprendre la configuration de tmux
Le fichier de configuration tmux utilise une syntaxe simple où chaque ligne est une commande. Les commentaires commencent par #
. Voici un exemple de base avec des explications :
bash
# Définir la touche préfixe à Ctrl+a (comme screen)
# C'est souvent préféré car c'est plus facile à presser d'une seule main
unbind C-b # Supprimer la liaison de touche préfixe par défaut
set -g prefix C-a # Définir Ctrl+a comme nouvelle touche préfixe
bind C-a send-prefix # Permettre à Ctrl+a Ctrl+a de passer aux programmes
# Activer la prise en charge de la souris
# Avec ceci activé, vous pouvez cliquer pour sélectionner des panneaux, redimensionner des panneaux et faire défiler
set -g mouse on
# Définir le style de la barre d'état
# Personnaliser l'apparence de la barre d'état en bas
set -g status-style bg=black,fg=white
# Activer la prise en charge des 256 couleurs
# Cela garantit que les programmes à l'intérieur de tmux peuvent afficher correctement les couleurs
set -g default-terminal "screen-256color"
# Augmenter le tampon de défilement
# Cela vous permet de faire défiler vers le haut et de voir plus d'historique dans chaque panneau
set -g history-limit 10000
# Réassigner le changement de panneau pour utiliser les touches de style vim
# Cela rend la navigation plus intuitive pour les utilisateurs de vim
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
Appliquer les changements de configuration
Après avoir créé ou modifié ~/.tmux.conf
, vous avez deux options :
- Redémarrer tmux (ce qui mettra fin à vos sessions)
- Recharger la configuration dans votre session tmux existante :sh
tmux source-file ~/.tmux.conf
La deuxième option est préférable car elle applique les changements sans perturber votre travail. Vous pouvez même lier une touche pour le faire automatiquement :
bash
# Recharger la configuration avec préfixe + r
bind r source-file ~/.tmux.conf
Portée de la configuration
Remarquez le drapeau -g
dans de nombreuses commandes de configuration. Cela signifie "global" et signifie que le paramètre s'applique à toutes les sessions, fenêtres et panneaux. Sans -g
, les paramètres ne s'appliquent qu'à la session actuelle.
Les options de configuration peuvent être définies à différents niveaux :
- Global (avec
-g
) : S'applique partout - Session : S'applique à une session
- Fenêtre : S'applique à une fenêtre
- Panneau : S'applique à un panneau
Résumé
Tmux est un outil incroyablement puissant pour gérer les sessions de terminal qui fonctionne sur une architecture client-serveur, offrant la persistance des sessions, la gestion des fenêtres et l'organisation des panneaux.
Mécanismes clés
Architecture client-serveur : Tmux s'exécute comme un processus serveur qui gère les sessions indépendamment des clients de terminal, permettant des sessions persistantes qui survivent aux déconnexions.
Organisation hiérarchique : La structure à trois niveaux (Session → Fenêtre → Panneau) fournit une organisation puissante pour les flux de travail complexes.
Système de touche préfixe : Le mécanisme de touche préfixe permet à tmux d'intercepter les commandes tout en transmettant toutes les autres frappes aux programmes s'exécutant à l'intérieur.
Détachement et rattachement : La capacité de se détacher des sessions sans arrêter les processus est ce qui rend tmux inestimable pour le travail à distance et les tâches de longue durée.
Avantages
- Persistance : Ne perdez jamais votre travail en raison de problèmes de réseau ou de fermetures de terminal
- Organisation : Structurez des flux de travail complexes avec des fenêtres et des panneaux
- Collaboration : Plusieurs utilisateurs peuvent voir et interagir avec la même session
- Efficacité des ressources : Exécutez plusieurs terminaux dans une seule fenêtre de terminal
- Productivité : Naviguez rapidement entre les tâches avec des raccourcis clavier
Avec de la pratique, tmux peut améliorer considérablement votre productivité lorsque vous travaillez dans des environnements de terminal. La courbe d'apprentissage initiale est rapidement récompensée par les gains d'efficacité de la gestion de flux de travail complexes en terminal avec facilité.