Je voudrais être capable de diriger toutes les commandes du terminal bash via une certaine commande (sans raison valable autre que de jouer une farce à quelqu'un). Je veux juste canaliser la sortie standard de toute commande exécutée dans un programme prédéterminé sans rien faire de spécial.
Par exemple: Si ce programme prédéterminé était cowsay
echo "Hello World"
devrait produire
_____________
< Hello World >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Comment puis-je atteindre cet objectif? (Certains des programmes amusants que je voudrais utiliser pour faire des farces sur d’autres incluent rev
, cowsay
et lolcat
)
exec > >(COMMAND)
Où COMMAND
est rev
, lolcat
ou autre. Cela ne fonctionnera pas avec cowsay
.
Par exemple.
bash-4.3$ exec > >(rev)
bash-4.3$ echo hello
olleh
Explication:
exec
remplace normalement le Shell actuel par un autre processus, mais si vous lui donnez simplement une redirection comme dans ce cas, la redirection aura lieu pour le Shell actuel.>
redirect stdout>(COMMAND)
entrée dans COMMAND
Notez que si vous avez un Prompt_COMMAND
, vous devez le diriger vers stderr pour éviter la sortie standard redirigée.