Prefiltrovani stderr
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Sobota Listopad 24 18:02:37 CET 2001
On 23 Nov 2001, Matej Cepl wrote:
> Nevíte někdo jak přefiltrovat jenom stderr a nechat stdout na pokoji
Jestli v shellu, tak zhruba neco takoveho, co se tu uz objevilo:
exec 9>&1
program 2>&1 1>&9 9>&- | filtr 1>&2 9>&-
Nejprve si stdout zkopirujeme do fd 9, a pak program spustime v roure
tak, ze stderr presmerujeme na stdout (ktere je nyni roura), stdout
presmerujeme z roury do puvodniho stdout ve fd 9 a fd 9 uzavreme.
U filtru pak presmerujeme vystup na stderr a fd 9 take zavreme.
Alternativne by v bashi mohl jit provest touto konstrukci
program 2> >(filtr 1>&2)
ale pak to po skonceni programu nepocka na dokonceni filtru, coz muze byt
problem.
> (navíc nevím jestli je možné zasahování do stdout u interaktivního
> programu)?
Mozna to je (aspon pokud ten program neudela neco jako close(1);
open("/dev/tty", O_WRONLY)), ale vysledek muze byt dost tristni.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux