Redirection des entrées-sorties |
![]() |
![]() |
Commandes UNIX et redirection |
Quand vous lancez une commande dans un shell, il peut y avoir du texte qui s'affiche suite à l'exécution de la commande, ce texte par défaut, s'affiche dans le shell. On dit que le shell (ou terminal) est la sortie standard, c'est là où va s'afficher tous les commentaires d'une commande.
Vous pouvez changer ce comportement, en tapant :
ma-commande > mon-fichier
Tous les commentaires, les sorties, de la commande, ne vont pas apparaître au shell mais être écrits dans un fichier. En d'autres termes, la standard standard est redirigé vers un fichier. Cela peut être utile, si vous avez une commande qui génère énormément de commentaire, et que vous voulez les récupérer, pour les exploiter par la suite, à la terminaison de la commande.
La redirection > a pour effet de créer le fichier mon-fichier, si ce fichier existait déjà, il est tout simplement écrasé (supprimé et recréé), ce qui peut être gênant si vous ne voulez pas perdre ce qu'il contient, vous disposez donc de la redirection >>. En tapant :
ma-commande >> mon-fichier
Le fichier mon-fichier n'est pas écrasé, mais la sortie standard (les commentaires de la commande) sont ajoutés en fin de fichier, à la suite du texte qui était déjà dans le fichier.
Les redirections marchent dans les deux sens, par exemple en tapant la commande suivante :
sort < mon-fichier
Vous envoyez le contenu du fichier mon-fichier vers la commande sort (trie), celle-ci va donc trier le contenu du fichier, par défaut le résultat sort sur la sortie standard, c'est à dire à l'écran, plus précisément sur le shell. Avec :
sort < mon-fichier > fichier-trie
On a vu que sort < mon-fichier avait pour effet de trier le fichier mon-fichier, l'expression >fichier-trie a pour effet d'envoyer le résultat (le fichier trié) dans un fichier fichier-trie, le résultat n'apparaît plus à l'écran, mais est sauvegardé dans un fichier.
Avec la redirection << la commande va lire les caractères jusqu'à la rencontre d'une certaine chaîne de caractères. Exemple avec la commande cat (catalogue, permet d'éditer le contenu d'un fichier).
> cat << fin |
je tape du texte jusqu'à la chaîne de caractère fin |
> |
En tapant la commande, vous revenez à la ligne, mais perdez le prompt, cat va lire (et éditer) les caractères que vous saisissez jusqu'à qu'il rencontre la chaîne fin, à ce moment là, le prompt apparaît à nouveau. Si vous voulez créer un fichier avec un peu de texte à l'intérieur, vous ferez :
>cat << fin > mon-fichier |
je tape du texte qui sera sauvegardé dans mon-fichier, pour terminer le texte fin |
> |
Le texte que vous venez de saisir, se trouve donc dans mon-fichier.
Avec la commande :
>fichier-vide
Vous créez un fichier vide fichier-vide.