Aller au contenu principal

Bases du shell

Progression

#Bases du shell

Une commande a un nom, puis des arguments, et retourne un code de sortie (0 = succès). Après l’exécution, ce code est disponible dans la variable spéciale $?. On ne s’attarde pas à le vérifier à chaque ligne, mais il devient crucial dans des scripts.

Avant de plonger, deux réflexes: la complétion par tabulation (gagne du temps, évite les fautes) et la recherche dans l’historique avec Ctrl+R (retapez moins, réutilisez plus).

pwd annonce le répertoire courant. ls -lah liste en affichant droits, propriétaire, taille lisible. Le “globbing” (*.md, img_??.png) permet de cibler un groupe de fichiers sans écrire leurs noms un par un.

#Rediriger et chaîner

Le shell manipule trois flux: entrée (stdin), sortie (stdout), erreurs (stderr). > redirige la sortie vers un fichier (en l’écrasant), >> ajoute à la fin, < lit depuis un fichier. Le pipe | relie la sortie d’une commande à l’entrée de la suivante.

Exemple commenté:

bashbash
1# Compter les lignes d'un CSV sans l'ouvrir2wc -l data.csv3 4# Extraire la première colonne, supprimer l'en-tête, trier et compter les valeurs5cut -d, -f1 data.csv | tail -n +2 | sort | uniq -c | sort -nr | head

On compose une intention claire plutôt que de chercher une “commande magique”.

#Variables d’environnement utiles

PATH indique où chercher les exécutables. HOME pointe sur votre dossier utilisateur. Pour définir une variable valable pour les programmes lancés ensuite, utilisez export:

bashbash
1export EDITOR=vim

Les scripts d’initialisation (~/.bashrc, ~/.zshrc) servent à définir durablement vos alias et exports. Allez-y progressivement, commentez vos ajouts et évitez les modifications obscures copiées sur Internet.

#Mise en pratique rapide

Créez un dossier atelier, placez‑vous dedans, et écrivez en une ligne la commande qui crée 3 fichiers (a.txt, b.txt, c.txt) contenant chacun “bonjour”. Vérifiez avec cat et ls -l.

Correction possible:

bashbash
1mkdir -p atelier && cd atelier && for f in a b c; do echo "bonjour" > "$f.txt"; done && ls -l && cat a.txt

Retenez l’idée de “chaîne d’actions lisible” plutôt que la syntaxe exacte du for.

#Animation: pipeline de commandes

Source
Une commande produit un flux (stdout)
Filtre
Le pipe | envoie ce flux à la suivante
Chaînage
grep → cut → sort → uniq
Destination
Rediriger > vers un fichier ou autre

#Atelier interactif : composer un pipeline

Construire une pipeline shell

Composez source, filtres et destination. Le shell enchaîne les commandes via | : chacune lit sur son stdin et écrit sur son stdout.

Astuce : activez set -euo pipefail dans vos scripts pour propager les erreurs dans les pipelines.

Source

Filtres (ordre d’exécution)

L’ordre dépend des colonnes disponibles : uniq -c attend un flux trié.

Destination

Flux résultant

cat app.log | grep "ERROR" | cut -d, -f1 | sort -nr | uniq -c | head -n 10 | less -R
Source: Fichier de logsgrepcutsortuniq -cheadSortie: Pager interactif

Conseil : encapsulez la pipeline dans une fonction shell pour la réutiliser et testez-la avec des jeux de données réduits avant de l’exécuter sur un gros fichier.