presmerovani vystupu

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Neděle Říjen 29 18:12:20 CET 2006


On Thu, 26 Oct 2006, Michal Vojan wrote:

> exec 6 >(cat - |grep -v "^$" >&1)

Tedy nevím, 1. tohle se podle mne musí napsat exec 6> >(...), jinak to 
bash správně nepochopí. 2. získávate putovní pohára "za zbytečný cat",
3. přesměrování ">&1" mělo dělat co? přesměrovat stdout do stdout?

> ... a takhle to samozrejme nefunguje, jak bych si predstavoval.

A co tam nefunguje?

> Problem mam totiz s tim, ze ono filtrovani se spousti jako subproces,
> ktery si tak vytvari svoje vlastni vystupy, ktere uz neumim odchytit.

A jak je chcete odchytit?

> Zaroven se mi vsechno na konzoli vypise v rozhazenem poradi, coz
> se mi taky nelibi.

To je těžké. Můžete spojit stdout a stderr do jedné roury pomocí
"program 2>&1 | filtr", ale tím ztratíte informaci, který z nich je který 
a navíc se stejně může změnit vzájemné pořadí, protože stdout do 
roury je agresívně bufferovaný, zatímco stderr je vždycky line buffered, i 
když jde do roury.

První problém by šlo vyřešit tak, že byste program spustil pod nějakým 
pomocným programem, co by vyrobil dvě roury, a pak obě současně sledoval a 
četl. Ale to už asi nenaprogramujete v shellu.

--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