# Pipes

# Pipes, jokers et redirections

## La commande `cat`

On n'a pas traité de la commande `cat` dans la page consacrée aux commandes de base, parce que `cat` s'utilise le plus souvent avec des redirections.

1. &icone.solution; Comment visualiser deux fichiers l'un après l'autre à l'aide de la commande `cat` ?
2. &icone.solution; Comment faire une copie d'un fichier sans utiliser `cp` ni ouvrir d'éditeur de texte ?
3. &icone.solution; Utiliser `cat` pour écrire un peu de texte et mettre le résultat dans un fichier `notes`.
4. &icone.solution; Quelle différence y a-t-il entre

       cat bla blo > blu

   et

       cat bla blo >> blu

   Que se passe-t-il, pour chaque ligne, selon que le fichier `blu` existe ou n'existe pas ?

5. &icone.solution; Comment obtenir un fichier `blo` qui corresponde à un fichier `bla` dont les lignes seraient désormais numérotées ?

## Jokers et expressions régulières

1. &icone.solution; Vous avez chez vous des fichiers appelés `essai1`, `essai2`, `essai3` et `essai4`. Comment les effacer en une seule ligne de commande ?
2. &icone.solution; Dans mon répertoire d'accueil, j'ai un certain nombre de fichiers avec un suffixe `.c`. Je désire les regrouper dans un répertoire que j'appelerai `C/`. Quelles sont les commandes que je dois taper ?
3. &icone.solution; Vous désirez regrouper dans un répertoire `Rangement` les fichiers dont le nom contient un caractère minuscule suivi d'un caractère majuscule. Quelle(s) est/sont la/les commande(s) à donner ?
4. &icone.solution; Même chose avec les fichiers dont le nom contient trois voyelles à la suite.
5. &icone.solution; En utilisant `ls` et `grep`, affichez la liste des fichiers dans `/bin` dont le nom :
   - Commence par «a» et dont la deuxième lettre est «s» ou «t»;
   - Contient «un» et se termine par «t»;
   - Contient «gre» ou «st».
   - Contient exactement deux lettres «m»;
   - Contient au moins deux lettres «m»;
   - Contient au moins quatre caractères et aucun chiffre;
   - Est constitué de deux lettres exactement;
   - Commence et finit par un chiffre.
6. &icone.solution; Comment éliminer les lignes vides dans un fichier ? Comment éliminer les lignes ne contenant que des blancs ?

## Exercices sur Germinal

1. &icone.solution; Combien de fois le mot «mine» apparaît dans chaque chapitre de la première partie de Germinal ?
2. &icone.solution; Combien y a-t-il de lignes blanches dans `zola1.txt` ?

## `head` et `tail`

1. &icone.solution; Affichez les 15 premières lignes du fichier `/etc/hosts`, les 15 dernières lignes, toutes les lignes à partir de la quinzième, les lignes 15 à 20.

   # &icone.attention; Attention &icone.attention;

   Placez-vous sur clipper pour faire cet exercice. En effet, les `/etc/hosts` des autres machines sont beaucoup plus petits (en particulier peuvent faire moins de 15 lignes).
2. &icone.solution; Récupérer les lignes 5 à 9 d'un fichier de 12 lignes.
3. &icone.solution; Comment afficher la cinquième ligne d'un fichier ?

## Filtres et redirections

1. &icone.solution; Créez un fichier dont chaque ligne commence par un chiffre, suivi d'un slash (`/`), puis d'un ou plusieurs mots.
   1. Affichez les lignes de ce fichier triées en ordre croissant, suivant le nombre placé en début de ligne;
   2. Éliminez de chaque ligne le chiffre et le caractère «`/`»;
   3. Triez ces lignes par ordre alphabétique inverse.
2. &icone.solution; Combien de fichiers de configuration avez-vous ?
3. &icone.solution; Combien de répertoires de configuration avez-vous ?
4. &icone.solution; Comment mettre dans un fichier la liste de tous les fichiers de l'arborescence à partir du répertoire courant ?
5. &icone.solution; Créez un fichier `liste` contenant la liste de tous vos fichiers, avec leur taille, leurs droits, etc.
6. &icone.solution; Comment afficher uniquement les fichiers du répertoire courant qui sont des liens symboliques ?
7. &icone.solution; Combien de lignes contiennent le mot «file» dans la page de man de `syst` ?
8. &icone.solution; Quels sont les dix plus gros fichiers de `/usr/bin/` ?
9. &icone.solution; Pour chaque ligne du fichier `/etc/hosts`, affichez :
   - Le cinquième caractère;
   - Les caractères 5 à 10, et le treizième;
   - Tous les caractères à partir du quinzième.

## Exercices sur les pages jaunes

1. &icone.solution; Combien de personnes de la promotion 1996 ont un login commençant par «l» ?
2. &icone.solution; Est-ce que des gens des promotions de la décennie 1980 ont encore un compte sur clipper ?
3. &icone.solution; Combien y a-t-il de comptes d'élèves, magistériens, etc (appartenant à une promotion) sur clipper ?
4. &icone.solution; Classer les comptes de ces utilisateurs par numéro d'UID.
5. &icone.solution; Affichez le login des personnes ayant `zsh` comme shell de login.
6. &icone.solution; Affichez le nom et le prénom des personnes ayant un compte sur `clipper`, et dont le nom de famille contient au moins 2 voyelles côte à côte. Compter ces personnes.

## Divers

1. &icone.solution; Comment conserver les informations concernant le disque dans un fichier ?
2. &icone.solution; Comment connaître la dernière date de connexion au système d'un utilisateur de login `martin` ?
3. &icone.solution; Affichez le type des fichiers `/etc/passwd`, `/usr/include/stdio.h`, `/bin/ls` et de votre répertoire de travail.

Auteur : Anonyme, Joël Riou. Dernière modification le 2002-12-08.