Linux pour les devs - 01 - Le terminal, bash et zsh

Maitriser le terminal Linux : bash vs zsh, navigation, raccourcis clavier, historique et fichiers de config.

  1. 01 Linux pour les devs - 00 - Pourquoi Linux meme si tu codes sur Mac ou Windows
  2. 02 Linux pour les devs - 01 - Le terminal, bash et zsh
  3. 03 Linux pour les devs - 02 - Fichiers et répertoires
  4. 04 Linux pour les devs - 03 - Permissions et droits d'acces
  5. 05 Linux pour les devs - 04 - Utilisateurs, groupes et sudo
  6. 06 Linux pour les devs - 05 - nano, vim, sed et awk
  7. 07 Linux pour les devs - 06 - Pipes et redirections
  8. 08 Linux pour les devs - 07 - grep et find en profondeur
  9. 09 Linux pour les devs - 08 - Les processus : comprendre ce qui tourne sur ta machine
  10. 10 Linux pour les devs - 09 - systemd : gerer tes services comme un pro
  11. 11 Linux pour les devs - 10 - Le réseau : comprendre ce qui passe par le fil
  12. 12 Linux pour les devs - 11 - Le firewall : contrôler qui entre et qui sort
  13. 13 Linux pour les devs - 12 - SSH : l'acces distant sécurisé
  14. 14 Linux pour les devs - 13 - Les variables d'environnement : configurer sans hardcoder
  15. 15 Linux pour les devs - 14 - Scripts bash : automatiser pour ne plus se répéter
  16. 16 Linux pour les devs - 15 - cron : les taches planifiees
  17. 17 Linux pour les devs - 16 - Les logs : lire, filtrer, comprendre
  18. 18 Linux pour les devs - 17 - Stockage et disques
  19. 19 Linux pour les devs - 18 - Les gestionnaires de paquets
  20. 20 Linux pour les devs - 19 - Les conteneurs sans Docker
  21. 21 Linux pour les devs - 20 - Securiser un serveur Linux
  22. 22 Linux pour les devs - 21 - Performance et diagnostic
  23. 23 Linux pour les devs - 22 - tmux : le multiplexeur de terminal
  24. 24 Linux pour les devs - 23 - Glossaire Linux

01 - Le terminal, bash et zsh

Ce que tu vas apprendre

  • La différence entre bash et zsh (et pourquoi ca compte)
  • Naviguer dans le système de fichiers sans perdre le nord
  • Les raccourcis clavier qui te feront gagner des heures
  • L'historique des commandes et les alias

Prerequisites

Avoir un terminal ouvert (WSL, macOS Terminal, ou un serveur Linux). Voir l'article précédent si tu ne sais pas par ou commencer.


Le terminal, c'est pas une punition

Je sais que le terminal fait peur. Un ecran noir, pas de boutons, pas de menus. Ca sent les annees 80. Mais une fois que tu maitrises les bases, tu vas plus vite qu'avec n'importe quelle interface graphique. Je ne dis pas ca pour faire le geek. C'est juste un fait : taper mv *.json backup/ prend 2 secondes. Le faire a la souris avec un glisser-deposer sur 47 fichiers, c'est penible.

bash vs zsh : le match

Bash (Bourne Again Shell) est le shell par défaut sur la plupart des distributions Linux. Zsh (Z Shell) est le shell par défaut sur macOS depuis Catalina. Les deux sont tres proches :

bash# Verifier ton shell actuel
echo $SHELL
# /bin/bash ou /bin/zsh

# Verifier les shells disponibles
cat /etc/shells
# /bin/sh
# /bin/bash
# /bin/zsh
# /usr/bin/fish

# Changer de shell (permanent)
chsh -s /bin/zsh

En pratique, 95% de ce que tu ecris en bash fonctionne en zsh. Les différences qui comptent :

Fonctionnalite bash zsh
Autocompletion Basique Avancee (menus, fuzzy)
Globbing Standard Etendu (**/*.js)
Prompt Simple Tres personnalisable
Correction typo Non Oui (sl -> ls ?)
Themes/plugins Manuels Oh My Zsh

Mon avis : apprends bash d'abord (c'est ce que tu trouveras sur les serveurs), puis utilise zsh sur ta machine de dev pour le confort.

Les commandes de base, tu les connais peut-etre deja. Mais il y a des raccourcis que meme des devs seniors ignorent :

bash# Les basiques
pwd                  # Affiche le repertoire courant
ls                   # Liste le contenu
cd /var/log          # Aller dans /var/log

# Les raccourcis qui changent la vie
cd ~                 # Aller dans ton home (/home/nicolas)
cd                   # Pareil que cd ~ (sans argument)
cd -                 # Retourner au repertoire precedent
cd ..                # Remonter d'un niveau
cd ../..             # Remonter de deux niveaux

# Tab completion : tape le debut et appuie sur Tab
cd /etc/apa[TAB]     # Complete en /etc/apache2/
ls /usr/lo[TAB]      # Complete en /usr/local/

Le cd - est sous-estime. Quand tu alternes entre deux répertoires (genre ton code et tes logs), ca évité de retaper le chemin complet a chaque fois :

bash$ cd /var/log/nginx
$ cd /home/nicolas/project/src
$ cd -
/var/log/nginx
$ cd -
/home/nicolas/project/src

Les raccourcis clavier indispensables

C'est la que tu passes de débutant a efficace. Ces raccourcis fonctionnent dans bash et zsh :

bash# Navigation dans la ligne
Ctrl+A          # Aller au debut de la ligne
Ctrl+E          # Aller a la fin de la ligne
Ctrl+U          # Effacer du curseur jusqu'au debut
Ctrl+K          # Effacer du curseur jusqu'a la fin
Ctrl+W          # Effacer le mot precedent
Alt+B           # Reculer d'un mot
Alt+F           # Avancer d'un mot

# Controle
Ctrl+C          # Annuler la commande en cours
Ctrl+D          # Fermer le terminal (ou EOF)
Ctrl+L          # Effacer l'ecran (comme clear)
Ctrl+Z          # Suspendre le processus en cours

# Recherche
Ctrl+R          # Recherche dans l'historique (reverse search)

Le Ctrl+R merite qu'on s'y attarde. Tu appuies sur Ctrl+R, tu tapes un bout de commande, et bash te retrouve la dernière commande qui correspond. Tu rappuies sur Ctrl+R pour remonter dans l'historique. Quand tu l'as, tu appuies sur Entree.

bash$ (reverse-i-search)`docker': docker compose up -d
# J'ai tape "docker" et il m'a retrouve ma derniere commande docker

L'historique, ta mémoire externe

L'historique des commandes est stocke dans un fichier (~/.bash_history ou ~/.zsh_history). Voici comment l'exploiter :

bash# Voir l'historique complet
history

# Chercher dans l'historique
history | grep "docker"

# Repeter la derniere commande
!!

# Repeter avec sudo (classique : tu oublies sudo, tu fais sudo !!)
$ apt update
# Permission denied
$ sudo !!
sudo apt update
# Ca marche

# Reutiliser le dernier argument
$ mkdir -p /opt/myapp/config
$ cd !$
cd /opt/myapp/config

# Executer la commande numero 142 de l'historique
!142

# Configurer la taille de l'historique
echo 'HISTSIZE=10000' >> ~/.bashrc
echo 'HISTFILESIZE=20000' >> ~/.bashrc

Le combo sudo !! est celui que j'utilise le plus. Tu tapes une commande, ca dit "permission denied", tu fais sudo !! et c'est regle.

Les alias : tes raccourcis personnels

Un alias, c'est un raccourci pour une commande que tu tapes souvent :

bash# Definir un alias (temporaire, disparait a la fermeture du terminal)
alias ll='ls -la'
alias gs='git status'
alias dc='docker compose'

# Voir tous les alias actifs
alias

# Supprimer un alias
unalias ll

Pour rendre les alias permanents, tu les mets dans ton fichier de config :

bash# Pour bash
nano ~/.bashrc

# Pour zsh
nano ~/.zshrc

# Ajouter tes alias
alias ll='ls -lah'
alias gs='git status'
alias gp='git push'
alias dc='docker compose'
alias k='kubectl'
alias ..='cd ..'
alias ...='cd ../..'

# Recharger la config apres modification
source ~/.bashrc   # ou source ~/.zshrc

.bashrc et .zshrc : le fichier qui personnalise tout

Ce fichier est exécuté a chaque ouverture de terminal. C'est la que tu mets tes alias, tes variables d'environnement, et tes personnalisations :

bash# Exemple de .bashrc utile pour un dev
# ---

# Alias de navigation
alias ll='ls -lah --color=auto'
alias ..='cd ..'
alias ...='cd ../..'

# Alias git
alias gs='git status'
alias gl='git log --oneline -10'
alias gd='git diff'

# Alias Docker
alias dc='docker compose'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'

# Prompt personnalise (affiche le repertoire courant + branche git)
parse_git_branch() {
    git branch 2>/dev/null | grep '\*' | sed 's/* //'
}
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[33m\] $(parse_git_branch)\[\033[00m\]\$ '

# Historique ameliore
HISTSIZE=10000
HISTFILESIZE=20000
HISTCONTROL=ignoredups:erasedups  # Pas de doublons

Un conseil : versionne ton .bashrc ou .zshrc dans un repo git "dotfiles". Le jour ou tu changes de machine, tu recuperes ta config en 30 secondes.

Si tu cherches des exemples de dotfiles bien structures, paltemps.fr partage des ressources utiles pour les devs.

Résumé

  • bash est le standard sur les serveurs, zsh est plus confortable pour le quotidien
  • cd - pour alterner entre deux répertoires, Tab pour autocompleter
  • Ctrl+R pour chercher dans l'historique, !! pour répéter la dernière commande
  • Les alias dans .bashrc/.zshrc te font gagner des heures par semaine
  • Versionne ton fichier de config dans un repo dotfiles

Precedent : Introduction | Suivant : Fichiers et répertoires

Sources

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.