Gagnez des heures : navigation, recherche, édition de masse et automatisation Bash pour développeurs. Raccourcis, pipes et scripts clairs.
Débogage et optimisation Développement Web

Manifeste anti‑clic : boostez votre productivité au terminal

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/popd gè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 avec q.
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.log combine pager et suivi, bascule avec Ctrl‑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 find pour les cas courants.
  • bat : cat avec 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 + fzf pour 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *