Next: Limitations of Make, Previous: Limitations of Builtins, Up: Portable Shell [Contents][Index]
¤¢¤é¤æ¤ë¥Þ¥·¥ó¤Ç¸«¤Ä¤«¤ë¤³¤È¤¬´üÂԤǤ¤ë¾®¤µ¤Ê¥Ä¡¼¥ë¥»¥Ã¥È¤Ë¤Ï¡¤ÃΤäƤª ¤¯¤Ù¤À©¸Â¤¬¤¤¤¯¤Ä¤«´Þ¤Þ¤ì¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡¥
awk
¥æ¡¼¥¶´Ø¿ô¸Æ¤Ó½Ð¤·¤Ç¡¤¥«¥Ã¥³¤ÎÁ°¤Ë¶õÇò¤ò»Ä¤µ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥ GNU awk¤Ï¤½¤ì¤òµñÀ䤷¤Þ¤¹¡¥
$ gawk 'function die () { print "Aaaaarg!" } BEGIN { die () }' gawk: cmd. line:2: BEGIN { die () } gawk: cmd. line:2: ^ parse error $ gawk 'function die () { print "Aaaaarg!" } BEGIN { die() }' Aaaaarg!
¥×¥í¥°¥é¥à¤ò·èÄêŪ¤Ë¤·¤¿¤¤¾ì¹ç¡¤ÇÛÎó¾å¤Îfor
¤Ë°Í¸¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥
$ cat for.awk END { arr["foo"] = 1 arr["bar"] = 1 for (i in arr) print i } $ gawk -f for.awk </dev/null foo bar $ nawk -f for.awk </dev/null bar foo
HP-UX 11.0¤Î¥Í¥¤¥Æ¥£¥Ö¤ÎAWK¤Î¤è¤¦¤Ë¡¤ÆâÉô¥¢¥ó¥«¡¼¤ËÄ´»Ò¤¬°¤¤Àµµ¬É½¸½¤Î ¥¨¥ó¥¸¥ó¤¬¤¢¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥
$ echo xfoo | $AWK '/foo|^bar/ { print }' $ echo bar | $AWK '/foo|^bar/ { print }' bar $ echo xfoo | $AWK '/^bar|foo/ { print }' xfoo $ echo bar | $AWK '/^bar|foo/ { print }' bar
¤½¤Î¤è¤¦¤Ê¥Ñ¥¿¡¼¥ó¤Ë°Í¸¤·¤¿¤ê(¤¹¤Ê¤ï¤Á¡¤‘/^(.*foo|bar)/’¤ò»ÈÍѤ¹¤ë)¡¤ ¤½¤Î¤è¤¦¤ÊAWK¤òµñÀ䤹¤ëñ½ã¤Ê¥Æ¥¹¥È¤ò»ÈÍѤ·¤¿¤ê¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥
cat
¥ª¥×¥·¥ç¥ó¤Ë°Í¸¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡¥¤·¤«¤·¡¤É½¼¨ÉÔ²Äǽ¤Êʸ»ú¤òɽ¼¨ ¤¹¤ë¥ª¥×¥·¥ç¥ó-v¤Ï¡¤°Ü¿¢À¤¬¤¢¤ê¤½¤¦¤Ç¤¹¡¥
cc
‘cc foo.c -o foo’¤Î¤è¤¦¤Ê¥³¥ó¥Ñ¥¤¥ë¤¬¼ºÇÔ¤·¤¿¤È¤¡¤(Reliant UNIX¤ÎCDS¤Î¤è¤¦¤Ë)foo.o¤ò»Ä¤¹¥³¥ó¥Ñ¥¤¥é¤â¤¢¤ê¤Þ¤¹¡¥
HP-UX cc
¤Ï¡¤¥×¥ê¥×¥í¥»¥¹¤È¥¢¥»¥ó¥Ö¥é¤ò¹Ô¤Ê¤¦.S¥Õ¥¡¥¤¥ë
¤ò¼õ¤±Æþ¤ì¤Þ¤»¤ó¡¥‘cc -c foo.S’¤ÏÀ®¸ù¤·¤¿¤è¤¦¤Ë¸«¤¨¤Þ¤¹¤¬¡¤¼ÂºÝ¤Ë¤Ï
²¿¤â¤·¤Þ¤»¤ó¡¥
‘cc foo.c’¤ÇÀ¸À®¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤Î¼Â¹Ô·Á¼°¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤Ï¤º ¤Ç¤¹¡¥
gcc
¤ò´Þ¤à)¡¥
gcc
¤¬°Ü¿¢¤µ¤ì¤¿DJGPP¡¥
cc
¥é¥Ã¥Ñ¡¼¡¥
cmp
cmp
¤Ï¡¤Æó¤Ä¤Î¥Õ¥¡¥¤¥ë¤ÎÀ¸¤Î¥Ç¡¼¥¿¤ÎÈæ³Ó¤ò¼Â¹Ô¤·¤Þ¤¹¤¬¡¤
diff
¤ÏÆó¤Ä¤Î¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë¤òÈæ³Ó¤·¤Þ¤¹¡¥¤½¤Î¤¿¤á¡¤
DOS¤Î¥Õ¥¡¥¤¥ë¤òÈæ³Ó¤¹¤ë¾ì¹ç¡¤Æó¤Ä¤Î¥Õ¥¡¥¤¥ë¤¬°Û¤Ê¤Ã¤Æ¤¤¤ë¤«¤É
¤¦¤«¤òÄ´ºº¤¹¤ë¤À¤±¤Î¾ì¹ç¤Ç¤â²þ¹Ô¤Î¥¨¥ó¥³¡¼¥É¤Î°ã¤¤¤Ç¸«¤»¤«¤±¤Îº¹¤¬È¯À¸¤¹
¤ë¤³¤È¤òÈò¤±¤ë¤¿¤á¡¤diff
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
cp
ÅÁÅýŪ¤Ë¡¤¥Õ¥¡¥¤¥ë¤Î¥¿¥¤¥à¥¹¥¿¥ó¥×¤Îʬ²òǽ¤Ï°ìÉäˤʤäƤ¤¤Æ¡¤‘cp
-p’¤Ç¤Ï¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤·¤Þ¤¹¡¥¤·¤«¤·¡¤ºÇ¶á¤Î¥Õ¥¡¥¤¥ë¥·¥¹
¥Æ¥à¤Ë¤Ïʬ²òǽ¤¬1¥Ê¥ÎÉäΥ¿¥¤¥à¥¹¥¿¥ó¥×¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤â¤Î¤â¤¿¤¯¤µ¤ó¤¢¤ê¤Þ
¤¹¡¥»Äǰ¤Ê¤¬¤é¡¤‘cp -p’¤Î¼ÂÁõ¤Ç¤Ï¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼»þ¤Ë¥¿¥¤¥à¥¹¥¿¥ó¥×
¤òÀÚ¤êµÍ¤á¤ë¤Î¤Ç¡¤¤³¤Î¤¿¤á¥³¥Ô¡¼¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤¬·ë²Ì¤È¤·¤Æ¥½¡¼¥¹¤è¤ê¤â¸Å
¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡¥ÀÚ¤êµÍ¤á¤ÎÀµ³Î¤ÊÎ̤Ïcp
¤¬»ÈÍѤ¹¤ë¥·¥¹¥Æ¥à¥³¡¼
¥ë¤Îʬ²òǽ¤Ë°Í¸¤·¤Þ¤¹¡¥ÅÁÅýŪ¤Ë¡¤¤³¤ì¤Ïutime
¤Ç¡¤¤½¤ì¤Ïʬ²òǽ¤¬1
ÉäˤʤäƤ¤¤Þ¤¹¤¬¡¤¿·¤·¤¤cp
¤Î¼ÂÁõ¤Ç¤Ïutimes
¤ò»ÈÍѤ·¤Æ
¤¤¤Æ¡¤¤½¤ì¤Ïʬ²òǽ¤¬1¥Þ¥¤¥¯¥íÉäˤʤäƤ¤¤Þ¤¹¡¥¤³¤ì¤é¤Î¿·¤·¤¤¼ÂÁõ¤Ë¤Ï¡¤
GNU coreutils 5.0.91¤ä¤½¤ì°Ê¹ß¡¤¤½¤·¤ÆSolaris 8 (sparc)¤Î¥Ñ¥Ã¥Á109933-02
¤ä¤½¤ì°Ê¹ß¤¬´Þ¤Þ¤ì¤Þ¤¹¡¥»Äǰ¤Ê¤¬¤é¡¤2003ǯ9·î¤ÎÃʳ¬¤Ç¤Ï¡¤´°Á´¤Ê¥Ê¥ÎÉäÎ
ʬ²òǽ¤ò»ý¤Ä¥¿¥¤¥à¥¹¥¿¥ó¥×¤òÀßÄꤹ¤ë¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
SunOS cp
¤Ï-f¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¤¤½¤Î
mv
¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡¥mv
¤Ècp
¤¬
-f¤Ë´Ø¤·¤Æ°Û¤Ê¤Ã¤Æ¤¤¤ëÍýͳ¤Ë¤Ä¤¤¤Æ¤ÏͳÍ褬¿ä¬¤Ç¤¤Þ¤¹¡¥
mv
¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¡¤ÆÉ¤ß¹þ¤ßÀìÍѤΥե¡¥¤¥ë¤ò¾å½ñ¤¤¹¤ëÁ°¤Ë¥×¥í¥ó
¥×¥È¤òɽ¼¨¤·¤Þ¤¹¡¥cp
¤Ï¤½¤¦¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤½¤Î¤¿¤á¡¤
mv
¤Ë¤Ï-f¥ª¥×¥·¥ç¥ó¤¬É¬ÍפǤ¹¤¬¡¤cp
¤Ë¤ÏÉÔÍ×
¤Ç¤¹¡¥mv
¤Ècp
¤Ï¡¤ÆÉ¤ß¹þ¤ßÀìÍѤΥե¡¥¤¥ë¤ËÂФ·¤Æ¡¤Æ°ºî
¤¬°Û¤Ê¤ê¡¤¤½¤ÎÍýͳ¤Ï¡¤ºÇ¤â´Êñ¤Êcp
¤Î·Á¼°¤Ç¤Ï¡¤ÆÉ¤ß¹þ¤ßÀìÍѤΥե¡
¥¤¥ë¤ò¾å½ñ¤¤Ç¤¤Þ¤»¤ó¤¬¡¤ºÇ¤â´Êñ¤Êmv
·Á¼°¤Ç¤Ï¡¤¤½¤ì¤¬²Äǽ¤À¤È
¤¤¤¦¤³¤È¤Ç¤¹¡¥¤³¤ÎÍýͳ¤Ï¡¤cp
¤Ï¥¿¡¼¥²¥Ã¥È¤ò½ñ¤¹þ¤ß¥¢¥¯¥»¥¹¤Ç³«
¤¯¤Î¤ËÂФ·¡¤mv
¤Ïñ½ã¤Ëlink
(¤Þ¤¿¤Ï¡¤¿·¤·¤¤¥·¥¹¥Æ¥à¤Ç¤Ï
rename
)¤ò¸Æ¤Ó½Ð¤¹¤¿¤á¤Ç¤¹¡¥
Bob Proulx¤Ï¡¤‘cp -p’¤Ï¾ï¤Ë½ê͸¢¤Î¥³¥Ô¡¼¤ò»î¤ß¤ë¤È¥á¥â¤·¤Æ
¤¤¤Þ¤¹¡¥¤·¤«¤·¡¤¼ÂºÝ¤Ë½ê͸¢¤ò¥³¥Ô¡¼¤¹¤ë¤«¤É¤¦¤«¤Ï¡¤¥«¡¼¥Í¥ë¤Ç¼ÂÁõ¤µ¤ì¤Æ
¤¤¤ë¥·¥¹¥Æ¥à¥Ý¥ê¥·¡¼¤Î·èÄê¤Ë°Í¸¤·¤Þ¤¹¡¥¥«¡¼¥Í¥ë¤¬µö²Ä¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¤½¤¦
¤Ê¤ê¤Þ¤¹¡¥¥«¡¼¥Í¥ë¤¬µö²Ä¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¤¤½¤¦¤Ê¤ê¤Þ¤»¤ó¡¥cp
¼«
¿È¤¬À©¸æ¤·¤Æ¤¤¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
SysV¤Ç¤Ï¡¤¥æ¡¼¥¶¤Ï¥Õ¥¡¥¤¥ë¤òÊ̤Υ桼¥¶¤Ëchown²Äǽ¤Ç¡¤SysV¤Ë¤Ïsticky¤Ç¤Ï
¤Ê¤¤/tmp¤â¤¢¤ê¤Þ¤¹¡¥¤½¤ì¤Ïµ¿¤¤Ìµ¤¯¡¤Å¨°Õ¤Î¤¢¤ë¥æ¡¼¥¶¤Î¤¤¤Ê¤¤¥Ó¥¸
¥Í¥¹´Ä¶¤ÎSysV¤Î°ä»º¤ËͳÍ褷¤Æ¤¤¤Þ¤¹¡¥BSD¤Ï¡¤root¤À¤±¤¬¥Õ¥¡¥¤
¥ë¤òchown
²Äǽ¤Ë¤·¡¤sticky¤Ê/tmp¤ò»ÈÍѤ·¤Æ¡¤¤³¤ì¤ò¤è¤ê°Â
Á´¤Ê¥â¥Ç¥ë¤ËÊѹ¹¤·¤Þ¤·¤¿¡¥¤½¤ì¤Ïµ¿¤¤Ìµ¤¯¡¤¥¥ã¥ó¥Ñ¥¹´Ä¶¤ÎBSD
¤Î°ä»º¤ËͳÍ褷¤Þ¤¹¡¥
Linux¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇBSD¤Ë½àµò¤·¤Æ¤¤¤Þ¤¹¤¬¡¤chown
²Äǽ
¤ËÀßÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡¥Ê̤ÎÎã¤È¤·¤Æ¡¤HP-UX¤ÏSysV¤Ë½àµò¤·¤Æ¤¤¤Þ¤¹¤¬¡¤
ºÇ¶á¤Î¥»¥¥å¥ê¥Æ¥£¥â¥Ç¥ë¤ò»ÈÍѤ¹¤ë¤è¤¦ÀßÄꤷ¡¤chown
¤Ç¤¤Ê¤¯¤¹
¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥¤½¤ì¤Ï´ÉÍý¼Ô¤¬ÀßÄê²Äǽ¤Ê¥Ñ¥é¥á¡¼¥¿¤Ê¤Î¤Ç¡¤Æ°ºî¤ò¼¨¤¹¤¿
¤á¤Ë¥«¡¼¥Í¥ë̾¤ò»ÈÍѤ¹¤ë¤³¤È¤ÏÉÔ²Äǽ¤Ç¤¹¡¥
date
date
¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤Ã¤Æ¤Ï¡¤ÆÃ¼ì¤Ê%¤Ë¤è¤ë»Ø¼¨¸ì¤òÍý²ò¤·¤Ê¤¤¤â
¤Î¤â¤¢¤ê¡¤»Äǰ¤Ê¤¬¤é·Ù¹ð¤ò¤¹¤ëÂå¤ï¤ê¤Ë¡¤¤½¤ì¤ò¤½¤Î¤Þ¤ÞÄ̲ᤵ¤»¡¤Àµ¤·¤¯½ª
λ¤·¤Þ¤¹¡¥
$ uname -a OSF1 medusa.sis.pasteur.fr V5.1 732 alpha $ date "+%s" %s
diff
-u¤Ë¤Ï°Ü¿¢À¤¬¤¢¤ê¤Þ¤»¤ó¡¥
Tru64¤Î¤è¤¦¤Ë¡¤¼ÂÁõ¤Ë¤è¤Ã¤Æ¤Ï/dev/null¤ÎÈæ³Ó¤Ç¼ºÇÔ¤¹¤ë¤â¤Î¤â¤¢¤ê ¤Þ¤¹¡¥¤½¤ÎÂå¤ï¤ê¤Ë¶õ¤Î¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
dirname
Á´¤Æ¤Î¥Û¥¹¥È¤Ëưºî¤¹¤ëdirname
¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤Ê¤¯¡¤¤½¤ÎÂå¤ï¤ê¤Ë
AS_DIRNAME
¤ò»ÈÍѤ¹¤Ù¤¤Ç¤¹(see Programming in M4sh)¡¥Î㤨¤Ð°Ê
²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡¥
dir=`dirname "$file"` # This is not portable. dir=`AS_DIRNAME(["$file"])` # This is more portable.
¤³¤ì¤Ï¡¤POSIX¤ÇÍ׵ᤵ¤ì¤Æ¤¤¤ëɸ½à¤Ç¤Ï¡¤´öʬÈù̯¤Ê°·¤¤¤Ç¤¹¡¥Îã ¤¨¤ÐUN*X¤Ç¤Ï‘//1’¤Ï‘/’¤Ë¤Ê¤ë¤Î¤Ç¤·¤ç¤¦¤«¡©°Ê²¼¤ÏPaul Eggert¤Î ²óÅú¤Ç¤¹¡¥
¸Å¤¤Unix¥é¥¤¥¯¤Î¤â¤Î¤Ç¤Ï¤½¤¦¤Ï¤Ê¤é¤º¡¤Á°ÃÖ¤µ¤ì¤ë‘//’¤ÏÆÃ¼ì¤Ê¥Ñ¥¹Ì¾ ¤Ë¤Ê¤ê¤Þ¤¹¡¥¤½¤ì¤Ï“¥¹¡¼¥Ñ¡¼¥ë¡¼¥È”¤ò»²¾È¤·¡¤Â¾¤Î¥Þ¥·¥ó¤Î¥Õ¥¡¥¤¥ë¤ò¥¢¥¯ ¥»¥¹¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡¥Á°ÃÖ¤µ¤ì¤ë‘///’¡¤‘////’¤Ê¤É¤Ï¡¤ ‘/’¤ÈÅù²Á¤Ç¤¹¡¥¤·¤«¤·¡¤Á°ÃÖ¤µ¤ì¤ë‘//’¤ÏÆÃ¼ì¤Ç¤¹¡¥¤³¤ÎÅÁÅýŪ¤Ï Apollo Domain/OS¤Ç»Ï¤Þ¤Ã¤¿¤È¹Í¤¨¤Æ¤¤¤Æ¡¤¸Å¤¤¥Û¥¹¥È¤Ç¤Ï¤Þ¤À¤½¤ÎOS ¤ò»ÈÍÑ ¤·¤Æ¤¤¤Þ¤¹¡¥
POSIX¤Ç¤Ï²Äǽ¤Ç¤¹¤¬¡¤‘//’¤ËÂФ¹¤ëÆÃḚ̂·¤¤¤ÏÍ׵ᤵ¤ì¤Æ¤¤¤Þ ¤»¤ó¡¥¤½¤³¤Ç¤Ï¡¤·Á¼°‘//([^/]+/*)?’¤Î¥Ñ¥¹Ì¾¤Ç¤Îdirname¤Îưºî¤Ï¡¤¼ÂÁõ ¤ÇÄêµÁ¤µ¤ì¤ë¤È¹ð¤²¤Æ¤¤¤Þ¤¹¡¥¤³¤ì¤é¤Î¾ì¹ç¡¤GNU
dirname
¤Ï‘/’¤òÊÖ¤·¤Þ¤¹¤¬¡¤¸Å¤¤Unix¥é¥¤¥¯¤Î¤â¤Î¤Ç¤âưºî¤¹ ¤ë¤è¤¦¤Ë‘//’¤òÊÖ¤·¤¿Êý¤¬°Ü¿¢À¤¬¹â¤¤¤Ç¤·¤ç¤¦¡¥
egrep
POSIX 1003.1-2001¤Ç¤Ï¡¤¤â¤Ï¤äegrep
¤òÍ׵ᤷ¤Æ¤¤¤Þ¤»¤ó
¤¬¡¤¤è¤ê¸Å¤¤¥Û¥¹¥È¤Î¿¤¯¤Ï¤Þ¤ÀPOSIX¤Îgrep -E
¤Ç¤ÎÃÖ´¹¤ò
¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡¥¤³¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤¿¤á¡¤AC_PROG_EGREP
¤ò¸Æ
¤Ó½Ð¤·¡¤$EGREP
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
¶õ¤ÎÂåÆþ¤Ï°Ü¿¢À¤¬Ìµ¤¯¡¤Âå¤ï¤ê¤Ë‘?’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥Î㤨¤Ð¡¤ Digital Unix v5.0¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
> printf "foo\n|foo\n" | $EGREP '^(|foo|bar)$' |foo > printf "bar\nbar|\n" | $EGREP '^(foo|bar|)$' bar| > printf "foo\nfoo|\n|bar\nbar\n" | $EGREP '^(foo||bar)$' foo |bar
$EGREP
¤âgrep
¤ÎÀ©¸Â¤Ç¶ì¤·¤à¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥
expr
‘x’¤Ç»Ï¤Þ¤ëexpr
¥¡¼¥ï¡¼¥É¤Ï¤Ê¤¤¤Î¤Ç¡¤expr
¤¬
word¤ò´Ö°ã¤Ã¤Æ²ò¼á¤·¤Ê¤¤¤è¤¦¤Ë¡¤‘expr x"word" :
'xregex'’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
length
¡¤substr
¡¤match
¡¤¤½¤·¤Æindex
¤Ï»ÈÍѤ·
¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥
expr
(‘|’)‘|’¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¡¥POSIX¤Ç¤Ï¡¤‘expr ''’ ¤¬ ¶õ¤Îʸ»úÎó¤òÊÖ¤¹¤³¤È¤òɬ¿Ü¤È¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¤¶õ¤Îʸ»úÎó¤òÍѤ¤¤Æ¶õ¤Îʸ»úÎó (¤Þ¤¿¤Ï¥¼¥í)¤È¤È¤â¤Ë‘|’¤òÍѤ¤¤¿¤È¤¤Î·ë²Ì¤Ï°ÂÁ´¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥Î㤨 ¤Ð°Ê²¼¤ò¹Í¤¨¤Þ¤¹¡¥
expr '' \| ''
GNU/Linux¤ÈPOSIX.2-1992¤Ç¤Ï¡¤¤³¤Î¾ì¹ç¤Ï¶õ¤Îʸ»úÎó¤ò ÊÖ¤·¤Þ¤¹¤¬¡¤ÅÁÅýŪ¤ÊUNIX¤Ç¤Ï‘0’¤òÊÖ¤·¤Þ¤¹(Solaris¤Ï¤½¤Î¤è¤¦¤Ê Îã¤Î°ì¤Ä¤Ç¤¹)¡¥ºÇ¶á¤ÎPOSIX.1-2001¥É¥é¥Õ¥È¤Ç¤Ï¡¤¤½¤Î»ØÄê¤ÏÅÁÅý Ū¤ÊUNIX¤Îưºî¤Ë°ìÃפ¹¤ë¤è¤¦Êѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹(¿®¤¸¤é¤ì¤Ê¤¤¤³¤È¤Ç¤¹¤¬¡¤ ¤³¤ì¤ò½¤Àµ¤¹¤ë¤Ë¤Ï»þ¤¹¤Ç¤ËÃÙ¤·¤Ç¤¹)¡¥Æ±¤¸ÌäÂ꤬¡¤·×»»·ë²Ì¤¬¶õ¤Îʸ»úÎó¤Ë ¤Ê¤ë¤È¤¤Ë¤â¡¤°Ê²¼¤Î¾õÂ֤ǤÏȯÀ¸¤·¤Þ¤¹¡¥
expr bar : foo \| foo : bar
¶õ¤Îʸ»úÎó¤òÈò¤±¤ë¤³¤È¤Ç¡¤¤³¤Î°Ü¿¢À¤ÎÌäÂê¤òÈò¤±¤Æ¤¯¤À¤µ¤¤¡¥
expr
(‘:’)Solaris¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¤¥Ñ¥¿¡¼¥óÆâ¤Ë¡¤‘\?’¡¤‘\+’¡¤ ¤½¤·¤Æ‘\|’¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥
POSIXɸ½à¤Ç¤Ï¡¤‘expr 'a' : '\(b\)'’¤¬‘0’¤ò½ÐÎϤ¹¤ë¤«
¶õ¤Îʸ»úÎó¤ò½ÐÎϤ¹¤ë¤Î¤«¤ÏÌÀ³Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¼ÂºÝÌäÂê¤È¤·¤Æ¡¤¤½¤ì¤Ï¤Û¤È
¤ó¤É¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¶õ¤Îʸ»úÎó¤ò½ÐÎϤ·¤Þ¤¹¤¬¡¤°Ü¿¢À¤Î¹â¤¤¥¹¥¯¥ê¥×¥È
¤Ç¤Ï¡¤¤³¤ì¤ò²¾Äꤹ¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥Î㤨¤Ð¡¤QNX 4.25 ¥Í¥¤¥Æ¥£
¥Ö¤Îexpr
¤Ï‘0’¤òÊÖ¤·¤Þ¤¹¡¥
¶Ñ°ì¤Êưºî¤òÆÀ¤ë¼êÃʤȤ·¤Æ¡¤¥Ç¥Õ¥©¥ë¥ÈÃͤȤ·¤Æ¶õ¤Îʸ»úÎó¤ò»ÈÍѤ¹¤ë¤³¤È¤Ë ¤Ê¤Ã¤Æ¤¤¤ë¤È¿®¤¸¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥
expr a : '\(b\)' \| ''
»Äǰ¤Ê¤¬¤é¡¤¤³¤ì¤Ï¸µ¤Î¼°¤È¤·¤ÆÀµ³Î¤Ëưºî¤·¤Þ¤¹¡¥¾ÜºÙ¤Ï¡¤
‘expr
(‘:’)’¤Î¹àÌܤò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
¸Å¤¤expr
¤Î¼ÂÁõ(Î㤨¤Ð¡¤SunOS 4¤Îexpr
¤ÈSolaris 8¤Î
/usr/ucb/expr
)¤Ë¤Ï¡¤°ìÃפ·¤¿¥µ¥Öʸ»úÎó¤¬120¥Ð¥¤¥È¤è¤êŤ¤¾ì¹ç¡¤
expr
¤¬°Û¾ï½ªÎ»¤¹¤ë¤È¤¤¤¦¡¤»×θ¤Î·ç¤±¤¿Ä¹¤µ¤ÎÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡¥¤³
¤Î¾õ¶·¤Ç¤Ï¡¤expr
¤¬¼ºÇÔ¤·¤¿¾ì¹ç¡¤‘echo|sed’¤ËÍê¤ê¤¿¤¤¤È»×
¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡¥
»Ä¤Ã¤Æ¤¤¤ë¤â¤Î¤Ï¤½¤ì¤À¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡ª
QNX 4.25¤Îexpr
¤Ë¤Ï¡¤¶õ¤Îʸ»úÎó¤Ç¤Ï¤Ê¤¯‘0’¤È¤Ê¤ë
¤³¤È¤Ë²Ã¤¨¤Æ¡¤½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤Ç¤ª¤«¤·¤Êưºî¤¬¤¢¤ê¤Þ¤¹¡¥¤½¤ì¤Ï¥«¥Ã¥³¤¬»ÈÍÑ
¤µ¤ì¤Æ¤¤¤ë¤È¤¤Ë¤Ï¡¤¾ï¤Ë1¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡ª
$ val=`expr 'a' : 'a'`; echo "$?: $val" 0: 1 $ val=`expr 'a' : 'b'`; echo "$?: $val" 1: 0 $ val=`expr 'a' : '\(a\)'`; echo "?: $val" 1: a $ val=`expr 'a' : '\(b\)'`; echo "?: $val" 1: 0
¼ÂºÝ¤Ë¡¤(sed
¤Î¤è¤¦¤Ê)¾¤Î¼êË¡¤Çexpr
¥×¥í¥°¥é¥à¤Ç°Û¾ï
½ªÎ»¤òÊá³Í¤¹¤ë½àÈ÷¤¬¤¢¤ë¾ì¹ç¡¤·ë²Ì¤òÆó²óÆÀ¤ë²ÄǽÀ¤¬¤¢¤ë¤Î¤Ç¡¤¤³¤ì¤ÏÂç¤
¤ÊÌäÂê¤È¤Ê¤ê¤Þ¤¹¡¥Î㤨¤Ð°Ê²¼¤ò¹Í¤¨¤Þ¤¹¡¥
$ expr 'a' : '\(a\)' || echo 'a' | sed 's/^\(a\)$/\1/'
¤Û¤È¤ó¤É¤Î¥Û¥¹¥È¤Ç¤Ï‘a’¤ò½ÐÎϤ·¤Þ¤¹¤¬¡¤QNX 4.25¤Ç¤Ï
‘aa’¤Ë¤Ê¤ê¤Þ¤¹¡¥Ã±½ã¤Ê²óÈòÊýË¡¤È¤·¤Æ¡¤expr
¤Ç¤Î¥Æ¥¹¥È¤ò¹½
À®¤·¡¤·ë²Ì¤Ë¤è¤Ã¤Æexpr
¤äfalse
¤ÇÊÑ¿ô¤òÀßÄꤹ¤ëÊýË¡¤ò
»ÈÍѤ·¤Þ¤¹¡¥
fgrep
POSIX 1003.1-2001¤Ç¤Ï¡¤¤â¤Ï¤äfgrep
¤òÍ׵ᤷ¤Æ¤¤¤Þ¤»¤ó
¤¬¡¤¤è¤ê¸Å¤¤¥Û¥¹¥È¤Î¿¤¯¤Ï¤Þ¤ÀPOSIX¤Îgrep -F
¤Ç¤ÎÃÖ´¹¤ò
¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡¥¤³¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤¿¤á¡¤AC_PROG_FGREP
¤ò¸Æ
¤Ó½Ð¤·¡¤$FGREP
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
find
¥ª¥×¥·¥ç¥ó-maxdepth¤ÏGNUÆÃͤΤ褦¤Ç¤¹¡¥Tru64 v5.1¡¤
NetBSD 1.5¡¤¤½¤·¤ÆSolaris 2.5¤Îfind
¥³¥Þ¥ó¥É¤Ï¤½¤ì¤ò
Íý²ò¤·¤Þ¤»¤ó¡¥
‘{}’¤ÎÃÖ´¹¤Ï¡¤°ú¿ô¤¬Àµ³Î¤Ë{}¤Î¾ì¹ç¤Î¤ßÊݾڤµ¤ì¡¤¤½¤ì¤¬°ú ¿ô¤Î°ìÉô¤Î¾ì¹ç¤ÏÊݾڤµ¤ì¤Þ¤»¤ó¡¥Î㤨¤Ð¡¤DU¤ÈHP-UX 10.20¤ÈHP-UX 11¤Ç¤ÏÊÝ ¾Ú¤µ¤ì¤Þ¤»¤ó¡¥
$ touch foo $ find . -name foo -exec echo "{}-{}" \; {}-{}
°ìÊý¡¤GNU find
¤Ï‘./foo-./foo’¤òÊó¹ð¤·¤Þ¤¹¡¥
grep
System V¤Î‘grep -s’¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Î¤ßÍÞÀ©¤·¡¤½ÐÎϤòÍÞÀ©¤·¤Ê¤¤¤Î
¤Ç¡¤½ÐÎϤòÍÞÀ©¤¹¤ë¤¿¤á¤Ë‘grep -s’¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥¤½¤ÎÂå¤ï¤ê
¤Ë(¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç) grep
¤Îɸ½à½ÐÎϤÈɸ½à¥¨¥é¡¼½ÐÎϤò
/dev/null¤Ø¥ê¥À¥¤¥ì¥¯¥È¤·¤Æ¤¯¤À¤µ¤¤¡¥°ìÃפ¬¸«¤Ä¤«¤Ã¤¿¤«¤É¤¦¤«¤ò·è
Äꤹ¤ë¤¿¤á¤Ë¡¤grep
¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤òÄ´ºº¤·¤Æ¤¯¤À¤µ¤¤¡¥
ºÇ¸å¤Î¥Ñ¥¿¡¼¥ó¤Î¤ßº½Å¤¹¤ëgrep
(Î㤨¤Ð¡¤AIX 6.5¤ÈSolaris
2.5.1)¤â¤¢¤ë¤Î¤Ç¡¤-e¤ÇÊ£¿ô¤ÎÀµµ¬É½¸½¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥¤É
¤Á¤é¤Ë¤·¤í¡¤Stardent Vistra SVR4¤Îgrep
¤Ë¤Ï-e ¤¬¤¢¤ê¤Þ¤»
¤ó... ¤½¤ÎÂå¤ï¤ê¤Ë³ÈÄ¥¤·¤¿Àµµ¬É½¸½¤ÈÂåÆþ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
Irix 6.5.16m¤Îgrep
¤Ï¡¤¤½¤ì¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¤
-w¤Ë°Í¸¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡¥
ln
-f¥ª¥×¥·¥ç¥ó¤¬¤¢¤ëln
¤Ë°Í¸¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡¥
¸Å¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ÏÍøÍÑÉÔ²Äǽ¤Ç¤¹¡¥°Ü¿¢À¤Î¤¢¤ëÂåÂØÊª
‘$(LN_S)’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
2.04°ÊÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤ÎDJGPP¤ËÂФ·¤Æ¡¤ln
¤Ï¼Â¹Ô·Á¼°¤Ø¤Î¥½¥Õ¥È¥ê
¥ó¥¯¤ò¡¤¼ÂºÝ¤Î¥×¥í¥°¥é¥à¤ò¸Æ¤Ó½Ð¤¹¥¹¥¿¥Ö¤òÀ¸À®¤¹¤ë¤³¤È¤Ç¥¨¥ß¥å¥ì¡¼¥È¤·¤Þ
¤¹¡¥¤³¤Îµ¡Ç½¤Ï¡¤UnixÆÈ¼«¤Î¼Â¹Ô·Á¼°°Ê³°¤Î¥Õ¥¡¥¤¥ë¤Ç¤âưºî¤·¤Þ¤¹¡¥¤½¤Î¤¿¤á¡¤
‘ln -s file link’¤Ïlink.exe¤òÀ¸À®¤·¡¤¤½¤ì¤Ï¼Â¹Ô¤µ¤ì¤¿¾ì¹ç¤Ë
file.exe¤Î¸Æ¤Ó½Ð¤·¤ò»î¤ß¤Þ¤¹¡¥¤·¤«¤·¤³¤Îµ¡Ç½¤Ï¼Â¹Ô·Á¼°¤ËÂФ·¤Æ¤Î
¤ßưºî¤¹¤ë¤Î¤Ç¡¤¤³¤Î¥·¥¹¥Æ¥à¤Ç¤Ï‘cp -p’¤¬Âå¤ï¤ê¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡¥
DJGPP¤Î2.04¤È¤½¤ì°Ê¹ß¤Ç¤Ï´°Á´¤Ê¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
ls
°Ü¿¢À¤Î¤¢¤ë¥ª¥×¥·¥ç¥ó¤Ï-acdilrtu¤Ç¤¹¡¥ºÇ¶á¤Ç¤Ï¡¤-l ¤Ç
½êͼԤȥ°¥ë¡¼¥×¤ò½ÐÎϤ·¤Þ¤¹¤¬¡¤ÅÁÅýŪ¤Êls
¤Ï¥°¥ë¡¼¥×¤ò¾Êά¤·¤Þ
¤¹¡¥
ºÇ¶á¤Ç¤Ï¡¤¤¹¤Ù¤Æ¤Î¿ÇÃÇ·ë²Ì¤Ïɸ½à¥¨¥é¡¼½ÐÎϤ˽ФƤ¤Þ¤¹¤¬¡¤ÅÁÅýŪ¤Ê
‘ls foo’¤Ï¡¤foo¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡¤¥á¥Ã¥»¡¼¥¸‘foo not
found’¤òɸ½à½ÐÎϤ˽ÐÎϤ·¤Þ¤¹¡¥ÅÁÅýŪ¤Êls
¤Ç¤Ï¡¤‘.c’¥Õ¥¡¥¤
¥ë¤¬Ìµ¤¤¾ì¹ç¡¤‘sources=`ls *.c 2>/dev/null`’¤Ï‘sources="*.c
not found"’¤ÈÅù²Á¤Ê¤Î¤Ç¡¤¤½¤Î¤è¤¦¤Ê¥·¥§¥ë¥³¥Þ¥ó¥É¤ò½ñ¤¯¤È¤¤ËÃí°Õ¤·¤Æ¤¯
¤À¤µ¤¤¡¥
mkdir
mkdir
¤Î¥ª¥×¥·¥ç¥ó¤Ë¤Ï°Ü¿¢À¤Ï¤¢¤ê¤Þ¤»¤ó¡¥‘mkdir -p
filename’¤ÎÂå¤ï¤ê¤ËAS_MKDIR_P(filename)
¤ò»ÈÍѤ¹¤Ù¤¤Ç
¤¹(see Programming in M4sh)¡¥
mv
°Ü¿¢À¤Î¤¢¤ë¥ª¥×¥·¥ç¥ó¤Ï¡¤-f¤È-i¤Î¤ß¤Ç¤¹¡¥
¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à´Ö¤Ç¸ÄÊ̤˥ե¡¥¤¥ë¤ò°Üư¤¹¤ë¤³¤È¤Ï(V6¤Ç¤Ï)°Ü¿¢À¤¬¤¢¤ê¤Þ ¤¹¤¬¡¤¾ï¤Ë¶¯ÎϤǤϤϤ¢¤ê¤Þ¤»¤ó¡¥‘mv new existing’¤ò¤¹¤ë¤È¤¡¤ existing¤Î¸Å¤¤¤â¤Î¤â¿·¤·¤¤¤â¤Î¤â¼ÂºÝ¤Ë¤Ï¸ºß¤·¤Æ¤¤¤Ê¤¤¤È¤¤¤¦´í¸± ¤Ê¾õÂÖ¤¬Â¸ºß¤·¤Þ¤¹¡¥
¥Õ¥¡¥¤¥ë¤ò/tmp¤«¤é°Üư¤¹¤ë¤³¤È¤Ç¡¤¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Æ¤¤¤¿
¤È¤·¤Æ¤â¡¤¹¥¤Þ¤·¤¯¤Ê¤¤(¤¬¡¤¤Þ¤Ã¤¿¤¯Í¸ú¤Ê)·Ù¹ð¤òȯÀ¸¤¹¤ë¤³¤È¤¬¤¢¤ë¤³¤È¤ò
³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡¥¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¡¤/tmp¤Ë¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹
¤ë¤È¡¤guid¤ò¼«Ê¬¤¬½ê°¤·¤Æ¤¤¤Ê¤¤wheel
¤ËÀßÄꤹ¤ë¤â¤Î¤â¤¢¤ê¤Þ¤¹¡¥¤½
¤Î¤¿¤á¥Õ¥¡¥¤¥ë¤¬¥³¥Ô¡¼¤µ¤ì¤ë¤È¡¤chgrp
¤Ç¼ºÇÔ¤·¤Þ¤¹¡¥
$ touch /tmp/foo $ mv /tmp/foo . error→mv: ./foo: set owner/group (was: 3830/0): Operation not permitted $ echo $? 0 $ ls foo foo
¤³¤Îưºî¤Ï¡¤POSIX¤Ë½àµò¤·¤Æ¤¤¤Þ¤¹¡¥
²¿¤é¤«¤ÎÍýͳ¤Ç¥Õ¥¡¥¤¥ë°À¤ÎÊ£À½¤Ë¼ºÇÔ¤¹¤ë¾ì¹ç¡¤
mv
¤Ï¿ÇÃÇ¥á¥Ã¥»¡¼ ¥¸¤òɸ½à¥¨¥é¡¼½ÐÎϤ˽ñ¤½Ð¤·¤Þ¤¹¤¬¡¤¤³¤Î°Û¾ï½ªÎ»¤Ç¡¤mv
¤Ï½ªÎ»¥¹ ¥Æ¡¼¥¿¥¹¤òÊѹ¹¤·¤Þ¤»¤ó¡¥
¥Þ¥¦¥ó¥È¥Ý¥¤¥ó¥È¤ò¤Þ¤¿¤¬¤Ã¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤ò°Üư¤¹¤ë¤³¤È¤Ï°Ü¿¢À¤¬Ìµ¤¤¤Î¤Ç¡¤
cp
¤Èrm
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
³«¤¤¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î°Üư/ºï½ü¤Ï°Ü¿¢À¤¬¤¢¤ê¤Þ¤»¤ó¡¥°Ê²¼¤ÎÎã¤ÏDOS/WIN32 ¤Ç¤Ï¼Â¹ÔÉÔ²Äǽ¤Ç¤¹¡¥
exec > foo mv foo bar
°Ê²¼¤â¼Â¹ÔÉÔ²Äǽ¤Ç¤¹¡¥
exec > foo rm -f foo
sed
ʸ»ú¥¯¥é¥¹¤Î°ìÉô¤Î¾ì¹ç¤Ç¤â¡¤¥Ñ¥¿¡¼¥ó¤Ë(¥¨¥¹¥±¡¼¥×¤µ¤ì¤Æ¤¤¤Ê¤¤)¥»¥Ñ¥ì¡¼¥¿
¤ò´Þ¤á¤ë¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥POSIX½àµò¤Ç¤Ï¡¤Cray¤Îsed
¤Ï‘s/[^/]*$//’¤òµñÀ䤷¤Þ¤¹¡¥‘s,[^/]*$,,’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
sed¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¤È¬Ê¸»ú°Ê¾å¤Îʬ´ô¥é¥Ù¥ë¤ò»ÈÍѤ¹¤Ù¤¤Ç¤Ï¤Ê¤¯¡¤¥³¥á¥ó¥È ¤ò´Þ¤á¤ë¤Ù¤¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡¥
NetBSD 1.4.2¤Ç¤Ï¡¤ÆóÈÖÌܤΤâ¤Î¤ò¥³¥Þ¥ó¥É¤È¤·¤Æ²ò¼á¤·¤è¤¦¤È»î¤ß
¤ë¤Î¤Ç¡¤sed
¤Ë¤è¤Ã¤Æ¤Ï¡¤Í¾Ê¬¤Ê‘;’¤ò´Þ¤á¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡¥
$ echo a | sed 's/x/x/;;s/x/x/' sed: 1: "s/x/x/;;s/x/x/": invalid command code ;
sed
¤Ë¤è¤Ã¤Æ¤Ï¡¤ÆþÎϥХåե¡¤Ë4000¥Ð¥¤¥È¤ÎÀ©¸Â¤¬¤¢¤ë¤â¤Î¤â¤¢¤ë
¤Î¤Ç¡¤ÆþÎϤÏÂÅÅö¤ÊŤµ¤Î¹Ô¤Ë¤¹¤Ù¤¤Ç¤¹¡¥
‘\|’¤Î¸ò´¹¤Ï°ìÈÌŪ¤Ç¤¹¤¬¡¤POSIX¤Ï¤½¤Î¥µ¥Ý¡¼¥È¤òÍ׵ᤷ¤Æ¤¤
¤Ê¤¤¤Î¤Ç¡¤°Ü¿¢À¤Î¹â¤¤¥¹¥¯¥ê¥×¥È¤Ç¤ÏÈò¤±¤ë¤Ù¤¤Ç¤¹¡¥Solaris 8¤Î
sed
¤Ï¸ò´¹¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡¥Î㤨¤Ð¡¤‘sed '/a\|b/d'’
¤Ï¡¤¥ê¥Æ¥é¥ëʸ»úÎó‘a|b’¤ò´Þ¤ó¤Ç¤¤¤ë¹Ô¤Î¤ß¸¡½Ð¤·¤Þ¤¹¡¥
¥°¥ë¡¼¥×Æâ¤Î¥¢¥ó¥«¡¼(‘^’¤È‘$’)¤Ï°Ü¿¢À¤¬¤¢¤ê¤Þ¤»¤ó¡¥
¥Ñ¥¿¡¼¥óÆâ¤ÎÆþ¤ì»Ò¾õ¤Î¥«¥Ã¥³¤Ï¡¤¸½ºß¤Î¥Û¥¹¥È¤Ç¤Ï´°Á´¤Ë°Ü¿¢À¤¢¤ë¤â¤Î¤Ê¤Î
¤Ç¤¹¤¬¡¤SVR3¤Î¤è¤¦¤Ë¸Å¤¤sed
¤Î¼ÂÁõ¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡¥
¤â¤Á¤í¤ó¥ª¥×¥·¥ç¥ó-e¤Ë¤Ï°Ü¿¢À¤¬¤¢¤ê¤Þ¤¹¤¬¡¤¤½¤ì¤ÏÉÔÍפǤ¹¡¥¥À¥Ã ¥·¥å¤Ç»Ï¤Þ¤ë͸ú¤Êsed¥×¥í¥°¥é¥à¤Ï̵¤¤¤Î¤Ç¡¤ÌÀ³Î¤Ë¤¹¤ëÌò¤Ë¤ÏΩ¤Á¤Þ¤»¤ó¡¥ Í£°ì¤Î͸úÀ¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë»ú²¼¤²¤ò¶¯À©Åª¤Ë¹Ô¤Ê¤¦¤È¤¤Ç¤¹¡¥
sed -e instruction-1 \ -e instruction-2
¤³¤ì¤Ï°Ê²¼¤ÎÂå¤ï¤ê¤Î¤â¤Î¤Ç¤¹¡¥
sed instruction-1;instruction-2
¤â¤¦°ì¤Ä¤Î¹¤È´¤±¤¿ÅÁÀâ¤È¤·¤Æ¡¤“¥Þ¥Ã¥Á¤·¤¿¤â¤Î”¤ò°ÕÌ£¤¹¤ës
¥³¥Þ¥ó
¥É¤Î°ìÉô¤òÃÖ´¹¤¹¤ë¤È¤¡¤‘&’¤ò»ÈÍѤ·¤Æ¤â°Ü¿¢À¤Ï¤¢¤ë¤Ç¤·¤ç¤¦¡¥¤¹¤Ù¤Æ
¤Î¥Ù¥ë¸¦µæ½ê¤ÎV7 sed
¤Î»Ò¹¤Ï(¾¯¤Ê¤¯¤È¤â¡¤²æ¡¹¤Ï¤½¤ì¤è¤ê¸Å¤¤
sed
¤ò·Ð¸³¤·¤¿¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó)¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡¥
POSIX¤Ç¤Ï¡¤‘!’¤È¤½¤ì°Ê¹ß¤Î¥³¥Þ¥ó¥É¤Î´Ö¤Ë¶õÇò¤¬¤¢¤Ã¤Æ¤Ï¤¤ ¤±¤Þ¤»¤ó¡¥¥¢¥É¥ì¥¹¤È‘!’¤Î´Ö¤Î¶õÇò¤ÏOK¤Ç¤¹¡¥Î㤨¤Ð¡¤Solaris 8¤Ç¤Ï°Ê ²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
$ echo "foo" | sed -n '/bar/ ! p' error→Unrecognized command: /bar/ ! p $ echo "foo" | sed -n '/bar/! p' error→Unrecognized command: /bar/! p $ echo "foo" | sed -n '/bar/ !p' foo
sed
(‘t’)¸Å¤¤¥·¥¹¥Æ¥à¤Ë¤Ï¡¤¿·¤·¤¤¥µ¥¤¥¯¥ë¤È³«»Ï¤¹¤ë¤È¤¡¤¤½¤Î‘t’¥Õ¥é¥°¤ò¥ê¥»¥Ã
¥È¤¹¤ë¤³¤È¤ò“˺¤ì¤ë” sed
¤¬¤¢¤ë¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹¡¥Î㤨¤Ð¡¤
MIPS RISC/OS¤ÈIRIX 5.3¤Ç¡¤°Ê²¼¤Îsed
¥¹¥¯¥ê¥×¥È¤ò
¼Â¹Ô¤·¤¿¾ì¹ç¤ò¹Í¤¨¤Þ¤¹(¹ÔÈÖ¹æ¤Ï¡¤¼ÂºÝ¤Ë¤Ï¥Æ¥¥¹¥È¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¡¥
s/keep me/kept/g # a t end # b s/.*/deleted/g # c : end # d
¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤Ï°Ê²¼¤ò¹Í¤¨¤Þ¤¹¡¥
delete me # 1 delete me # 2 keep me # 3 delete me # 4
°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
deleted delete me kept deleted
°Ê²¼¤Î¤è¤¦¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡¥
deleted deleted kept deleted
¤Ê¤¼¤Ç¤·¤ç¤¦¡©°ì¹ÔÌܤò½èÍý¤·¤Æ¤¤¤ë¤È¤¡¤¥Þ¥Ã¥Á¤¹¤ë¤Î¤Çt¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ
¤ì¡¤b¹Ô¤«¤éd¹Ô¤Þ¤Ç°Üư¤·¡¤½ÐÎϤ¬À¸À®¤µ¤ì¤Þ¤¹¡¥Æó¹ÔÌܤò½èÍý¤·¤Æ¤¤¤ë¤È¤¡¤
t¥Õ¥é¥°¤Ï¥»¥Ã¥È¤µ¤ì¤¿¤Þ¤Þ¤Ç¤¹(¤³¤ì¤Ï¥Ð¥°¤Ç¤¹)¡¥¤·¤«¤·¡¤a¹Ô¤Ï¥Þ¥Ã¥Á¤Ë¼ºÇÔ
¤·¤Þ¤¹¤¬¡¤ÃÖ´¹¤¬¼ºÇÔ¤¹¤ë¤È¤¡¤sed
¤Ït¥Õ¥é¥°¤ò¥¯¥ê¥¢¤¹¤ë¤³¤È¤ò¥µ
¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡¥¤½¤Î¤¿¤á¡¤¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤ëb¹Ô¤Ï¡¤
¤½¤ì¤ò¥¯¥ê¥¢¤·¡¤d¤Ø°Üư¤·¡¤¤½¤Î·ë²Ì¡¤‘deleted’¤ÎÂå¤ï¤ê¤Ë
‘delete me’¤Ë¤Ê¤ê¤Þ¤¹¡¥»°¹ÔÌܤò½èÍý¤·¤Æ¤¤¤ë¤È¤¡¤¥Þ¥Ã¥Á¤ò¼¨¤¹t ¤¬¥¯
¥ê¥¢¤µ¤ì¤ë¤¿¤á¡¤¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¡¤¤½¤Î·ë²Ì¡¤b¹Ô¤Ï¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·°Üư
¤·¤Þ¤¹¡¥ºÇ½ªÅª¤Ë¥Õ¥é¥°¤Ï¥¯¥ê¥¢¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¤»Í¹ÔÌܤÏÀµ¤·¤¯½èÍý¤µ¤ì¤Þ
¤¹¡¥
sed
¤Î‘t’¤Ë¤Ä¤¤¤Æ³Ð¤¨¤Æ¤ª¤¯¤Ù¤¤³¤È¤ÏÆó¤Ä¤¢¤ê¤Þ¤¹¡¥ºÇ½é¤Ë¡¤
À®¸ù¤·¤¿ÃÖ´¹¤Ë¤è¤Ã¤Æ¤Ï¡¤ÃÖ´¹¤ÎľÁ°¤À¤±¤Ç¤Ê¤¯‘t’¥¸¥ã¥ó¥×¤¹¤ë
¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡¥¤½¤Î¤¿¤á¡¤t¥Õ¥é¥°¤ò¼ÂºÝ¤Ë¥ê¥»¥Ã¥È¤¹¤ë¤¿¤á¤Ë¡¤
¤´¤Þ¤«¤·¤Î‘t clear; : clear’¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
ÆóÈÖÌܤϡ¤¤½¤ì¤¾¤ì¤Î¿·¤·¤¤¥µ¥¤¥¯¥ë¤Ç¥Õ¥é¥°¤ò¥¯¥ê¥¢¤¹¤ë¤Î¤òsed
¤Ë°ÍÍꤹ¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡¥
¾åµ¤Î¥¹¥¯¥ê¥×¥È¤Î°Ü¿¢À¤Î¹â¤¤¼ÂÁõ¤Î°ì¤Ä¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
t clear : clear s/keep me/kept/g t end s/.*/deleted/g : end
touch
Í׵ᤵ¤ì¤ë¥¿¥¤¥à¥¹¥¿¥ó¥×(Î㤨¤Ð-r¥ª¥×¥·¥ç¥ó)¤ò»ØÄꤹ¤ë¾ì¹ç¡¤
touch
¤ÏÄ̾utime
¤äutimes
¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»ÈÍѤ·¡¤
·ë²Ì¤È¤·¤Æ¡¤‘cp -p’¤Ë¸ºß¤¹¤ë¥¿¥¤¥à¥¹¥¿¥ó¥×¤ÎÀÚ¤êµÍ¤á¤ÎÌäÂê¤ÈƱÍͤÎ
·ë²Ì¤Ë¤Ê¤ë¤Ï¤º¤Ç¤¹¡¥
¸Å¤¤BSD¥·¥¹¥Æ¥à¤Ë¤Ï¡¤¶õ¤Î¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ëtouch
¤Î¤è¤¦
¤Ê¥³¥Þ¥ó¥É¤Ç¡¤¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò¹¹¿·¤·¤Ê¤¤·ë²Ì¤È¤Ê¤ë¤â¤Î¤â¤¢¤ë¤Î¤Ç¡¤²óÈò¤¹
¤ë¤¿¤á¤Ë¡¤echo
¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
GNU touch
3.16r(¤È¤½¤ì°ÊÁ°¤ÎÁ´¤Æ)¤Ï¡¤¶õ¤Î¥Õ¥¡¥¤¥ë¤¬
NFS¤Ç¥Þ¥¦¥ó¥È¤µ¤ì¤Æ¤¤¤ë4.2¤Î¥Ü¥ê¥å¡¼¥à¤Î¤È¤¡¤SunOS 4.1.3 ¤Ç¤Î
ưºî¤Ç°Û¾ï½ªÎ»¤·¤Þ¤¹¡¥
Next: Limitations of Make, Previous: Limitations of Builtins, Up: Portable Shell [Contents][Index]