Next: , Previous: Limitations of Builtins, Up: Portable Shell   [Contents][Index]


10.10 Ä̾ï¤Î¥Ä¡¼¥ë¤ÎÀ©¸Â

¤¢¤é¤æ¤ë¥Þ¥·¥ó¤Ç¸«¤Ä¤«¤ë¤³¤È¤¬´üÂԤǤ­¤ë¾®¤µ¤Ê¥Ä¡¼¥ë¥»¥Ã¥È¤Ë¤Ï¡¤ÃΤäƤª ¤¯¤Ù¤­À©¸Â¤¬¤¤¤¯¤Ä¤«´Þ¤Þ¤ì¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡¥

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’¤ÇÀ¸À®¤µ¤ì¤ë¥Ç¥Õ¥©¥ë¥È¤Î¼Â¹Ô·Á¼°¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¤Ï¤º ¤Ç¤¹¡¥

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: , Previous: Limitations of Builtins, Up: Portable Shell   [Contents][Index]