Sim, você pode fazer isso apenas com bash: redirect stdout para um processo tee
que pode fazer algo quando seus padrões são vistos. tee
é bom porque também coloca stdout na stdout.
exec 1> >(tee >(awk '/foobar/ {print "*** DING DING ***"}'))
Isso envia stdout para processar a substituição 1, tee
, que copia seu stdin para stdout e processa a substituição 2, um script awk que faz alguma coisa. Você poderia colocar seu código, ou o caminho para um script, na substituição do processo interno.
Para demonstrar
$ echo this is foobar stuff
this is foobar stuff
$ exec 1> >(tee >(awk '/foobar/ {print "*** DING DING ***"}'))
$ date
Thu Mar 10 16:37:14 EST 2016
$ pwd
/home/jackman
$ echo this is foobar stuff
this is foobar stuff
*** DING DING ***