ãšããããšæ¡åŒµåãé€ãããã¡ã€ã«åã衚瀺ãããŸããã
ããã bash ã§è¡ãã«ã¯ã©ããããè¯ãã§ããããïŒ
---
hanajipon @ mail.goo.ne.jp
ããã§ã©ãã§ãããïŒ
for i in `ls -1`; do echo ">>>${i%.*}<<<"; done
///// ------------------------------------------------------------------
-O-O- æè€ ç§æ Œ (SAITO Shukaku) @ PUGH (Palm Users Group in Hokkaido)
_ mailto:shu...@sai10.nu (ã±ãµ) http://www.pugh.palm-j.com/
> csh ã§ äŸãã°
> foreach i ( `ls -1` )
> echo ">>>$i:r<<<"
> end
>
> ãšããããšæ¡åŒµåãé€ãããã¡ã€ã«åã衚瀺ãããŸããã
> ããã bash ã§è¡ãã«ã¯ã©ããããè¯ãã§ããããïŒ
bashã®æ©èœãçšããæ¹æ³ã¯æè€ããã瀺ãããŠããŸãã®ã§ãshellã®çš®é¡ãå
ããªãæ¹æ³ãã
å€ãã®UNIXç³»OSã§ã¯basenameãšããã³ãã³ããããã
echo ">>>"`basename $i`"<<<"
ãšããããšã§ãæ¡åŒµåãšãã«ãã¹ã»çžå¯Ÿãã¹ã®å Žåã¯ãã£ã¬ã¯ããªéšåãé€å»
ã§ããŸãããã ããã®æ¹æ³ã䜿ããšããã»ã¹ã倧éã«æ¶è²»ããŸãã®ã§ãshell
ã«æ©èœãåãã£ãŠãããšãã¯ãã¡ãã䜿ã£ãã»ããããã§ãããã
--
äžå±±éäº
nakayam...@anet.ne.jp
Nakayama Ryu~ji <nakayam...@anet.ne.jp> writes:
> Article <blrtil$h0g$1...@nn-os102.ocn.ad.jp> ã«ãŠã
> "hanajipon" <hana...@mail.goo.ne.jp> ããã
>
> > csh ã§ äŸãã°
> > foreach i ( `ls -1` )
> > echo ">>>$i:r<<<"
> > end
> >
> > ãšããããšæ¡åŒµåãé€ãããã¡ã€ã«åã衚瀺ãããŸããã
> > ããã bash ã§è¡ãã«ã¯ã©ããããè¯ãã§ããããïŒ
:
> echo ">>>"`basename $i`"<<<"
>
> ãšããããšã§ãæ¡åŒµåãšãã«ãã¹ã»çžå¯Ÿãã¹ã®å Žåã¯ãã£ã¬ã¯ããªéšåãé€å»
> ã§ããŸãã
äžèšã ãšãæ¡åŒµåã¯æ®ã£ã¡ãããŸãããã
echo ">>>"`basename $i | cut -d. -f1`"<<<"
ã§ã©ãã§ãããã
ïŒããæ®ãããéšåã« '.' ããããšã ãã ãªã
--
ta...@kc5.so-net.ne.jp ç«è± æïŒ éã¶è°·åž
basename ã§æ¡åŒµåãé€å»ããã«ã¯ãé€å»ããæ¡åŒµåã第äºãã©ã¡ãŒã¿ã§
æå®ããå¿
èŠããããŸãã®ã§ãããã§ã¯ã ãã§ãã
expr ã䜿ã£ãŠã
echo ">>>"`expr $i : '\(.*\)\.' '|' $i`"<<<"
--
oo
In article <u4qyiw...@anet.ne.jp>,
Nakayama Ryu~ji <nakayam...@anet.ne.jp> wrote:
>> ãšããããšæ¡åŒµåãé€ãããã¡ã€ã«åã衚瀺ãããŸããã
>> ããã bash ã§è¡ãã«ã¯ã©ããããè¯ãã§ããããïŒ
>
>bashã®æ©èœãçšããæ¹æ³ã¯æè€ããã瀺ãããŠããŸãã®ã§ãshellã®çš®é¡ãå
>ããªãæ¹æ³ãã
ã${%} ã ${#} 㯠bash ç¬èªä»æ§ã§ã¯ãªã POSIX èŠæ Œãªã®ã§ãä»
ã«ã ash ã ksh ãªã©ã«å®è£
ãããŠããŸããã
>å€ãã®UNIXç³»OSã§ã¯basenameãšããã³ãã³ããããã
>
>echo ">>>"`basename $i`"<<<"
ãfind ãªããšããããls -1 ã®åºåã«å¯Ÿã㊠basename ãæå¹ãš
ãªããããªå±é¢ã¯æ³åã ã«åºæ¥ãªããã§ããã©ãäžäœäœãšåéãã
ãããã§ããããïŒ
ãä»åã®ãããªçšéã ãšæ®é㯠expr ã§ããããããsed ãšã awk
ãšã perl ãšãã®æ¹ãæã£åãæ©ãããã
>ãšããããšã§ãæ¡åŒµåãšãã«ãã¹ã»çžå¯Ÿãã¹ã®å Žåã¯ãã£ã¬ã¯ããªéšåãé€å»
>ã§ããŸãããã ããã®æ¹æ³ã䜿ããšããã»ã¹ã倧éã«æ¶è²»ããŸãã®ã§ãshell
>ã«æ©èœãåãã£ãŠãããšãã¯ãã¡ãã䜿ã£ãã»ããããã§ãããã
ãbasename èªèº«ããã `` ã®æ¹ãã³ã¹ããé«ãã§ããããããã
æå³ã§ã¯ `ls -1` ããŠããæç¹ã§ç¡é§ãªã®ã§ããforeach i (*)ã
ããfor i in *ãã§æ§ããªããšæããŸãã`ls -1a` ãªã wildcard
ã§ã®çœ®æãã¯ã¡ãã£ãš tricky ã«ãªããŸããã©ã
ãã³ã¹ããæ¥µåæããBourne shell æšæºã®æ©èœã ãã§å®çŸããã
ãªãã°ãããªæãã§ãããããã
---- Cut Here ----
#!/bin/sh
for i in *; do
case "${i}" in
'*')
break
;;
esac
OIFS=${IFS}
IFS=.
set -- ${i}
IFS=${OIFS}
i=$1
while :; do
shift
case "$#" in
0|1)
break
;;
*)
i=${i}.$1
;;
esac
done
echo ">>>"${i}"<<<"
done
---- Cut Here ----
ãæåŸã® echo(1) ä»¥å€ fork ã exec ãããªãçãæè¿ã®å®è£
ã§
㯠echo ãã builtin ã ã£ããããã®ã§ãããã ãšå
šéš shell ã®
äžã ãã§éããããªã
ïŒãtest ã§æžããšããã case ã§æžããšèŠã¥ããã ãã§ãã :-)
--
ããã ããã
> Nakayama Ryu~ji <nakayam...@anet.ne.jp> writes:
>
>> Article <blrtil$h0g$1...@nn-os102.ocn.ad.jp> ã«ãŠã
>> "hanajipon" <hana...@mail.goo.ne.jp> ããã
>>
>> > csh ã§ äŸãã°
>> > foreach i ( `ls -1` )
>> > echo ">>>$i:r<<<"
>> > end
>> >
>> > ãšããããšæ¡åŒµåãé€ãããã¡ã€ã«åã衚瀺ãããŸããã
>> > ããã bash ã§è¡ãã«ã¯ã©ããããè¯ãã§ããããïŒ
> :
> > echo ">>>"`basename $i`"<<<"
>>
>> ãšããããšã§ãæ¡åŒµåãšãã«ãã¹ã»çžå¯Ÿãã¹ã®å Žåã¯ãã£ã¬ã¯ããªéšåãé€å»
>> ã§ããŸãã
>
> äžèšã ãšãæ¡åŒµåã¯æ®ã£ã¡ãããŸãããã
ãã£âŠãããã³ãã ããã¿ãŸãããããã«ç¢ºèªããã«èšäºãæžããŠããŸããŸã
ãã
> echo ">>>"`basename $i | cut -d. -f1`"<<<"
>
> ã§ã©ãã§ãããã
> ïŒããæ®ãããéšåã« '.' ããããšã ãã ãªã
ä»ãäºæ¹(11æ¥2ææç¹)ããææããããšãããããŸãã
åéããšããããåãªããã±ã§ãã:-)
--
äžå±±éäº
nakayam...@anet.ne.jp
> ïŒãtest ã§æžããšããã case ã§æžããšèŠã¥ããã ãã§ãã :-)
æå ã® bash ã ãš test ã [ ã built-in ã§ã :-)
ã¡ãªã¿ã«ããŒãžã§ã³ã¯
% bash --version
GNU bash, version 2.05b.0(1)-release (i386-portbld-freebsd4.7)
Copyright (C) 2002 Free Software Foundation, Inc.
ã§ããã©ãç§ã bash ãè§Šãããã«ãªã£ãããïŒã£ãŠãã£ãŠãã€ãæè¿ã§ããïŒ
ã¯æ¢ã« test/[ 㯠built-inã
========================================================================
é£¯å¶ æµ©å
/ ã§ããããã»ããã㟠http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp
> ãbasename èªèº«ããã `` ã®æ¹ãã³ã¹ããé«ãã§ããããããã
> æå³ã§ã¯ `ls -1` ããŠããæç¹ã§ç¡é§ãªã®ã§ããforeach i (*)ã
> ããfor i in *ãã§æ§ããªããšæããŸãã
* ã§ ARG_MAXè¶ãããããªãã§ãã?
---------------------------------------------------------------------
tesi...@mtf.biglobe.ne.jp
> > æå³ã§ã¯ `ls -1` ããŠããæç¹ã§ç¡é§ãªã®ã§ããforeach i (*)ã
> > ããfor i in *ãã§æ§ããªããšæããŸãã
>
> * ã§ ARG_MAXè¶ãããããªãã§ãã?
/bin/ls -1 | sed -e 's/\(.*[^.].*\)\.[^.]*$/\1/' -e 's/.*/>>> \0 <<</'
ã§ã©ãã§ãããïŒforã§ã«ãŒãããããéãã¿ããã§ãïŒ
åç°æŠåž
In article <bm8er8$1e1$1...@bgsv5647.tk.mesh.ad.jp>,
tesi...@mtf.biglobe.ne.jp <tesi...@mtf.biglobe.ne.jp> wrote:
>> ãbasename èªèº«ããã `` ã®æ¹ãã³ã¹ããé«ãã§ããããããã
>> æå³ã§ã¯ `ls -1` ããŠããæç¹ã§ç¡é§ãªã®ã§ããforeach i (*)ã
>> ããfor i in *ãã§æ§ããªããšæããŸãã
>
>* ã§ ARG_MAXè¶ãããããªãã§ãã?
ãARG_MAX ã£ãŠäœã®å€ã ããåç¥ã§ããïŒ* ã®å±é㯠shell èªèº«
ã®ãä»äºã§ããã
ãBourne shell ã®äžã§éããŠãŠ exec ããŠããªãèš³ã§ããããã
ãå¶éããããšãããªãã° ARG_MAX ã§ã¯ãªã㊠Bourne shell ã®
å
éšã§èšããããå¶éã ãã«ãªãçã§ãã
ã確ã Bourne shell ã®å®è£
ã§ã¯ malloc() ã§ç¢ºä¿ããŠããçãªã®
ã§ãå¶éãšãªãã®ã¯ ARG_MAX ãšã Bourne shell ã§å®çŸ©ãããã
çš®ã®å®æ°å€ãšãã§ã¯ãªããããã RLIMIT_DATA ã®æ¹ã§ããããã
ãARG_MAX ã®å¶éãšæ¯ã¹ãŠã©ã¡ããå³ãããã§ããã©ãE2BIG ãè¿
ãã®ã¯ execve() ã§ãã®ã§ããã malloc() ãåããªãçšã®æ°ãã
ã£ããšããããexecve() ã«æž¡ã以åã« shell ã®å
éšåŠçã§å€±æã
ãçã
ãäžè¬è«ãšããŠããæ®éã¯å€å ARG_MAX ã®å¶éã®æ¹ãå
ã«æ¥ããš
æããŸããARG_MAX ã£ãŠãããã K order ã§ãã RLIMIT_DATA ã®
æ¹ã¯ MB order ã§ãããã
ãfilename ã®é·ãã«ãäŸåããŸãããMAXNAMLEN ã KB order ã®
ç°å¢ã§ç®äžæ¯äœ¿ãæãããç¶æ³ã§ãç¡ãéã㯠ARG_MAX ã®æ¹ãå
ã«äžéã«éããçã§ãã
ãå°€ããRLIMIT_DATA ã®æ¹ã決ããŠäžéã«éããªãä¿èšŒã¯ãªãèš³ãª
ã®ã§ããããããŸã§åå·çã«ãªãã®ã§ããããããã§åã㊠ls -1
ã®åºçªã§ããã
ãããã§ã `` ãªãã䜿ã£ããåæ§ã« RLIMIT_DATA ã®å¶éã«åŒã£
ããããŸããããls ã®åºåã temporary file ã«èœãšãå¿
èŠãã
ãã§ããããã
ãls ããçµæãäœ MB ã«ããªããããªç¶æ³ã£ãŠãªããªãæ³åãã¥
ããã®ã§ãäœãèµ·ãããä¿èšŒã®éãã§ã¯ãããŸãããã©ãpipe ã«
éããŠåŠçãããã®ã§ãå¯èœããç¥ããŸããã
ãpipe ã䜿ãããšããããäžè¡ç®ããls -l | while read i; doã
ã«å€ããã ãã§å¯Ÿå¿å¯èœã ãšæããŸããäœããfilename ã«ã\ãã
å«ãã§ãããããšè©±ãããããããªããŸããã
--
ããã ããã
In article <3F86ECBB...@ht.sakura.ne.jp>,
IIJIMA Hiromitsu <delm...@ht.sakura.ne.jp> wrote:
>ããããŸã§ãã
>> ïŒãtest ã§æžããšããã case ã§æžããšèŠã¥ããã ãã§ãã :-)
>
>æå
ã® bash ã ãš test ã [ ã built-in ã§ã :-)
ãè©±ã¯æ¢ã« bash ãžã®äŸåæ§ãç¡ããã«ã¯ãšããä»®å®ã®è©±ã«ãªã£ãŠ
ãããã§ããã©ãbash ãªãã° ${i%.*} ã§è§£æ±ºæžã¿ã
ãå°€ããBourne shell ãåŸæã¯ test ã builtin ã§çšæããŠããŸ
ãã4.3BSD ã®é 㯠/bin/test ã§ããããS.Bourne ã SunOS ã«å®
è£
ããé ã«ã¯ test ãå
éšã§å®è£
ããŠããŸããã
ããªã®ã§ããã®é ã«åãã³ããŒããåºãŠãã UNIX ã§ã¯ããã®åŸæ
çã®æ¡åŒµ Bourne shell ãå®è£
ãããŠãããšæããŸãã
ïŒããã以éã® UNIX ã«ãªããšãash ã ksh ã«åã£ãŠä»£ããããŠã
ïŒBourne shell èªäœãèŒã£ãŠãªãã£ããããŸããæµç³ã« S.Bourne
ïŒãæ±ããŠãã Sun ã§ã¯æªã ã« Solaris ã«èŒããŠããŸããã©ã
>ã§ããã©ãç§ã bash ãè§Šãããã«ãªã£ãããïŒã£ãŠãã£ãŠãã€ãæè¿ã§ããïŒ
>ã¯æ¢ã« test/[ 㯠built-inã
ãbash 㯠Bourne shell ãšæ¯ã¹ãŠéååŸã§ãã®ã§ãããã«ã¯æå
ãã test ã builtin ã§å®è£
ãããŠããçã§ãã
--
ããã ããã
In article <m365iv5...@maedapc.cc.tsukuba.ac.jp>,
MAEDA Atusi <ma...@cc.tsukuba.ac.jp> wrote:
>/bin/ls -1 | sed -e 's/\(.*[^.].*\)\.[^.]*$/\1/' -e 's/.*/>>> \0 <<</'
>
>ã§ã©ãã§ãããïŒforã§ã«ãŒãããããéãã¿ããã§ãïŒ
ãé床ã ããåé¡ã«ãããã§ããããshell script ã§ããããæž
ããããã®ã¯ parsing ã®æéããããã®ã§æ±ºããŠåã¡ç®ã¯ãªããš
æããŸãã
ãwild card ã®å±éãçµæ§æéã«ãªãã®ã§ããls -1ãããls -1 *ã
ã«å€ããã ãã§ãé
ããªã£ããããããããªãã§ãããããã
ãfork & exec ã«ã³ã¹ããããããšèšã£ãŠããloop ã®å€ã§è¡ãªã
åã«ã¯å€§å¢ã«åœ±é¿ç¡ãã§ããããããé床éèŠãªãã°åçš® script
èšèªãæé©è§£ã§ãããã
ïŒãç§ãæããã®ã¯é£œããŸã§ããshell ã®çš®é¡ãåããªãæ¹æ³ããª
ïŒã®ã§ãå€éšã³ãã³ãã®äœ¿çšã¯æäœéã«æããŸãããsingle user
ïŒmode ã§äœ¿ãããšãããã¡ãªããã¯æè¿æå³ãªãããªãŒã
--
ããã ããã
"Takashi SHIRAI" <shi...@unixusers.net> wrote in message
news:bm6nnp$dbg$1...@nsvn01.zaq.ne.jp...
> ããããã§ãã
>
> In article <u4qyiw...@anet.ne.jp>,
> Nakayama Ryu~ji <nakayam...@anet.ne.jp> wrote:
> >> ãšããããšæ¡åŒµåãé€ãããã¡ã€ã«åã衚瀺ãããŸããã
> >> ããã bash ã§è¡ãã«ã¯ã©ããããè¯ãã§ããããïŒ
> >
> >bashã®æ©èœãçšããæ¹æ³ã¯æè€ããã瀺ãããŠããŸãã®ã§ãshellã®çš®é¡ãå
> >ããªãæ¹æ³ãã
>
> ã${%} ã ${#} 㯠bash ç¬èªä»æ§ã§ã¯ãªã POSIX èŠæ Œãªã®ã§ãä»
> ã«ã ash ã ksh ãªã©ã«å®è£
ãããŠããŸããã
#åºåŒµã§ãã°ããé¢ããŠãããããã€ã®ãŸã«ãã¹ã¬ããã巚倧ã«ãªã£ãŠãã»ã»ã»ã
ãŸããŸãåæ©çãªè³ªåããããããæçž®ã§ããããã®
${%} ã ${#} ã®è¡šè𿹿³ã®æå³ããªãã¡ã¬ã³ã¹ã§åŒãã«ã¯äœãæã£åãæ©ãã§ãã
ããïŒ
ãŸãã¯ããã®ããšãäœãšèšãã®ã§ããããïŒ
man bash ãããã®ã§ãããèŠã€ããããŸããã§ããã
ããšã¯ POSIX ã ããã§ããããšãããã
æèš±ã®bash(1)ããåŒçš
Parameter Expansion
(...)
${parameter#word}
${parameter##word}
The word is expanded to produce a pattern just as in pathname expansion. If the pattern
matches the beginning of the value of parameter, then the result of the expansion is the
expanded value of parameter with the shortest matching pattern (the ``#'' case) or the
longest matching pattern (the ``##'' case) deleted. If parameter is @ or *, the pattern
removal operation is applied to each positional parameter in turn, and the expansion is
the resultant list. If parameter is an array variable subscripted with @ or *, the pat-
tern removal operation is applied to each member of the array in turn, and the expansion
is the resultant list.
${parameter%word}
${parameter%%word}
The word is expanded to produce a pattern just as in pathname expansion. If the pattern
matches a trailing portion of the expanded value of parameter, then the result of the
expansion is the expanded value of parameter with the shortest matching pattern (the
``%'' case) or the longest matching pattern (the ``%%'' case) deleted. If parameter is
@ or *, the pattern removal operation is applied to each positional parameter in turn,
and the expansion is the resultant list. If parameter is an array variable subscripted
with @ or *, the pattern removal operation is applied to each member of the array in
turn, and the expansion is the resultant list.
---
è€äºå®æ²
In article <87oewjq6if.wl%fu...@chi.its.hiroshima-cu.ac.jp>,
Fujii Hironori <fu...@chi.its.hiroshima-cu.ac.jp> wrote:
>ããšã¯ POSIX ã ããã§ããããšãããã
ã${#} ã ${%} ã¯ç¢ºãã« POSIX èŠæ Œã§ãããPOSIX ã¯äœããªããš
ããããäœãããŠããèš³ã§ã¯ãªãã®ã§ãPOSIX èŠæ Œã«ã¯å€§æŠãã®å
ãšãªãå®è£
ãååšããŸãã倧æµã¯ SystemV ç³»ã§ããã
ããšããèš³ã§ã${#}/${%} ãå€å SystemV æšæº shell ã§ãã Korn
shell ã«ç±æ¥ããŠãããšæããŸããã ãšãããšãåç
§ãã¹ãã¯ãã®
蟺ãããšã
http://www.cs.princeton.edu/~jlk/kornshell/doc/man88.html
ããParameter Substitution.ãã®é ç®ã§åŸãã®æ¹ã«èŒã£ãŠãŸãã
--
ããã ããã
shi...@unixusers.net (Takashi SHIRAI) writes:
> In article <87oewjq6if.wl%fu...@chi.its.hiroshima-cu.ac.jp>,
> Fujii Hironori <fu...@chi.its.hiroshima-cu.ac.jp> wrote:
>>ããšã¯ POSIX ã ããã§ããããšãããã
>
> ã${#} ã ${%} ã¯ç¢ºãã« POSIX èŠæ Œã§ãããPOSIX ã¯äœããªããš
> ããããäœãããŠããèš³ã§ã¯ãªãã®ã§ãPOSIX èŠæ Œã«ã¯å€§æŠãã®å
> ãšãªãå®è£
ãååšããŸãã倧æµã¯ SystemV ç³»ã§ããã
> http://www.cs.princeton.edu/~jlk/kornshell/doc/man88.html
SysVç³»ã®æŽå²ã¯è¿œããªãã£ãã®ã§ãããBSDç³»ã§ã¯4.4BSDæä»£ã«å®è£ ãããŠããããã§ãã
http://www.freebsd.org/cgi/man.cgi?query=sh&apropos=0&sektion=0&manpath=4.4BSD+Lite2&format=html
äžèšã®çšã«4.4BSD Lite2 ã® sh ã®ããã¥ã¢ã«ã«ã¯è©²åœã®èšè¿°ããããŸã
ãããã®åŸãªãªãŒã¹ãããNetBSD1.0ã®shã®ããã¥ã¢ã«ã®äžã§ã¯
(UNIMPLEMENTED IN 4.4alpha)
ãš 4.4alpha ã§ã¯å®è£
ãããŠããªãããšãæèšãããŠããŸãã
âŒâ³ ã®ã ããã (NODA Takashi)
âœâ² mailto:no...@mb.neweb.ne.jp