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