Aller au contenu

Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Utiliser les streams, pipes, et redirections

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.

Image logo Il a été demandé de traduire cette page depuis Image logo

Début de la boite de navigation du chapitre
Utiliser les flux, les tuyaux (pipes) et les re-directions
Icône de la faculté
Chapitre no 5
Leçon : GNU et commandes Unix
Chap. préc. :Gestion de base des fichiers
Chap. suiv. :Créer, surveiller et terminer des processus
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « GNU et commandes Unix : Utiliser les flux, les tuyaux (pipes) et les re-directions
Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Utiliser les streams, pipes, et redirections
 », n'a pu être restituée correctement ci-dessus.

Description: Les candidats devraient être en mesure de rediriger les flux (streams) et de les connecter de façon à effectuer avec efficience des traitements sur les données texte. Ces taches incluent les redirection standard, les erreurs standard, faire un pipe sur le résultat d'une commande vers l'entrée d'une autre commande (piping), utiliser la sortie d'une commande (output) comme argument d'une autre commande et d'envoyer la sortie à la fois vers la sortie standard (stdout) et un fichier.

Key files terms and utilities include:
tee
xargs
<
<<
>
>>
|
` `

Entrée et sortie standard

[modifier | modifier le wikicode]

Pour chaque commande exécutée dans un terminal, il y a: une entrée standard valeur 0. (par défaut le clavier) une sortie standard valeur 1.(par défaut le terminal) une sortie standard pour les erreurs valeur 2. (par défaut le terminal).

Chaque flux peut aussi être identifié par une adresse: &0 pour l'entrée, &1 pour la sortie, et &2 pour les erreurs.

Chaque flux [n] peut être redirigé. [n]< fichier: La valeur par défaut de n est 0 et elle lit l'entrée standard depuis le fichier. [n]> file: La valeur par défaut est 1 et elle envoie l'entrée standard vers le fichier. (clobber) [n]>>file: La valeur par défaut est 1 et elle ajoute l'entrée standard au fichier. <<word: Lire l'entrée standard jusqu'à le mot soit atteint. `commande`: Remplacer la commande par son résultat.

Exemples:

$ pwd > file  # out=file in=none error=terminal.
cat chap* >book # out=book in=none error=terminal.
mv /etc/* . 2>error # out=terminal in=none error=error.
echo end of file >> book # out=book in=none error=terminal.
set -o noclobber # Shell does not clobber existing files.
ls > list 2>&1 # ls and errors are redirected to list.
ls 2>&1 > list # Errors are redirected to standard output and ls output is redirected to list.
cat `ls /etc/*.conf` > conffile 2>>/tmp/errors

Concatenate all the configuration files from /etc dir in conffile and append errors in file /tmp/errors.

Redirection avec les tubes (ou pipes)

Les tubes sont efficaces quand on l'applique à plusieurs commandes simultanément.

command1 | command2

La sortie standard de command1 va être redirigée vers l'entrée standard de command2. La sortie standard pour les erreurs n’est pas redirigée.

Exemples:

ls -l /dev | more
ls -l /etc/*.conf | grep user | grep 500
ls -l /bin | mail `users`

Pour rediriger la sortie standard à la fois vers un fichier et le terminal utilisez tee.

ls -l /dev | tee file
ls -l /etc | tee -a file # Append to the file

Building arguments

The xargs utility constructs an argument list for a command using standard input.

xargs [options] [command]

The xargs command creates an argument list for command from standard input. It is typically used with a pipe.

Common options: -p: prompt the user before executing each command.

Examples:

ls f* | xargs cat # Print to standard output the content of all files starting with f.
find ~ -name 'proj1*' print | xargs cat

Search in the Home directory for files starting with proj1 and send it to the standard input of cat.

Use the /dev/null device file to discard output or error messages.

Try the following:

grep try /etc/*
grep try /etc/* 2> /dev/null
grep try /etc/* > /dev/null 2> /dev/null
  1. Create a file list.bin that will contain all the filenames from /bin directory.
  2. Write a command that will append the list of files from /usr/local/bin to the file named list.bin and discard any error output.
  3. Split list.bin file into files that are 50 lines long and remove list.bin.
  4. From the splitted files create back list.bin. but with inversed order.
  5. Simplify the following commands:
ls *.c | xargs rm
ls [aA]* | xargs cat
cat `ls *.v` 2>/dev/null
  1. Use find to do the following command:
more `ls *.c`
  1. Write a command that will create a file list.sbin with the contents of /sbin and at the same time display it to standard output.
  2. Create a file that within the filename you include the creation time.
  3. Create a file that will contain all the filename in reverse order with extension .conf from the /etc directory.