ã·ã§ã«ã¹ã¯ãªãããã¦ãã¦
æã®è¨äºã§ãããIBM DeveloperWorksã§ç´¹ä»ããã¦ããUnixã³ãã³ãããç´¹ä»ããã¾ã«å¿ããã®ã§åå¿é²ç¨ã«ã¾ã¨ãã¦ããã¾ãã
åèãªã³ã¯
1ã³ãã³ãã§ãã£ã¬ã¯ããªããªã¼çæ
-pãªãã·ã§ã³ãå©ç¨
$ mkdir -p tmp/a/b/c
䏿¬å¼§ã使ãã°è¤éãªããªã¼ã1ã³ãã³ãã§
$ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
ããã-pãªãã·ã§ã³ã使ããªãã®ãªãmkdirhierã³ãã³ãã
$ mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
å±éãããã£ã¬ã¯ããªã®æå®
$ tar xvf newarc.tar.gz -C tmp/a/b/c
â»åèãµã¤ãã«è¨è¿°ããã¦ããã³ãã³ãã¯zshã§ã¯åä½ããªãã£ã
$ tar xvf -C tmp/a/b/c newarc.tar.gz
&&ã³ã³ããã¼ã«æ¼ç®å
1ã¤ç®ã®ã³ãã³ããæ£å¸¸çµäºããã¨ãã2ã¤ç®ã®ã³ãã³ããå®è¡ï¼æ£ç¢ºã«ã¯Exitã¹ãã¼ã¿ã¹ã0ã®ã¨ã)
cd tmp/a/b/c && tar xvf ~/newarc.tar.gz
||ã³ã³ããã¼ã«æ¼ç®å
1ã¤ç®ã®ã³ãã³ããç°å¸¸çµäºããã¨ãã2ã¤ç®ã®ã³ãã³ããå®è¡ï¼Exitã¹ãã¼ã¿ã¹ã0以å¤ã®ã¨ã)
cd tmp/a/b/c || mkdir -p tmp/a/b/c
&&ã¨||æ¼ç®åã®çµã¿åããä¾
cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf ~/newarc.tar.gz -C tmp/a/b/c
夿°ã®Quote
bashã§ã¯ä¸è¨ã®åä½ã«ãªããzshã§ã¯å ¨ã¦"tmp/*"ã¨ããæååã表示
~ $ ls tmp/ a b ~ $ VAR="tmp/*" ~ $ echo $VAR tmp/a tmp/b ~ $ echo "$VAR" tmp/* ~ $ echo $VARa ~ $ echo "$VARa" ~ $ echo "${VAR}a" tmp/*a ~ $ echo ${VAR}a tmp/a
é·ãå ¥åæã«ã¯ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãå©ç¨
\ã§è¤æ°è¡ã«æ¸¡ãå ¥åãå¯è½
$ cd tmp/d/e/f || \ cmdor> mkdir -p tmp/d/e/f && \ cmdor cmdand> tar xvf ~/archives.tgz -C tmp/d/e/f
ãµãã·ã§ã«å ã®ã³ãã³ããªã¹ããå®è¡
ãµã³ãã«ã¯tarã®å±éãªã¹ããadminã«ã¡ã¼ã«ãããã¨ããå¦çã ã¨æããåããã$()ã§å²ãã¨tar -vã®çµæã䏿ãåãã¦ãªãã£ã½ãã
追è¨
ã³ã¡ã³ãã§ãææé ãã¾ããã$()ãããªãã¦ã()ã§ããããããã¾ããã
$()ã®ä½¿ãæ¹ã«ã¤ãã¦ã¯ã¦ãã¦ã©ãã§ç´¹ä»ããã¦ããã®ã§ãã¡ããåç
§ãã ããã
ウノウラボ by Zynga Japan: シェル(bash)スクリプトを書くときのTips
$ ( cd tmp/a/b/c/ || mkdir -p tmp/a/b/c && \ > VAR=$PWD; cd ~; tar xvf -C $VAR archive.tar ) \ > | mail admin -s "Archive contents"
ã«ã¬ã³ãã·ã§ã«ã¨ãã¦ã³ãã³ããªã¹ããå®è¡
$()ã®ããã«ãµãã·ã§ã«ã¨ãã¦ã³ãã³ãã©ã¤ã³ãå®è¡ããã«æ®éã«ååã¨ãã¦å¦çãããã£ã¦ãã¨ã§ããã®ããªï¼ããããµã³ãã«ã¯ä¸æãåããã
追è¨
ããã${}ã¨åéããã¦ãã¾ãããã¹ã¤ãã»ã³ãæ£ããã¯{}ã§ãï¼
$ { cp ${VAR}a . && chown -R guest.guest a && \ > tar cvf newarchive.tar a; } | mail admin -s "New archive"
xargs
åèãªã³ã¯å ã§ã¯findã¨xargsãçµã¿åããã¦ä½¿ãã¾ããããã¨æ¸ããã¦ã¾ãããã®å²ã«ãµã³ãã«ã³ã¼ãã¯find使ã£ã¦ãªããã§ããã©ã
$ ls -1 | xargs file December_Report.pdf: PDF document, version 1.3 README: ASCII text a: directory archive.tar: POSIX tar archive mkdirhier.sh: Bourne shell script text executable
grepã§count
wc -l使ããããgrep -cã®æ¹ãéãããã
$ time grep and tmp/a/longfile.txt | wc -l 2811 real 0m0.097s user 0m0.006s sys 0m0.032s $ time grep -c and tmp/a/longfile.txt 2811 real 0m0.013s user 0m0.006s sys 0m0.005s
ãã¨ã-oãªãã·ã§ã³ä½¿ãã¨ãã¿ã¼ã³ãããã³ã°ã®grepãå¯è½
$ grep -o and tmp/a/longfile.txt | wc -l
ãã£ã¼ã«ãæå®ã§ãããã³ã°
ãã åã«grepãã¦ãã¾ãã¨ãé¢ä¿ãªãç®æãããããã¦å¼ã£å¼µã£ã¦ãããã¨ããã
$ ls -l /tmp/a/b/c | grep Dec -rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf -rw-r--r-- 1 root root 238 Dec 03 08:19 README -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar
awkã§ãã£ã¼ã«ãæå®ãã¦æ¯è¼ãã¦ããã°OK
$ ls -l | awk '$6 == "Dec"' -rw-r--r-- 3 joe joe 5096 Dec 14 14:26 archive.tar -rw-r--r-- 1 root root 238 Dec 03 08:19 README