Skip to content

Récapitulatif - Gestion des flux de données

1. Les canaux de communication

Principe fondamental

Chaque processus Linux utilise trois flux de données :

CanalDescripteurRôleExemples
stdin0Entrée standardDonnées tapées au clavier, sortie d'une autre commande
stdout1Sortie standardRésultats normaux d'une commande
stderr2Erreur standardMessages d'erreur et d'avertissement

Comportement par défaut

  • stdin : lit depuis le clavier
  • stdout : affiche dans le terminal
  • stderr : affiche dans le terminal (en couleur généralement)

2. Redirection de sortie

Redirection simple

SyntaxeActionEffet
>ÉcraserRemplace le contenu du fichier
>>AjouterAjoute au contenu existant
bash
# Exemples de redirection simple
$ ls -l > fichiers.txt          # Écrase fichiers.txt
$ date >> log.txt               # Ajoute à log.txt

Redirection d'erreurs

SyntaxeActionUsage
2>Rediriger erreursErreurs vers fichier, stdout vers terminal
2>>Ajouter erreursErreurs ajoutées au fichier
2>/dev/nullIgnorer erreursSupprime les messages d'erreur
bash
# Exemples de redirection d'erreurs
$ find /etc -name "*.conf" 2>erreurs.txt      # Erreurs dans fichier
$ ls inexistant 2>/dev/null                   # Ignore les erreurs

3. Redirection combinée

Tout rediriger

SyntaxeÉquivalentUsage
&>>fichier 2>&1Stdout et stderr vers même fichier
&>>>>fichier 2>&1Ajouter stdout et stderr
bash
# Redirection combinée
$ commande &> tout.log                        # Moderne
$ commande > tout.log 2>&1                    # Classique

Comprendre 2>&1

Ordre important

L'ordre > fichier 2>&1 est crucial :

  1. > fichier : stdout vers fichier
  2. 2>&1 : stderr vers même destination que stdout

4. Redirection d'entrée

Types de redirection d'entrée

SyntaxeNomUsage
<Redirection simpleLire depuis un fichier
<<Here DocumentTexte multiligne intégré
<<<Here StringChaîne de caractères directe
bash
# Exemples de redirection d'entrée
$ wc -l < fichier.txt                         # Lire depuis fichier
$ cat << EOF > nouveau.txt                    # Document intégré
Ligne 1
Ligne 2
EOF
$ grep "mot" <<< "phrase avec mot"            # Chaîne directe

5. Les pipes (tubes)

Principe fondamental

Le pipe | connecte la sortie d'une commande à l'entrée de la suivante.

bash
# Syntaxe des pipes
$ commande1 | commande2                       # Simple
$ cmd1 | cmd2 | cmd3                          # Chaîné

Exemples courants

bash
# Pipes pratiques
$ ls | wc -l                                  # Compter fichiers
$ ps aux | grep firefox                       # Filtrer processus
$ cat fichier | sort | uniq                   # Trier et dédoublonner
$ ls -la | grep "^d"                          # Dossiers seulement

6. Commandes essentielles pour les flux

Filtrage et recherche

CommandeUsage principalOptions courantes
grepRechercher des motifs-v (inverser), -i (ignorer casse)
headPremières lignes-n 10 (nombre de lignes)
tailDernières lignes-n 10, -f (suivre)

Transformation et tri

CommandeUsage principalOptions courantes
sortTrier les lignes-r (inverse), -n (numérique)
uniqSupprimer doublons-c (compter occurrences)
cutExtraire colonnes-d: (délimiteur), -f1 (champ)
teeDupliquer flux-a (ajouter au fichier)

7. Commandes avancées

Traitement de données

bash
# Analyser un fichier CSV
$ cut -d, -f2 data.csv | sort | uniq -c | sort -nr

# Top 10 des plus gros fichiers
$ ls -la | sort -k5 -nr | head -10

# Extensions uniques
$ ls | grep '\.' | cut -d. -f2- | sort | uniq

Administration système

bash
# Processus gourmands en CPU
$ ps aux | sort -k3 -nr | head -10

# Surveiller les erreurs
$ tail -f /var/log/syslog | grep -i error

# Espace disque par partition
$ df -h | grep -v tmpfs | sort -k5 -nr

8. Techniques avancées

Combinaisons pipes et redirections

bash
# Pipe avec gestion d'erreurs
$ find /etc -name "*.conf" 2>/dev/null | head -20

# Sauvegarder et afficher simultanément
$ ps aux | tee processus.txt | grep firefox

# Redirection d'entrée avec pipe
$ sort < noms.txt | uniq > noms_uniques.txt

Commande tee

La commande tee permet de "diviser" un flux :

  • Une copie vers l'écran (stdout)
  • Une copie vers un ou plusieurs fichiers
bash
# Usages de tee
$ ls -la | tee liste.txt                      # Afficher ET sauver
$ echo "Log entry" | tee -a log.txt           # Ajouter au fichier
$ date | tee file1.txt file2.txt              # Multiples destinations

9. Fichier spécial /dev/null

Le "trou noir" du système

/dev/null est un fichier spécial qui :

  • Accepte toutes les données en écriture (les ignore)
  • Retourne EOF immédiatement en lecture
  • Utile pour supprimer des sorties indésirables
bash
# Usages de /dev/null
$ commande > /dev/null                        # Ignorer stdout
$ commande 2> /dev/null                       # Ignorer stderr
$ commande &> /dev/null                       # Ignorer tout

10. Patterns courants

Tests et conditions

bash
# Tester si une commande existe
$ command -v git > /dev/null 2>&1 && echo "Git installé"

# Exécution silencieuse dans scripts
$ commande_bruyante &> /dev/null

Chaînages utiles

bash
# Pipeline de traitement de logs
$ cat access.log | grep "404" | cut -d' ' -f1 | sort | uniq -c | sort -nr

# Analyse des utilisateurs connectés
$ who | cut -d' ' -f1 | sort | uniq -c

11. Récapitulatif des symboles

SymboleNomUsage
>Redirection sortiecmd > fichier
>>Redirection ajoutcmd >> fichier
<Redirection entréecmd < fichier
<<Here documentcmd << EOF
<<<Here stringcmd <<< "texte"
|Pipecmd1 | cmd2
2>Redirection erreurscmd 2> erreurs
&>Redirection toutcmd &> tout
2>&1Stderr vers stdoutcmd > fichier 2>&1

.