Esc
 Naviguer  Ouvrir Esc Fermer
Aller au contenu

4.5 — Productivité

🎯 Objectif : configurer un environnement terminal qui te fait gagner 10 minutes par jour. Cumulé sur une carrière, ça fait des semaines de travail récupérées.

À l'issue de cet axe, tu sauras :

  • Versionner ses dotfiles pour reproduire son environnement partout
  • Choisir un émulateur de terminal moderne
  • Maîtriser ripgrep, fd, fzf, bat, eza — les remplaçants modernes des outils Unix
  • Utiliser tmux pour organiser plusieurs sessions
  • Personnaliser son shell (zsh, bash, fish) avec un prompt utile

Débutant 10 min prérequis : axe 1 lu

Les dotfiles (.bashrc, .zshrc, .gitconfig, .vimrc…) contiennent ta configuration. Sans gestion, tu perds tout en changeant de machine.

~/dotfiles/
├── .bashrc
├── .zshrc
├── .gitconfig
├── .tmux.conf
├── .vimrc
├── starship.toml
└── install.sh ← script qui crée les symlinks

install.sh minimal :

#!/usr/bin/env bash
set -euo pipefail
DOTFILES="$HOME/dotfiles"
for file in .bashrc .zshrc .gitconfig .tmux.conf; do
ln -sfv "$DOTFILES/$file" "$HOME/$file"
done
mkdir -p "$HOME/.config"
ln -sfv "$DOTFILES/starship.toml" "$HOME/.config/starship.toml"

Versionne tout dans un repo public ou privé. Sur une nouvelle machine :

Fenêtre de terminal
git clone https://github.com/toi/dotfiles.git ~/dotfiles
cd ~/dotfiles && ./install.sh

Le terminal par défaut de macOS / Windows n’est pas terrible. Quelques alternatives modernes :

ÉmulateurPlateformesForces
WeztermToutesGPU-accéléré, Lua config, ligatures, multiplexage
AlacrittyToutesUltra rapide, minimaliste
iTerm2macOSMature, riche en features
Windows TerminalWindowsTrès bon depuis 2020
GhosttymacOS / LinuxRécent, GPU, expérience moderne

Conseil : prends Wezterm si tu veux un truc qui marche partout pareil avec une config Lua versionnable.

bash reste le défaut universel. Mais tu peux faire mieux pour ton interactif quotidien.

Fenêtre de terminal
# Installer zsh
sudo apt install zsh # ou brew install zsh
# Le mettre par défaut
chsh -s $(which zsh)
# Oh My Zsh (framework de plugins)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Fenêtre de terminal
brew install fish # macOS
sudo apt install fish
# Auto-completions intelligentes par défaut, pas de config ésotérique

Limite : ce n’est pas POSIX-compatible. Certains scripts shell ne fonctionneront pas tels quels.

starship.rs — prompt rapide, riche, configurable, qui marche sur bash/zsh/fish/PowerShell.

Fenêtre de terminal
curl -sS https://starship.rs/install.sh | sh
# .zshrc ou .bashrc
eval "$(starship init zsh)"

~/.config/starship.toml :

add_newline = true
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"
[git_branch]
symbol = "🌿 "
[directory]
truncation_length = 3
truncate_to_repo = true

Tu obtiens un prompt qui montre branche Git, version Node/Python, statut, durée de la dernière commande, etc.

Les outils Unix classiques (grep, find, ls, cat) sont datés. Leurs remplaçants modernes sont plus rapides, plus lisibles, et respectent .gitignore.

ClassiqueModerneApport
grepripgrep (rg)10× plus rapide, respecte .gitignore, regex moderne
findfdSyntaxe humaine (fd config au lieu de find . -name "*config*")
lseza (ex-exa)Couleurs, icônes, tri par date, --git
catbatColoration syntaxique, git diff, line numbers
dudustVisuel arborescent
psprocsAffichage moderne
topbottom (btm), htopPlus lisible
(rien)fzfRecherche fuzzy partout (commandes, fichiers, git…)
(rien)zoxidecd intelligent qui apprend
Fenêtre de terminal
# Avec Homebrew (Mac/Linux)
brew install ripgrep fd eza bat fzf zoxide
# Avec apt (Linux)
sudo apt install ripgrep fd-find bat fzf
# Avec scoop (Windows)
scoop install ripgrep fd eza bat fzf zoxide
Fenêtre de terminal
# ripgrep
rg "TODO" # cherche "TODO" partout en ignorant node_modules etc.
rg "TODO" -t js # juste les fichiers JS
rg -n "useState" # avec numéros de ligne
rg "user" --glob '!*.test.*' # exclure les tests
# fd
fd config # tous les fichiers contenant "config"
fd -e tsx # tous les .tsx
fd -H .env # inclure les fichiers cachés
# fzf
ctrl+r dans le terminal # historique de commandes recherchable
ctrl+t # picker de fichiers
cat $(fzf) # ouvrir un fichier choisi interactivement
git checkout $(git branch | fzf) # changer de branche en sélectionnant
# zoxide (alias z)
z dotfiles # cd vers ~/dotfiles (apprend de tes cd précédents)

Ajoute à ton .zshrc / .bashrc :

Fenêtre de terminal
# Outils modernes en remplacement
alias ls='eza --icons --git'
alias ll='eza -l --icons --git'
alias la='eza -la --icons --git'
alias cat='bat --paging=never'
alias find='fd'
# Git
alias gs='git status'
alias gc='git commit'
alias gd='git diff'
alias gp='git push'
alias gl='git log --oneline --graph --decorate -20'
# Docker
alias dc='docker compose'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
# Sécurité
alias rm='rm -i' # demande confirmation

tmux te permet d’avoir plusieurs sessions, fenêtres et panes dans un seul terminal, et de détacher / réattacher une session (utile en SSH).

Fenêtre de terminal
brew install tmux # ou apt install tmux
tmux # démarrer
tmux new -s mon-projet # session nommée
tmux ls # lister
tmux attach -t mon-projet # réattacher

Raccourcis essentiels (préfixe Ctrl+B par défaut)

Section intitulée « Raccourcis essentiels (préfixe Ctrl+B par défaut) »
ActionRaccourci
Nouvelle fenêtreCtrl+B puis c
Suivante / précédenteCtrl+B puis n / p
Renommer fenêtreCtrl+B puis ,
Split horizontalCtrl+B puis "
Split verticalCtrl+B puis %
Naviguer entre panesCtrl+B puis flèches
DétacherCtrl+B puis d

~/.tmux.conf typique :

Fenêtre de terminal
# Préfixe plus accessible
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# Numérotation 1-based
set -g base-index 1
setw -g pane-base-index 1
# Mode souris
set -g mouse on
# Couleurs
set -g default-terminal "tmux-256color"
# Plugins (tpm)
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
run '~/.tmux/plugins/tpm/tpm'

zellij.dev : équivalent moderne de tmux, sans la courbe d’apprentissage. Raccourcis affichés en bas de l’écran. Plus accessible aux débutants.

Voici à quoi ressemble une session productive :

1. ouvrir Wezterm
2. tmux attach -t projet (session sauvegardée)
- pane gauche : éditeur (nvim ou code .)
- pane droite haut : npm run dev
- pane droite bas : git, tests, etc.
3. ctrl+r pour retrouver une commande dans l'historique
4. z client-x pour cd ~/projects/clients/client-x
5. fd Component pour trouver un fichier
6. rg useUser pour chercher les usages d'un hook
7. lazygit pour les opérations Git interactives

Tu touches très peu la souris. Ton terminal devient un cockpit.

Tu cherches le mot 'apiKey' dans tout ton projet React. Commande la plus efficace ?
Pourquoi versionner ses dotfiles ?
Tu te connectes en SSH à un serveur, lances un script long, ta connexion tombe. Comment éviter ça ?

Fin de l’axe 4. Direction l’axe 5 — Frontend HTML & CSS, ou attaque le projet Docker Compose dans exercises/04-outils/01-stack-conteneurisee/.