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