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.
$ 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
« Concaténez tous les fichiers de configuration du répertoire /etc dans le fichier de configuration et ajoutez les erreurs dans le fichier /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
« Recherchez dans le répertoire personnel les fichiers commençant par proj1 et envoyez-les à l'entrée standard de cat. »
Utilisez le fichier de périphérique /dev/null pour ignorer les messages de sortie ou d’erreur.
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]- Créez un fichier list.bin qui contiendra tous les noms de fichiers du répertoire /bin.
- Écrivez une commande qui ajoutera la liste des fichiers de /usr/local/bin au fichier nommé list.bin et supprimera toute sortie d'erreur.
- Divisez le fichier list.bin en fichiers de 50 lignes de long et supprimez list.bin.
- À partir des fichiers divisés, créez back list.bin. mais avec l'ordre inversé.
- Simplifiez les commandes suivantes :
ls *.c | xargs rm ls [aA]* | xargs cat cat `ls *.v` 2>/dev/null
- Use find to do the following command:
more `ls *.c`
- Écrivez une commande qui créera un fichier list.sbin avec le contenu de /sbin et l'affichera en même temps sur la sortie standard.
- Créez un fichier dont le nom inclut l'heure de création.
- Créez un fichier qui contiendra tous les noms de fichiers dans l'ordre inverse avec l'extension .conf du répertoire /etc.

