Pour récupérer la sortie d’une commande dans une variable, on fait :
var=$(commande)
On peut récupérer aussi la sortie d’erreur (en plus de la sortie standard) en ajoutant :
var=$(commande 2>&1)
Si on redirige la sortie standard de la commande, on récupère juste la sortie d’erreur dans la variable :
var=$(commande 2>&1 > cmd.log)
On peut aussi simplement jeter la sortie de la commande :
var=$(commande 2>&1 > /dev/null)
Il est plus délicat de laisser passer la sortie standard de la commande en récupérant simplement la sortie d’erreur dans la variable :
exec 3>&1
var=$(commande 2>&1 1>&3)
exec 3>&- # on ferme le canal 3
Ce qui peut aussi s'écrire :
{ var=$(commande 2>&1 1>&3-) ;} 3>&1
On note que 1>&3-
est équivalent à 1>&3 3>&-
.
Mais sans la récupérer dans une variable, on peut faire des recherches dans la sortie d’erreur :
commande > fichier.log 2> >( grep recherche >&2)
Il faut bien penser à rediriger le résultat du grep
,
sans quoi, on ne verra rien !
Pour voir comment utiliser ces redirections pour récupérer le temps d’exécution d’un commande, voir cette note.
Documentation
Voir aussi :
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit