[BSD] xargs hogyan

Zahemszky Gábor Gabor at Zahemszky.HU
2006. Dec. 14., Cs, 22:59:58 CET


Laszlo Nagy írta:
> attila.rajmund.nohl at ericsson.com írta:
>> Használj bash-t /bin/sh helyett.

Marhaság. Csak ezért - tök fölösleges.

> Huh, nekem nincs is telepítve. Na de majd lesz! (Nem része az 
> alaprendszernek, de ez szerencsére most nem fog gondot okozni.)

Mondjuk - mint mondtam - csak ezért fölösleges bash-t telepíteni, ezeket
még az alap /bin/sh is tudja :-)

Ja, a hol nézhetek utána: man sh, REDIRECTION címszó (vagy valami ilyesmi)

Mint ahogy az xargs-ra is ugyanez a válasz. Meg a find-ra és a cron-ra.
Olvasd a man-t. pl ezt írtad:

====
find ORDER* \! -newerct '1 minute ago' -print0 | xargs -0 -I '{}' sh -c
" chmod 660 '{}' ; chown gandalf:users '{}' ; mv '{}' ${DESTDIR}/'{}' "

Ez jól működik, kivéve ha nincs ott ilyen file, mert akkor

find: No match.
====

Ezzel az a baj, hogy:
a) ezt a "find: No match" üzeneted a root-od CSH-ja mondja, nem a find
b) ebből kifolyólag *valószínűleg* inkább
find . -name 'ORDER*' -folytatás fentről
a megfelelő (nemcsak szintaktikailag, hanem szemantikailag is)
c) az esetek kb 99%-ban nem azt akarják csinálni, mint amit a tied *jelent*


Amennyiben pedig utálsz levelet kapni Kronosz bácsitól, akkor man 5
crontab, különös tekintettel a MAILTO kezdetű részre.

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