Certification Linux LPI/Administrateur système débutant/Examen 101/GNU et commandes Unix/Utiliser les streams, pipes, et redirections
Il a été demandé de traduire cette page depuis
Objectifs
[modifier | modifier le wikicode]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
Exercices
[modifier | modifier le wikicode]- Create a file list.bin that will contain all the filenames from /bin directory.
- 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.
- Split list.bin file into files that are 50 lines long and remove list.bin.
- From the splitted files create back list.bin. but with inversed order.
- Simplify the following commands:
ls *.c | xargs rm ls [aA]* | xargs cat cat `ls *.v` 2>/dev/null
- Use find to do the following command:
more `ls *.c`
- 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.
- Create a file that within the filename you include the creation time.
- Create a file that will contain all the filename in reverse order with extension .conf from the /etc directory.