Accéder au contenu France-Français
Accueil HP.com France Produits et Services Support et Pilotes Espaces Comment Acheter
» Contacter HP
Plus d'options
Accueil HP.com France
Utilisation d'HP-UX : Ordinateurs HP 9000 > Chapitre 3 Utilisation d’un shell

Entrée, sortie et erreur standards

» 

Documentation technique

Manuel complet en PDF
» Commentaires
Début du contenu

 » Table des matières

 » Glossaire

 » Index

Chaque processus ouvre trois fichiers ordinaires : l’entrée standard (stdin), la sortie standard (stdout) et l’erreur standard (stderr). Les programmes utilisent ces fichiers comme suit :

  • Le fichier des entrées standards est l’endroit où le programme s’attend à trouver les données d’entrée. Par défaut, les processus lisent le fichier stdin à partir du clavier.

  • Le fichier des sorties standards est l’endroit où le programme enregistre son résultat. Par défaut, les processus transmettent le fichier stdout à l’écran du terminal.

  • Le fichier des erreurs standards est l’endroit où le programme enregistre ses messages d’erreur. Par défaut, les processus transmettent le fichier stderr à l’écran du terminal.

La figure ci-dessous illustre la relation qui existe entre ces trois fichiers et le processus.

Figure 3-1 L’entrée standard, la sortie standard et l’erreur standard

L’entrée standard, la sortie standard et l’erreur standard

Enregistrement de la sortie standard dans un fichier

Le shell vous permet de réacheminer la sortie standard d’un processus, de l’écran (par défaut) à un fichier. Ainsi, le texte généré par la commande est stocké dans un fichier ; c’est aussi un moyen commode de déterminer quels fichiers ou quelles unités périphériques (les imprimantes, par exemple) le programme utilise.

Voici, dans sa forme la plus simple, la syntaxe de la commande

stdout

commande > fichsortie

commande est la commande dont la sortie est réacheminée, et fichsortie, le nom du fichier dans lequel le processus enregistre sa sortie standard. Si le fichier existe déjà, les anciennes données seront perdues. Si le fichier n’existe pas, il sera créé.

Pour annexer la sortie à un fichier existant, utilisez deux signes « plus grand que » (>>).

Cette figure indique où sont dirigés les fichiers stdin, stdout et stderr quand la sortie est réacheminée à un fichier.

Figure 3-2 Entrée, sortie et erreur standards, quand la sortie est réacheminée

Entrée, sortie et erreur standards, quand la sortie est réacheminée

L’exemple ci-dessous illustre le réacheminement de la sortie, avec la commande who, qui affiche une liste des utilisateurs actuellement en cours de session sur le système. Au lieu d’afficher les codes utilisateurs sur l’écran du terminal, la sortie est réacheminée vers le fichier qui.

who(1)

$ who > qui        Réachemine la sortie à qui
$ more qui         Affiche le contenu de qui
paul  console  oct 9 08:50
luc   tty01    oct 9 11:57
jean  tty02    oct 9 08:13

Utilisation de fichiers comme entrée standard

Le shell vous laisse réacheminer l’entrée standard d’un processus de telle sorte que l’entrée soit lue à partir d’un fichier au lieu de provenir du clavier. Pour réacheminer l’entrée d’un processus, séparez la commande du nom du fichier d’entrée par un signe « plus petit que » (<). Vous pouvez utiliser le réacheminement de l’entrée avec toutes les commandes qui acceptent l’entrée à partir de stdin (votre clavier).

Voici, dans sa forme la plus simple, la syntaxe de la commande :

stdin

commande  < fichentrée

commande est la commande dont l’entrée est réacheminée et fichentrée est le nom du fichier à partir duquel le processus lit l’entrée standard. Pour que le réacheminement réussisse, il faut que le fichier existe.

Cette figure indique où sont dirigés les fichiers stdin, stdout et stderr quand l’entrée est réacheminée à un fichier.

Figure 3-3 Entrée, sortie et erreur standards, quand l’entrée est réacheminée

Entrée, sortie et erreur standards, quand l’entrée est réacheminée

L’exemple qui suit illustre le réacheminement de l’entrée. D’abord, la sortie standard de la commande who est réacheminée à un fichier appelé nouv. Ensuite, la commande more affiche le contenu de nouv. Enfin, l’entrée standard de la commande wc (word count) est réacheminée de façon à provenir du fichier nouv :

Utilisation de >

$ who > nouv Réachemine la sortie sur nouv.
more nouv Affiche le contenu de nouv.
pat   console oct 9 08:50  
terry tty01   oct 9 11:57  
kim   tty02   oct 9 08:13

Utilisation de <

$ wc -l < nouv Réachemine l’entrée de nouv
3             La réponse

Dans l’exemple ci-dessus, la commande wc avec l’option -l compte le nombre de lignes dans le fichier d’entrée. Etant donné que l’entrée a été réacheminée sur nouv, ce nombre est égal au nombre d’utilisateurs connectés au système quand la commande who a été exécutée.

Réacheminement de l’entrée et de la sortie standards

Vous pouvez utiliser une commande pour réacheminer en même temps l’entrée et la sortie standards. N’utilisez pas le même nom de fichier pour l’entrée et pour la sortie standard. Quand les opérations d’entrée et de sortie utilisent le même fichier, le contenu original du fichier d’entrée est perdu.

La figure indique où sont dirigés les fichiers stdin, stdout et stderr quand l’entrée et la sortie sont réacheminées d’un fichier et à un fichier.

Figure 3-4 Réacheminement de l’entrée et de la sortie

Réacheminement de l’entrée et de la sortie

Utilisation de l’entrée et de la sortie standards par défaut

Dans l’exemple qui suit, la commande sort est utilisée pour trier un texte entré au clavier. CTRL+D met fin à l’entrée standard. La sortie standard s’affiche sur l’écran du terminal comme suit :

sort(1)
$ sort
malheureux
heureux
peureux
CTRL-D        Fin de l’entrée standard.
heureux
malheureux
peureux       Fin de la sortie standard.

Réacheminement de l’entrée standard

Dans l’exemple suivant, l’entrée est réacheminée :

$ more socks       Affiche le contenu de socks.
polkadot
argyle
plaid
$ sort < socks  Réachemine l’entrée de socks et trie le contenu.
argyle
plaid
polka dot

Dans l’exemple précédent, la commande sort utilise un fichier appelé sock comme entrée. Comme pour le premier exemple, la sortie standard s’affiche sur l’écran du terminal.

Réacheminement simultané de l’entrée et de la sortie standards

Dans l’exemple suivant, l’entrée et la sortie sont réacheminées :

$ sort < socks > sortsocks Utilise à la fois le réacheminement de l’entrée et
                           celui de la sortie.
$ more sortsocks           Affiche le contenu de sortsocks.
argyle
plaid
polka dot

Dans cet exemple, la commande sort lit l’entrée à partir du fichier socks et enregistre la sortie dans le fichier sortsocks ; ainsi, la sortie standard (contrairement aux deux premiers exemples) ne s’affiche pas sur l’écran.

Utilisation de la sortie d’une commande comme entrée pour une autre : les pipelines

Le shell vous permet de relier deux ou plusieurs processus, de telle sorte que la sortie standard de l’un soit utilisée comme entrée standard pour l’autre. La connexion entre les processus s’appelle pipeline. Pour relier la sortie d’un processus à un autre processus, séparez les commandes par une barre verticale (|). La syntaxe générale d’un pipeline est :

commande1 | commande2

commande1 est la commande dont la sortie standard est réacheminée ou reliée à une autre commande et commande2 est la commande dont l’entrée standard constitue la sortie de la commande précédente. Vous pouvez combiner deux ou plusieurs commandes en un seul pipeline. La sortie d’une commande devient alors l’entrée de la commande suivante sur la ligne de commande :

commande1 | commande2  | ... | commandeN

Dans l’exemple qui suit, la sortie de la commande who est stockée dans le fichier nouv . Ensuite, le fichier nouv est utilisé comme entrée pour la commande wc :

wc(1)

$ who > nouv     Réachemine la sortie de who au fichier nouv.
$ wc -l < nouv   Le fichier nouv est utilisé comme entrée pour la commande wc.
3                Exemple de résultat.

Avec un pipeline, ces deux commandes deviennent une seule commande :

$ who | wc -l
3

Comme l’illustre cet exemple, l’utilisation de pipelines évite le recours à des fichiers intermédiaires temporaires. La sortie standard de la première commande est envoyée directement à la seconde commande et devient son entrée standard.

Utilisation de la commande tee avec les pipelines

La commande tee vous permet de détourner une copie des données transmises entre les commandes pour la placer dans un fichier, sans pour autant modifier le fonctionnement du pipeline. Dans l’exemple ci-dessous, on utilise la commande who pour déterminer qui est connecté au système. Dans cet exemple (qui sera repris plus loin dans la figure ci-dessous), la sortie de who est reliée à la commande tee, qui sauvegarde une copie de la sortie dans le fichier qui et transmet, inchangée, la sortie à la commande wc :

tee(1)
$ who | tee qui | wc -l
3$ more qui
pat        console      oct  9 08:50
terry      tty01        oct  9 11:57
kim        tty02        oct  9 08:13

Figure 3-5 Entrée et sortie standards avec des pipelines et la commande tee

Entrée et sortie standards avec des pipelines et la commande tee

Pour de plus amples informations

HP-UX fournit des programmes filtres qui sont utiles dans les pipelines. Ces programmes acceptent du texte à l’entrée, transforment le texte d’une certaine façon et produisent du texte à la sortie. Les commandes des filtres comprennent adjust, awk, more, cut, grep, head, more, pr, rev, sed, sort, spell et tail. Pour plus de détails sur ces commandes, reportez-vous aux pages de manuel correspondantes.

Version imprimable
Respect de la vie privée L'utilisation de ce site implique que vous en acceptez les conditions
© Hewlett-Packard Development Company, L.P.