Nous passons nos journées dans des IDE (VS Code, PhpStorm, Eclipse…). Confortables, oui. Efficaces ? Pas toujours. La souris rassure mais ralentit. Le terminal (Bash/Zsh) reste l’outil le plus rapide, puissant et composable pour un dev moderne. Ce n’est pas un manuel d’admin Linux : c’est un kit de survie productif.
D’ici la fin, vous penserez probablement : « Pourquoi je n’ai pas appris Bash plus tôt ? »
1 – Naviguer sans souris 🧭
La première étape pour gagner du temps est de se libérer de l’explorateur de fichiers. Le terminal permet une navigation instantanée et une visibilité que l’interface graphique ne peut égaler.
| Commande | Signification | Hack du dev | 
|---|---|---|
| pwd | Répertoire courant | Indispensable quand on jongle entre projets. | 
| ls -lha | Liste détaillée (fichiers cachés, tailles humaines) | Vue immédiate de l’état d’un projet. | 
| cd <dossier> | Changer de dossier | Tab pour auto‑compléter. | 
| cd - | Revenir au dossier précédent | Switch éclair entre deux projets éloignés. | 
Astuce :
pushd/popdgèrent une pile de répertoires.
2 – Manipuler comme un chirurgien 🔪
Quand il s’agit de créer, copier, déplacer ou supprimer des ressources, l’interface graphique est synonyme de clics multiples. Le terminal vous donne le pouvoir d’agir sur des dizaines de fichiers ou toute une arborescence en une seule frappe.
| Commande | Signification | Hack du dev | 
| mkdir -p a/b/c | Créer une arbo en une passe | Fini la création séquentielle. | 
| touch .env | Créer un fichier (ou MAJ mtime) | Idéal pour init rapide. | 
| cp -r src dest/ | Copier récursivement | Dupliquez modules/dossiers en 1 ligne. | 
| mv a b | Déplacer/Renommer | Rename rapide sans ouvrir de GUI. | 
| rm -rf cible | Supprimer récursif/forcé | Dangereux. Voir alias sécurisé ci‑dessous. | 
Alias sûrs (à mettre dans ~/.bashrc) :
alias rm='rm -i' # confirmation avant suppression
alias cp='cp -i' # confirmation avant overwrite
alias mv='mv -i' # confirmation avant overwrite
# et un alias explicite quand vous VOULEZ forcer
alias rmk='rm -rf' # à manier consciemment 
3 – Voir et traquer 👁️🗨️
L’un des défis les plus constants en développement est de suivre ce qui se passe en temps réel, notamment les logs. Ces commandes transforment la lecture d’un fichier plat en un outil de monitoring dynamique.
| Commande | Utilité | Pourquoi c’est mieux | 
| cat fichier | Afficher tout | Pour petits fichiers de config. | 
| less fichier | Pager interactif | Scroll, recherche /mot, sortir avecq. | 
| head -n 50 | Début d’un fichier | Voir l’entête d’un log/config. | 
| tail -n 50 fichier | Fin du fichier | Voit les derniers événements. | 
| tail -f app.log | Follow en temps réel | Monitoring live simple et efficace. | 
Bonus :
less +F app.logcombine pager et suivi, bascule avecCtrl‑C.
4 – Le Véritable Super-Pouvoir : Pipes (|) et Redirections 
C’est ici que l’on passe de l’exécution d’une commande à la création d’un flux de travail. Le secret des développeurs qui maîtrisent Bash est l’utilisation des Pipes et des Redirections. Ils permettent de transformer la sortie d’une commande en l’entrée d’une autre, ou de la capturer dans un fichier.
Le Pipe (|) : Filtrer pour Dominer
Le Pipe (|) prend le résultat (la sortie standard, STDOUT) de la commande A et l’envoie à l’entrée standard (STDIN) de la commande B. C’est l’assemblage de briques.
# Trouver un process Node et l’arrêter proprement
ps aux | grep node | grep server.js | awk '{print $2}' | xargs -r kill
# Encore mieux :
pkill -f 'node .*server.js' # pkill/pgrep sont dédiés aux PIDs    
# Variante directe basée sur un motif : à utiliser seulement 
si le motif identifie SANS ambiguïTÉ le bon processus.
La Redirection (> et >>) : Le Journaliste du Terminal
Les opérateurs de redirection permettent d’envoyer la sortie d’une commande non pas au terminal, mais vers un fichier.
- >: Écrit le résultat dans un fichier (écrase le contenu s’il existe).
- >>: Ajoute le résultat à la fin d’un fichier (utile pour les logs de session).
# Documenter la structure du projet (hors lourds dossiers)
command -v tree >/dev/null || sudo apt install tree
tree -I 'node_modules|vendor|.git' > project_structure.txt 
5 – L’Édition de Masse : Le Coup de Grâce à l’IDE 💥
Recherche récursive
# Toutes les occurrences de API_V1 dans les .js
grep -R --line-number --include='*.js' 'API_V1' .
Remplacement sûr dans des centaines de fichiers
Problème : espaces/nouveaux lignes dans les noms de fichiers cassent xargs.
Solution : utilisez les null‑separators.
# Remplacer ancienNom par nouveauNom dans tous les fichiers
# 1) lister les fichiers concernés
grep -Rl --null 'ancienNom' . | \
xargs -0 sed -i 's/ancienNom/nouveauNom/g'
Mac (BSD
sed) :sed -i '' 's/ancienNom/nouveauNom/g'.
Sélections plus fines avec find
								
# Ne toucher qu'aux sources JS/TS
find . -type f \( -name '*.js' -o -name '*.ts' \) -print0 | \
xargs -0 sed -i 's/ancienNom/nouveauNom/g'
6 – Automatiser : votre premier ops 🤖
Un script = des minutes gagnées chaque jour.
#!/usr/bin/env bash
set -euo pipefail
# =======================================================
# SCRIPT : Nettoyage Express des Dépendances de Projets
# =======================================================
# Options :
#   -n | --dry-run   : n’affiche que ce qui serait supprimé
#   -y               : ne pas demander de confirmation
#   -h | --help      : aide
# Cibles par défaut :
#   node_modules, vendor, dist, build, __pycache__, .cache
# =======================================================
usage() {
  cat <<'EOF'
Usage: ./clean.sh [options]
  -n, --dry-run   Prévisualiser sans supprimer
  -y              Ne pas demander de confirmation
  -h, --help      Afficher l\'aide
EOF
}
DRY_RUN=false
AUTO_YES=false
# --- Parsing options robuste ---
while (($#)); do
  case "$1" in
    -n|--dry-run) DRY_RUN=true ;;
    -y)           AUTO_YES=true ;;
    -h|--help)    usage; exit 0 ;;
    *)            echo "Option inconnue: $1" >&2; usage; exit 2 ;;
  esac
  shift
done
# --- Cibles à purger ---
TARGETS=( "node_modules" "vendor" "dist" "build" "__pycache__" ".cache" )
printf '🧹 Scan en cours…\n'
deleted=0
previewed=0
for DIR in "${TARGETS[@]}"; do
  # -prune évite de descendre dans le dossier une fois trouvé (rapide)
  while IFS= read -r -d '' path; do
    printf ' -> %s\n' "$path"
    if [[ "$DRY_RUN" == true ]]; then
      ((previewed++))
      continue
    fi
    if [[ "$AUTO_YES" == false ]]; then
      read -r -p "Supprimer ? [y/N] " ans
      [[ "$ans" =~ ^[Yy]$ ]] || continue
    fi
    rm -rf -- "$path"
    ((deleted++))
  done < <(find . -type d -name "$DIR" -prune -print0)
done
# --- Résumé ---
if [[ "$DRY_RUN" == true ]]; then
  printf '📝 Prévisualisation terminée. %d élément(s) ciblé(s).\n' "$previewed"
else
  printf '✅ Terminé. %d élément(s) supprimé(s).\n' "$deleted"
fi
7 – Raccourcis clavier & expansions qui changent tout ⚡
- Ctrl‑R : recherche interactive dans l’historique.
- !! : rejouer la dernière commande (ex: sudo !!).
- !$ / Alt+. : dernier argument de la commande précédente.
- Ctrl‑A / Ctrl‑E : début/fin de ligne.
- Ctrl‑U / Ctrl‑K : supprimer avant/après le curseur.
- ** (backslash) : échappe l’auto‑complétion pour coller tel quel.
8 – Outils modernes à envisager 🧰
- rg(ripgrep) : plus rapide que- grep.
- fd: plus simple que- findpour les cas courants.
- bat:- catavec numéros/« syntax highlight ».
- eza: remplaçant moderne de- ls.
- fzf: fuzzy‑finder (tue- Ctrl‑R).
- tldr: exemples concrets pour chaque commande.
Astuce : combinez
rg+fzfpour une navigation‑recherche ultra‑rapide.
9 – IDE + Terminal : meilleur des deux mondes 🧩
VS Code
Terminal intégré (Ctrl+\``), *Tasks* (tasks.json`), Problem Matchers (capturent les erreurs). Mappez des raccourcis pour lancer vos scripts.
PhpStorm
File Watchers + Terminal, exécutez eslint/php-cs-fixer au save.
Règle d’or
l’IDE n’initie pas l’action — il déclenche vos scripts.
10) Mini‑cheatsheet
# Navigation
cd - # retour dossier précédent
pushd some/dir && popd
# Process
pgrep -fl "node" # lister PIDs par motif
pkill -f "node server" # tuer par motif
# Logs
tail -f storage/logs/laravel.log
less +F app.log # suivre avec pager
# Grep/Sed
grep -R "API_V1" src/
find . -name '*.js' -print0 | xargs -0 sed -i 's/foo/bar/g' 
    
Conclusion : Bienvenue dans le Monde de l’efficacité sobre 🚀
La souris rassure, la ligne de commande délivre. Commencez simple : remplacez une manipulation à la souris par une commande. Puis factorisez dans un script. Votre futur vous dira merci.
Next step : cron, systemd user units, hooks Git — automatiser tout ce qui peut l’être.
FAQ (schema‑ready)
Q. rm -rf me fait peur, des alternatives ?
R. Activez trash-cli (Linux) ou gio trash, ou remplacez rm par un alias qui envoie à la corbeille.
Q. Et sous Windows ?
R. Utilisez WSL (Ubuntu) pour bénéficier de Bash + apt. Sinon, PowerShell a des équivalents (Get-ChildItem, Select-String, Remove-Item).
Q. Zsh vs Bash ?
R. Zsh + oh‑myzsh apporte complétion supérieure et plugins. Les commandes montrées marchent dans les deux.


 
										