Appearance
Récapitulatif - Gestion des flux de données
1. Les canaux de communication
Principe fondamental
Chaque processus Linux utilise trois flux de données :
| Canal | Descripteur | Rôle | Exemples |
|---|---|---|---|
| stdin | 0 | Entrée standard | Données tapées au clavier, sortie d'une autre commande |
| stdout | 1 | Sortie standard | Résultats normaux d'une commande |
| stderr | 2 | Erreur standard | Messages 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
| Syntaxe | Action | Effet |
|---|---|---|
> | Écraser | Remplace le contenu du fichier |
>> | Ajouter | Ajoute au contenu existant |
bash
# Exemples de redirection simple
$ ls -l > fichiers.txt # Écrase fichiers.txt
$ date >> log.txt # Ajoute à log.txtRedirection d'erreurs
| Syntaxe | Action | Usage |
|---|---|---|
2> | Rediriger erreurs | Erreurs vers fichier, stdout vers terminal |
2>> | Ajouter erreurs | Erreurs ajoutées au fichier |
2>/dev/null | Ignorer erreurs | Supprime 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 erreurs3. Redirection combinée
Tout rediriger
| Syntaxe | Équivalent | Usage |
|---|---|---|
&> | >fichier 2>&1 | Stdout et stderr vers même fichier |
&>> | >>fichier 2>&1 | Ajouter stdout et stderr |
bash
# Redirection combinée
$ commande &> tout.log # Moderne
$ commande > tout.log 2>&1 # ClassiqueComprendre 2>&1
Ordre important
L'ordre > fichier 2>&1 est crucial :
> fichier: stdout vers fichier2>&1: stderr vers même destination que stdout
4. Redirection d'entrée
Types de redirection d'entrée
| Syntaxe | Nom | Usage |
|---|---|---|
< | Redirection simple | Lire depuis un fichier |
<< | Here Document | Texte multiligne intégré |
<<< | Here String | Chaî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 directe5. 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 seulement6. Commandes essentielles pour les flux
Filtrage et recherche
| Commande | Usage principal | Options courantes |
|---|---|---|
grep | Rechercher des motifs | -v (inverser), -i (ignorer casse) |
head | Premières lignes | -n 10 (nombre de lignes) |
tail | Dernières lignes | -n 10, -f (suivre) |
Transformation et tri
| Commande | Usage principal | Options courantes |
|---|---|---|
sort | Trier les lignes | -r (inverse), -n (numérique) |
uniq | Supprimer doublons | -c (compter occurrences) |
cut | Extraire colonnes | -d: (délimiteur), -f1 (champ) |
tee | Dupliquer 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 | uniqAdministration 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 -nr8. 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.txtCommande 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 destinations9. 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 tout10. 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/nullChaî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 -c11. Récapitulatif des symboles
| Symbole | Nom | Usage |
|---|---|---|
> | Redirection sortie | cmd > fichier |
>> | Redirection ajout | cmd >> fichier |
< | Redirection entrée | cmd < fichier |
<< | Here document | cmd << EOF |
<<< | Here string | cmd <<< "texte" |
| | Pipe | cmd1 | cmd2 |
2> | Redirection erreurs | cmd 2> erreurs |
&> | Redirection tout | cmd &> tout |
2>&1 | Stderr vers stdout | cmd > fichier 2>&1 |