Les redirections de flux



--Téléchargez Les redirections de flux en PDF --


Les redirections de flux

Une des bases essentielles d’un Linux est la redirection d’un flux émanant d’un programme en direction d’un autre.

Flux standard

Les flux sont des fichiers spéciaux, gérant les entrées ou sorties du système. Elles sont au nombre des trois :

  • STDIN (0) : ce canal n’est autre que le flux d’entrée standard au clavier. Tout ce qui est entré au clavier passera donc par ce flux.
  • STDOUT (1) : ce canal, appelé aussi sortie standard, gère tout ce qui doit être affiché à l’écran.
  • STDERR (2) : c’est le canal d’erreur standard. On utilisera principalement ce flux pour séparer les messages d’erreurs du flux de sortie standard.

La redirection

Lorsque l’on utilise une commande dans le terminal, la réponse s’affiche dans le flux standard de sortie. Il est cependant possible de rediriger ces flux vers d’autres endroits, comme pour rediriger le flux d’erreur vers un fichier texte, par exemple. Les redirections sont réalisées par le biais des signes <, > et >>. Il existe également le tee, que l’on verra plus tard.

Une commande telle que ls -al /bin > ~/list.txt  va donc rediriger la liste des fichiers dans le fichier list.txt de votre répertoire personnel.

faites le test en tapant le petit script suivant :

Dans le cas d’une redirection d’entrée, la commande entrée prendra en argument le contenu du ficher spécifié. 

Exemple : grep root < etc/passwd 

Enfin, pour rediriger le resultat d’une commande vers le flux d’erreur, on utilisera le symbole de redirection 2>.

Le pipe

Le pipe (|) est une voie de communication entre deux processus. C’est un tuyau connectant le résultat d’une commande à l’entrée de la commande suivante. Grâce à ce tuyau, il est possible de combiner, d’affiner le résultat d’une commande.

Exemple : ls --help | less

En tapant la commande ls –help, le fichier d’aide est tellement grand que seul la fin du fichier est disponible. Et dans une console, il n’est pas vraiment possible de remonter sur l’écran. En envoyant le résultat de la commande ls –help dans la commande less, dès que le terminal est rempli de texte, less attend la frappe du clavier pour descendre dans l’écran.

Le Tee

Le tee est une commande qui permet de diviser un flux d’entrée en deux flux de sortie. Elle est notamment utile dans les pipes pour relayer la sortie à une nouvelle commande tout en la sauvegardant dans un fichier.

tee duplique sur ses deux sorties, la sortie standard et un ou plusieurs fichiers, tout ce qu’elle reçoit en entrée.

La commande remplace le contenu de fichiers par défaut. Toutefois, en ajoutant l’argument -a (ou –append), on pourra ajouter des données à un fichier au lieu de l’écraser.

Exemple : ls -al /bin | tee list.txt

Cette commande va afficher et inscrire dans un fichier le contenu du dossier /bin.

D’autres commandes utile

alias : crée un raccourci pour des commandes linux. Exemple : alias agc=’sudo apt-get clean’ va créer l’alias agc temporairement. Pour créer un alias permament, il faudra l’écrire dans un fichier spécifique.

unalias : supprime l’alias précédemment créé.

uname : affiche le système d’exploitation. Pratique pour connaitre sa version deLinux !

tty : affiche le numéro du terminal sur lequel vous travaillez.

free : affiche la quantité de mémoire restante.

df : affiche la quantitié de mémoire (dique dur) restante.

id : affiche le numéro d’identifiant (voyez les paramètres pour plus d’informations). Il affiche également le groupe et l’utilisateur.

netstat : affiche les informations des réseaux. Cette commande peut, par exemple, nous renseigner sur le routage utilisé par la machine (netstat -rn), sur les connexions en cours (netstat -a), sur l’état des interfaces réseaux (netstat -i), ou encore sur les statistiques des différents protocoles (netstat -s).

ifconfig : configuration ip. Nous verrons cette commande plus tard

locate : locate va réaliser une recherche de fichiers dans une base de données reprenant la liste de tous les fichiers indexés. Exemple : locate passwd.

find : cette commande est utilisée pour rechercher des fichiers dans un répoertoire prédéfini (ou dans le répertoire courant si rien n’est spécifié). Exemple : find /bin/sys*

grep  : réalise une recherche à travers un ou plusieurs fichiers texte  et affiche uniquement les lignes contenant le mot spécifié. Exemple : grep root /etc/passwd

passwd : permet de changer le mot de passe de l’utilisateur courant.  Suivi d’un nom d’utilisateur, permet de changer le mot de passe d’un autre utilisateur. Attention cependant, pour pouvoir modifier le mot de passe d’un autre utilisateur, il faut avoir les super-pouvoirs !

cal : affiche le calendrier du mois demandé (le mois courant par défaut).

file : affiche le type de données que contient le fichier.

sort : cette commande affiche le contenu d’un fichié trié par ordre alphabétique (pensez au man pour plus d’informations !). exemple : sort /etc/passwd

split : permet de découper un fichier en plusieurs fichiers séparés. Cette fonction est très pratique si le fichier est trop grand pour être copié sur un support amovible, par exemple. Exemple : split -b 4b toto.txt file va diviser le fichier toto.txt en plusieurs fichiers de 4 octets.

which : cette commande est utilisée pour trouver  l’exécutable qui est réellement utilisé quand on tape une commande. Cette fonction est un peu l’inverse d’alias.

chown : cette commande permet de changer le propriétaire et/ou le groupe d’un fichier ou répertoire.

cut : découpe une ligne et extrait certains éléments. Regardez les  paramètres -d, -f et -s dans le manuel.

Exercices

  • Afficher les étudiants de votre groupe dans passwd.
  • Compter le nombre d’étudiants dans votre groupe.
  • Afficher la liste des 5 premiers de votre groupe.
  • Afficher le 3,4 et 5è de votre groupe.
  • Afficher les utilisateurs de votre groupe triés sur le nom.
  • Créer un fichier avec tous les bachelors triés par groupe et par nom dans le groupe.
  • Lister les noms des utilisateurs de votre machine.
  • Lister les noms des étudiants de votre groupe.
  • Même exercice, mais triez en ordre décroissant.