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
Dotfiles — versionner sa configuration
Section intitulée « Dotfiles — versionner sa configuration »Les dotfiles (.bashrc, .zshrc, .gitconfig, .vimrc…) contiennent ta configuration. Sans gestion, tu perds tout en changeant de machine.
Approche par symlinks (la plus courante)
Section intitulée « Approche par symlinks (la plus courante) »~/dotfiles/├── .bashrc├── .zshrc├── .gitconfig├── .tmux.conf├── .vimrc├── starship.toml└── install.sh ← script qui crée les symlinksinstall.sh minimal :
#!/usr/bin/env bashset -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 :
git clone https://github.com/toi/dotfiles.git ~/dotfilescd ~/dotfiles && ./install.shÉmulateurs de terminal
Section intitulée « Émulateurs de terminal »Le terminal par défaut de macOS / Windows n’est pas terrible. Quelques alternatives modernes :
| Émulateur | Plateformes | Forces |
|---|---|---|
| Wezterm | Toutes | GPU-accéléré, Lua config, ligatures, multiplexage |
| Alacritty | Toutes | Ultra rapide, minimaliste |
| iTerm2 | macOS | Mature, riche en features |
| Windows Terminal | Windows | Très bon depuis 2020 |
| Ghostty | macOS / Linux | Récent, GPU, expérience moderne |
Conseil : prends Wezterm si tu veux un truc qui marche partout pareil avec une config Lua versionnable.
Shells modernes
Section intitulée « Shells modernes »bash reste le défaut universel. Mais tu peux faire mieux pour ton interactif quotidien.
zsh + oh-my-zsh / prezto
Section intitulée « zsh + oh-my-zsh / prezto »# Installer zshsudo apt install zsh # ou brew install zsh
# Le mettre par défautchsh -s $(which zsh)
# Oh My Zsh (framework de plugins)sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Fish — l’ultra-friendly
Section intitulée « Fish — l’ultra-friendly »brew install fish # macOSsudo apt install fish
# Auto-completions intelligentes par défaut, pas de config ésotériqueLimite : ce n’est pas POSIX-compatible. Certains scripts shell ne fonctionneront pas tels quels.
Starship — un prompt universel
Section intitulée « Starship — un prompt universel »starship.rs — prompt rapide, riche, configurable, qui marche sur bash/zsh/fish/PowerShell.
curl -sS https://starship.rs/install.sh | sh
# .zshrc ou .bashrceval "$(starship init zsh)"~/.config/starship.toml :
add_newline = true
[character]success_symbol = "[➜](bold green)"error_symbol = "[✗](bold red)"
[git_branch]symbol = "🌿 "
[directory]truncation_length = 3truncate_to_repo = trueTu obtiens un prompt qui montre branche Git, version Node/Python, statut, durée de la dernière commande, etc.
Les outils Unix nouvelle génération
Section intitulée « Les outils Unix nouvelle génération »Les outils Unix classiques (grep, find, ls, cat) sont datés. Leurs remplaçants modernes sont plus rapides, plus lisibles, et respectent .gitignore.
| Classique | Moderne | Apport |
|---|---|---|
grep | ripgrep (rg) | 10× plus rapide, respecte .gitignore, regex moderne |
find | fd | Syntaxe humaine (fd config au lieu de find . -name "*config*") |
ls | eza (ex-exa) | Couleurs, icônes, tri par date, --git |
cat | bat | Coloration syntaxique, git diff, line numbers |
du | dust | Visuel arborescent |
ps | procs | Affichage moderne |
top | bottom (btm), htop | Plus lisible |
| (rien) | fzf | Recherche fuzzy partout (commandes, fichiers, git…) |
| (rien) | zoxide | cd intelligent qui apprend |
Installation rapide
Section intitulée « Installation rapide »# 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 zoxideQuelques exemples
Section intitulée « Quelques exemples »# ripgreprg "TODO" # cherche "TODO" partout en ignorant node_modules etc.rg "TODO" -t js # juste les fichiers JSrg -n "useState" # avec numéros de lignerg "user" --glob '!*.test.*' # exclure les tests
# fdfd config # tous les fichiers contenant "config"fd -e tsx # tous les .tsxfd -H .env # inclure les fichiers cachés
# fzfctrl+r dans le terminal # historique de commandes recherchablectrl+t # picker de fichierscat $(fzf) # ouvrir un fichier choisi interactivementgit 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)Aliases utiles
Section intitulée « Aliases utiles »Ajoute à ton .zshrc / .bashrc :
# Outils modernes en remplacementalias ls='eza --icons --git'alias ll='eza -l --icons --git'alias la='eza -la --icons --git'alias cat='bat --paging=never'alias find='fd'
# Gitalias gs='git status'alias gc='git commit'alias gd='git diff'alias gp='git push'alias gl='git log --oneline --graph --decorate -20'
# Dockeralias dc='docker compose'alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
# Sécuritéalias rm='rm -i' # demande confirmationtmux — multiplexer le terminal
Section intitulée « tmux — multiplexer le terminal »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).
brew install tmux # ou apt install tmux
tmux # démarrertmux new -s mon-projet # session nomméetmux ls # listertmux attach -t mon-projet # réattacherRaccourcis essentiels (préfixe Ctrl+B par défaut)
Section intitulée « Raccourcis essentiels (préfixe Ctrl+B par défaut) »| Action | Raccourci |
|---|---|
| Nouvelle fenêtre | Ctrl+B puis c |
| Suivante / précédente | Ctrl+B puis n / p |
| Renommer fenêtre | Ctrl+B puis , |
| Split horizontal | Ctrl+B puis " |
| Split vertical | Ctrl+B puis % |
| Naviguer entre panes | Ctrl+B puis flèches |
| Détacher | Ctrl+B puis d |
~/.tmux.conf typique :
# Préfixe plus accessibleunbind C-bset -g prefix C-abind C-a send-prefix
# Numérotation 1-basedset -g base-index 1setw -g pane-base-index 1
# Mode sourisset -g mouse on
# Couleursset -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'Alternative légère — Zellij
Section intitulée « Alternative légère — Zellij »zellij.dev : équivalent moderne de tmux, sans la courbe d’apprentissage. Raccourcis affichés en bas de l’écran. Plus accessible aux débutants.
Workflow type d’une journée de dev
Section intitulée « Workflow type d’une journée de dev »Voici à quoi ressemble une session productive :
1. ouvrir Wezterm2. 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'historique4. z client-x pour cd ~/projects/clients/client-x5. fd Component pour trouver un fichier6. rg useUser pour chercher les usages d'un hook7. lazygit pour les opérations Git interactivesTu touches très peu la souris. Ton terminal devient un cockpit.
Auto-évaluation
Section intitulée « Auto-évaluation »Pour aller plus loin
Section intitulée « Pour aller plus loin »- Modern Unix — github.com/ibraheemdev/modern-unix — catalogue exhaustif
- MIT Missing Semester — Lecture 9 : Potpourri — astuces avancées
- Awesome Dotfiles — github.com/webpro/awesome-dotfiles
- Starship — starship.rs
- Ton propre repo
dotfilessur GitHub — c’est aussi un signal fort en candidature
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/.