[BSD] port log
Zahemszky Gábor
Gabor at Zahemszky.HU
2004. Május. 12., Sze, 09:11:30 CEST
Adam Szilveszter wrote:
> Hali!
>
> On Tue, May 11, 2004 at 11:03:57PM +0200, Marton Fabo wrote:
>
>>Bocs, hogy akadekoskodok, de egy nem interaktiv dolognal, mint a make,
>>miert jo a "script"-tel elmenteni a kimenetet? Illetve, mennyivel jobb,
>>mint mondjuk siman "tee"-vel file-ba kuldeni?
>
>
> Semmivel. De miert ne lehetne ugyanazt a dolgot tobbfelekeppen
> megoldani? :-)
Még egy apróság:
sh/ksh/bash és egyéb, a POSIX-shell szintaxisát használó shellekben ez
az egyetlen hivatalos módszer arra, ha a stdout-ot és stderr-t is
ugyanoda akarom eltárolni:
$ parancs > kimenet 2>&1
(illetve persze lehet az átirányítások sorrendjét megfordítani)
$ parancs 2> kimenet >&2
csh/tcsh (és ezen szintaxisu shellek esetén) csak ez az egyetlen
megoldás van:
% parancs >& kimenet
No most ezzel szemben ha nemcsak fájlba akarom pakolni, hanem látni is
akarom, az sh-ban:
$ parancs 2>&1 | tee kimenet
ezzel szemben csh-ban
% (parancs >& /dev/stdout ) | tee kimenet
Ez viszont feltételezi a /dev/stdout nevű fájl rendszerbeli meglétét,
ami mondjuk BSD-kben létező valami, de nem minden UNIX(-like)
rendszerben létezik.
Ezzel szemben a script eléggé sztenderd UNIX eszköz. És persze vérbeli
BSD-s nem bánjta a root shelljét, ami évtizedek óta /bin/[t]csh :-)
No jó, befogtam.
Zahy < Gabor at Zahemszky dot HU >
--
#!/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;for
i { [[ $i = , ]]&&i=2;[[ $i = ?? ]]||typeset -l i;j="$j $i";typeset +l
i;};print "$j"
További információk a(z) BSD levelezőlistáról