# Redirections et Pipes ## Redirections ### Accès en lecture par redirection de l'entrée ![entrée et sortie standard d'une commande Unix](image manquante) ### Entrées sorties standard Toute commande Unix peut utiliser : - l'entrée standard (stdin) - la sortie standard (stdout) Valeurs implicites (pour un poste de travail) : - stdin : le clavier - stdout : l'écran ### Redirection de l'entrée standard vers un fichier ![redirection de l'entrée standard d'une commande unix](image manquante) Soit : - `aUnixCommand` = un programme Unix de type filtre - `myFile` = un fichier La commande shell suivante : `aUnixCommand < myFile` appliquera le programme `aUnixCommand` au fichier `myFile` et affichera le résultat sur l'écran. ## Redirections et quelques commandes Unix ### cat Utilisée sans paramètres, recopie le fichier en entrée sur la sortie standard : ```bash cat < Formation/TP1/exo.txt ``` recopie sur l'écran le fichier `Formation/TP1/exo.txt`. ### cat - avec paramètres La commande `cat` peut s'utiliser avec une liste de fichiers en paramètres. Ainsi : ```bash cat Formation/TP1/exo1.txt Formation/TP1/exo2.txt ``` "concatène" les fichiers sur stdout. > À NOTER : avec un seul fichier les commandes : > > ```bash > cat Formation/TP1/exo.txt > ``` > > et > > ```bash > cat < Formation/TP1/exo.txt > ``` > > peuvent être considérées comme équivalentes. ### sort Trie les lignes d'un fichier dans l'ordre lexicographique ASCII. Exemple : ```bash sort < Formation/TP1/table.txt ``` ### grep Sélectionne les lignes qui contiennent une expression donnée en paramètre. Syntaxe simplifiée : ```bash grep expression < file ``` Exemple : ```bash grep 152X < Formation/TP1/issn.txt ``` ### head Syntaxe simplifiée : ```bash head [ -number ] < file ``` - sans paramètre, sélectionne les 10 premières lignes - avec paramètre, sélectionne le nombre de lignes désignées par le paramètre Exemple : ```bash head -5 < Formation/TP1/file.xml ``` ## Redirection de la sortie standard vers un fichier La sortie standard peut à son tour être redirigée vers un fichier. 2 possibilités : ```bash commande > fichier ``` le résultat de la commande va servir à créer ou à remplacer (par écrasement) le contenu du fichier donné. ```bash commande >> fichier ``` le résultat de la commande va servir à créer (la première fois) ou à rallonger le contenu du fichier donné (concaténation). ## Combinaison simple des redirections Entrée et sortie standard peuvent être rédirigées simultanément. Ainsi : ```bash cat < fA > fB ``` copie le contenu du fichier `fA` pour créer le fichier `fB`. ## Combinaison de fitres en cascade - le pipe (image manquante)pipe de deux commandes unix Le mécanisme appelé _pipe_ permet d'enchaîner des commandes en affectant la sortie de l'une à l'entrée de la suivante. Sa forme générale est : ```bash c0 < fA | c1 | c2 | ... | cn > fB ``` Le fichier `fA` est lu et traité par la commande `c0`, le résultat est alors traité par `c1`, et ainsi de suite jusqu'à la commande `cn` pour laquelle le résultat est écrit dans le fichier `fB`. [Précédent](../unix/linux.md) - [Suivant](./commandes-basiques.md)