Outils d'utilisateurs

Outils du Site


lien:bash:perso:redirection

retour

Redirection

Exemples simples :

Il y a 3 fichiers

  1. stdin en entrée descripteur de fichier 0, symbole <
  2. stdout en sortie standard descripteur de fichier 1, symbole >
  3. stderr pour les erreurs descripteur de fichier 2, associés à stdout en général

Redirection de sortie

Pour regrouper 2 fichiers dans un fichier avec la commande cat
cat fichier1 fichier2 >fichier3, le fichier 3 contient le fichier 1 suivi du fichier 2
Dans cet exemple la sortie stdout est envoyée dans le fichier3
la commande cat fichier1 fichier2 aurait affiché à l'écran les fichiers 1 puis 2.

Redirection de sortie avec erreur

La commande grep ^umask /etc/*
affiche des sorties avec grep … Permission non accordée et une ligne avec le fichier /etc/profile

la commande grep ^umask /etc/* >tmp
affiche les erreurs à l'écran Permission non accordée, le fichier tmp ne contient lui qu'une ligne avec /etc/profile
Le fichier stderr reste à l'écran, le fichier stdout est redirigé dans tmp

La commande grep ^umask /etc/* &>tmp ou grep ^umask /etc/* >tmp 2>&1
affiche les erreurs et la sortie normale dans le fichier tmp
Le & ,regroupe stderr et stdout dans tmp, dans le deuxième cas la sortie 2 (stderr) est redirigée dans 1 (stdout)

On peut évidemment se servir de la commande > dans un script pour écrire dans un fichier
:>tmp #ceci vide le fichier tmp
echo “bonjour” >tmp #écrit bonjour dans le fichier tmp

Si on veut ajouter on utilisera » La commande »tmp ajoute à la fin si le fichier existe, sinon crée le fichier

Redirection d'entrée

On peut rediriger un fichier en entrée vers une commande, ou avec un while

 
while read ligne 
do 
  traitement 
done <fichier1 

la commande read ne lit pas l'entrée standard stdin mais le fichier1
On peut aussi remplacer <fichier1 par une commande avec par exemple < <(find …)

Cette redirection qui remplace le stdin est très intéressante pour tester des scripts et faire des scripts automatique

adduser nom <ajout_nom
Cette commande permet de créer un utilisateur nom avec un fichier ajout_nom
Dans un script, on peut ainsi gérer une classe entière, nom est alors une variable et le fichier ajout_nom est un fichier qui est créé dynamiquement dans le script en fonction de la variable nom et d'une fonction (un modèle).

cat et <<

La commande cat «EOF bonjour
tout le monde
EOF le symbole «EOF attend EOF pour finir la commande cat, on peut remplacer EOF par le terme de son choix
affiche:
bonjour
tout le monde
On peut enregistrer dans un fichier avec
cat «EOF >tmp
bonjour tout le monde
EOF le fichier tmp contient : bonjour tout le monde

lien/bash/perso/redirection.txt · Dernière modification: 2009/11/14 23:30 par per