Bash Scripting

jedno kratko pitanje:

hocu da mi STDOUT neke komande se ne prikazuje na ekranu a da se STDERR prikaze na ekrenu i paralelno ode u logfile

$ komanda > /dev/null 2>&1 | tee logfile.log

ne daje zeljene rezultate jer logfile.log ostaje prazan.

Ima li neko ideju?

Cisto da se zna, nisam ja ovolko pametan: [url]http://unix.stackexchange.com/questions/9646/show-only-stderr-on-screen-but-write-both-stdout-and-stderr-to-file[/url]

Cisto da se zna, nisam ja ovolko pametan: http://unix.stackexchange.com/questions/9646/show-only-stderr-on-screen-but-write-both-stdout-and-stderr-to-file

ha rodila majka :smiley:

fala

EDIT:

hmm, ovo je sub-optimalno

naime, ako je komanda uspjesna i nema errora, zapisace i STDOUT u log file. Sto je pu kaka.

Može li ovo ili neka varijacija?

CMD > >(tee -a LOG_FILE) 2>&1

originalna ideja je od exec komande, gdje želiš da ostatak skripte piše u log file, uz pisanje na stderr ili stdout

exec > >(tee -a LOG_FILE)
ili
exec 2> >(tee -a LOG_FILE)

[quote=adis]Može li ovo ili neka varijacija?

CMD > >(tee -a LOG_FILE) 2>&1 [/quote]

Isto problem kao i adioe3 rjesenje, pise STDOUT i u log file kada je komanda uspjesna.

I dodatno, pise STDOUT i na ekran :slight_smile:

Osvježio sam odgovor iznad, možda dobiješ ideju :smiley:

tee can split input :slight_smile:

ovo radi:

$ komanda 2> >(tee -a logfile.log) 1>/dev/null

Kao i ovo sto je @Asm1r predlozio