Date: Wed, 28 May 1997 16:50:23 +0200 (MET DST) From: Zahemszky Gabor <zgabor@CoDe.hu> To: freebsd-questions@freebsd.org (FreeBSD questions) Cc: un_x@anchorage.net Subject: Re: What command line to redirect 'make world' warnings ? Message-ID: <199705281450.QAA00425@CoDe.hu> In-Reply-To: <Pine.BSF.3.95q.970527173802.1668B-100000@aak.anchorage.net> from Steve Howe at "May 27, 97 06:46:10 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Well, I've written RTMF, because he/she(?) wrote "in bash ..." - so maybe (s)he HAS bash - and bash manual, too. > > > make world 2>&1 > /proxy/world3 > > stdout to tty > stderr to tty > redirection 2>&1 > stderr to stdout (tty) > redirection > file > stdout to file > > got it! i think this is an easy mistake to make, since one would assume > if a stderr is duplicated on stdout, then any redirection of stdout would > also apply to stderr. After duplication - I think - they go paralell, but not on the same way. If one of them turn, the other needn't. > got it. i notice "make world > 2>&1 /proxy/world3" is an error, > but "make world 2>&1 > /proxy/world3" is not! (sh) Of course, because the ">" needs a parameter (a filename or a &foo construct), but there isn't any. > > &>word > > and > > >&word > > > > Of the two forms, the first is preferred. > > This is semantically equivalent to > > > > >word 2>&1 > > > > This type of redirection is working only in bash ... > > so with bash one could say: > > make world 2&>1 /proxy/world3 > > and get the desired effect, correct? (i don't have bash ...) No! you have to type make world &> /proxy/world3 and it's the same as the original command >file 2>&1 form. As I understood from the bash manual. (Well, I didn't try your version. Maybe I'll have more time some times later.) > > ( make world 2>&1 >> /proxy/world3 ) > /proxy/world3 > > in a subshell: > stdout to tty > stderr to tty > redirection 2>&1 > stderr to stdout > stdout >> file > end subshell. > -------------- > redirection > file > stdout (subshell stderr) > file > > got it! > > > { make world 2>&1 >> /proxy/world3 ; } > /proxy/world3 > > same thing with grouping instead of subshell spawning. > > > and you have to use append ( >> ) inside. Well, why? It's your exercise. > > hmmm. in sh, ">" inside works as well ... ??? Really? If it is, I think, it's a bug in shell, because first, we make the redirection in the parent shell, after in the sub shell. But in the subshell, with ">", we reopen it with truncation, but with ">>", with append only. Well, I've tried it with 2.1.5's sh, with pdksh 5.2.12 and with bash 1.14.5, and worked as I wrote. I think, in your example, you hadn't got an error message. Try this one: $ echo lo > file $ ( cat nosuchfile lo 2>&1 > f ) > f ; cat f lo $ ( cat nosuchfile lo 2>&1 > f ) > f ; cat f cat: nosuchfile: No such file or directory lo $ Well, I think maybe it's some undocumented behaviour of not a bug/not a feature of the buffering of shell.??? Bye, Gabor -- #!/bin/ksh Z='21N16I25C25E30, 40M30E33E25T15U!' ;IFS=' ABCDEFGHIJKLMNOPQRSTUVWXYZ ';set $Z;for i { [[ $i = ? ]]&&print $i&&break;[[ $i = ??? ]]&&j=$i&&i=${i%?};typeset -i40 i=8#$i;print -n ${i#???};[[ "$j" = ??? ]]&&print -n "${j#??} "&&j=;typeset +i i;};IFS=' 0123456789 ';set $Z;X=;for i { [[ $i = , ]]&&i=2;[[ $i = ?? ]]||typeset -l i;X="$X $i";typeset +l i;};print "$X"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199705281450.QAA00425>