Newer
Older
cours-unix-shell / bases / README.md
# 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)