Bonjour à tous.
Je vais essayer d'être clair dans mes explications.
Je cherche le moyen de rediriger tous les retours vers le même endroit, mais sans avoir à le faire ligne à ligne.
Par exemple:
au lieu de faire
action 1 > /dev/nul
action2 > /dev/nul
action3 >/dev/nul
je voudrais faire:
[mode dev/null on]
action1
action2
action3
[mode dev/null off]
Autrement formulé: existe t-il un moyen d'intercepter de façon générale ce qui part vers stdout ? Est ce faisable ?
# exec [redirection ...]
Posté par tgl . Évalué à 10.
% cat devnull
#!/bin/sh
echo "on me voit"
# sauvegarde de stdout et redirection vers /dev/null
exec 3>&1 1>/dev/null
echo "on ne me voit plus"
# restauration de stdout et ménage de la sauvegarde
exec 1>&3 3>&-
echo "on me voit à nouveau"
% ./devnull
on me voit
on me voit à nouveau
Évidemment, c'est le même principe si tu veux aussi supprimer la sortie d'erreur, c'est à dire :
...
# sauvegarde de stdout et stderr, et redirection vers /dev/null
exec 3>&1 4>&2 &>/dev/null
...
# restauration de stdout et stderr, et ménage des sauvegardes
exec 1>&3 2>&4 3>&- 4>&-
...
[^] # Re: exec [redirection ...]
Posté par stef . Évalué à 2.
# groupage de commandes
Posté par netsurfeur . Évalué à 9.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.