# I/O Redirections | | Descripteur | Identifiant | | --------------- | ----------- | ----------- | | Entrée standard | stdin | 0 | | Sortie standard | stdout | 1 | | Sortie erreur | stderr | 2 | #### Redirection de sortie: `>` Redirige la sortie standart vers un nouveau fichier: ```bash $ ls > liste.txt ``` Redirige la sortie standart vers un fichier (ajoute à la suite): ```bash $ ls >> liste.txt ``` Redirige la sortie erreur vers un fichier: ```bash >2 erreur.log ``` #### Redirection d'entrée: `<` Considère liste.txt comme entrée standart (au lieu du clavier): ```bash $ sort < liste.txt ``` Envoyer un contenu à une commande avec votre clavier. ```bash $ sort -n << FIN heredoc… ❯ 45 heredoc… ❯ 23 heredoc… ❯ 12 heredoc… ❯ 78 heredoc… ❯ 45 heredoc… ❯ 9 heredoc… ❯ FIN 9 12 23 45 45 78 $ wc -m << STOP heredoc… ❯ Combien de caracteres ? heredoc… ❯ STOP 24 ``` #### On peut combiner les 2 ```bash $ sort < liste.txt > liste_triee.txt ``` #### Rediriger vers un autre descripteur: `>&` Rediriger la sortie standard sur la sortie d'erreur: ```bash $ echo "Error" 1>&2 $ echo "Error" >&2 ``` #### Le trou noir: `/dev/null` - si on affiche son contenu, on n'obtient rien. - si on écrit quelque chose dedans, il disparait. ```bash $ echo "Bonjour" Bonjour $ echo "Bonjour" >/dev/null ``` #### Connecter 2 processus: `|` La sortie d'un programme est utilisée comme entrée d'un autre. ```bash $ echo "Hello!" | tr "[:lower:]" "[:upper:]" HELLO! ``` #### Erreurs Rediriger les erreurs vers un fichier: ```bash $ UneCommande 2> fichier-erreurs.txt ``` Rediriger les erreurs vers un fichier (ajouter à la suite):: ```bash $ UneCommande 2>> erreurs.log ``` Rediriger la sortie standart et les erreurs vers un fichier: ```bash $ UneCommande 2> erreurs.log ``` Rediriger la sortie et les erreurs vers un fichier: ```bash $ UneCommande 2>&1 | tee fichier.txt ``` #### Fusionner les sorties Il est possible de fusionner les sorties (standart et erreur) dans un seul et même fichier. ```bash $ bad_command >>filename 2>&1 ```