ã¯ããã«
ã·ã§ã«ã¹ã¯ãªããã®äžçã¯ä»åŸ 10 幎ã§å€§ããå€åããŸãã10 幎ãšããæ°åã¯åããè¯ãæ°åãæã£ãŠããã ãã§æ ¹æ ã¯ãããŸãããããããé·ãæéãããããããããŸããããããããããçããªããããããŸãããããã確å®ã«ããããæ¹åã«å€ãã£ãŠããã§ããããUnix/Linux ã®æšæºã³ãã³ãã¯ããŸããŸãªåé¡ãæ±ããŠããŸããUnix/Linux ã®æšæºã³ãã³ãã«äŸåããŠããéãã·ã§ã«ã¹ã¯ãªããã«å€§ããªæ¹åã¯ãããŸãããããããã®ã·ã§ã«ã¹ã¯ãªããã®äžç㯠Unix/Linux ã®æšæºã³ãã³ãã«äŸåããªãäžçã§ãããããã©ããããã®ã«ãªãã®ãããã®èšäºã§è§£èª¬ããŠããŸãããã®èšäºã¯ç§ã®äºèšã§ããç®æšã§ãã
ã·ã§ã«ã¹ã¯ãªããã®å€±ããã30幎ã®é²åãåãæ»ãïŒ
æ®å¿µãªããšã«ãã·ã§ã«ã¹ã¯ãªããã®äžç㯠30 幎åãã倧ããå€ãã£ãŠããŸããããããŸã§ã®éãããã°ã©ãã³ã°èšèªã®äžçããœãããŠã§ã¢éçºã®äžçã¯å€§ããå€ãã£ãŠããŸããŸãããã·ã§ã«ã¹ã¯ãªããã®é©çšç¯å²ã¯å¹Žã å°ãããªã£ãŠããŸããã·ã§ã«ã¹ã¯ãªããã§ãããããšã¯éãããŠãããããããã¯ä»æ¹ã®ãªã話ã§ããGUI ã¢ããªã±ãŒã·ã§ã³ãã¹ããã¢ããªãé³å£°ãç»åãåç»ããŒã¿ã®åŠçããŠã§ãã·ã¹ãã ãã¯ã©ãŠãã¢ããªã±ãŒã·ã§ã³ãAI ã®åéã¯ã·ã§ã«ã¹ã¯ãªããã§ãããããªããšã§ã¯ãªãã®ã§ãããããæ°ããåéããžã®å¯Ÿå¿ã¯ã§ããŠããªããŠãåé¡ãããŸãããåé¡ã¯æ¬æ¥ã®ã·ã§ã«ã¹ã¯ãªããã®é©çšåéã§ãã
ã·ã§ã«ã¹ã¯ãªããã§äœãããããšèšã£ãŠãçµå±ã¯å€éšã³ãã³ããåŒã³åºããŠããã ãã§ãããã®å€éšã³ãã³ãã¯ä»ã®ããã°ã©ãã³ã°èšèªã§äœãããŠããŸããä»ã®èšèªã䜿ã£ãŠãã³ãã³ãããäœãã°ãã·ã§ã«ã¹ã¯ãªããããåŒã³åºãããšãã§ããŸãããæ°ããåéããžã®å¯Ÿå¿ã¯ä»ã®èšèªã§è¡ãããšã§ããã·ã§ã«ã¹ã¯ãªããã¯ä»ã®èšèªã§äœãããã³ãã³ããå©çšããããšã§ã鿥çã«ãæ°ããåéã«å¯Ÿå¿ããããšãã§ããŸãããããèå¿ã®ã³ãã³ããå©çšããæè¡ã 30 幎åããã»ãšãã©å€ãã£ãŠããŸããã30 幎åã«å®æããæè¡ã§ãã£ãã®ãªãå€ãããªããŠãåé¡ãªãã®ã§ããããã®ãããªããšã¯ãããŸãããæ®å¿µãªããã·ã§ã«ã¹ã¯ãªããã®äžçã¯äžäŸ¿ãªãŸãŸåæ»ããŠããŸã£ãŠããã®ã§ãã
2024幎ãPOSIX ã®å€§å¹ ãªæ¹å®ãè¡ããã
POSIX ã®å€§èŠæš¡ãªæ¹å®ãè¿«ã£ãŠããŸããååã® POSIX ã®å€§èŠæš¡ãªæ¹å®ã¯ POSIX.1-2008 (Issue 7)ãéã«å°èŠæš¡ãªä¿®æ£ãè¡ããå³å¯ã«ã¯ POSIX.1-2017 ã§ããããããé€ããš 15 幎ãçµéããŠããŸããŸããããã®ããã§ POSIX ã¯æ¹å®ãããªãçµæ¯ããå€ãæšæºèŠæ Œãšåéããããããšãããããã§ããæ¬¡ã®æ¹å®ã¯ POSIX 202x (Issue 8) ãšåŒã°ããŠããããŸã æ£åŒãªèŠæ Œã®åç§°ã¯å®ãŸã£ãŠããŸããããçŸåšæ©èœã宿ããã Draft4 ãŸã§æ¥ãŠããã®ã§ããããã« 2024 幎äžã«ã¯å®æããã§ãããããŸãå€§å¹ ãªæ¹å®ãšãã£ãŠãã·ã§ã«ã¹ã¯ãªããã®åéã¯ãããŸã§å€§ããå€ããããã§ã¯ãããŸãããéèŠãªã®ã¯å€åã®å€§ããã§ã¯ãªãå€åãããšããäºå®ã§ããPOSIX ã¯å€ããç¶ããŸããã·ã§ã«ã¹ã¯ãªããã®äžçãå€ããç¶ããŸããå€ãããªããã°ãã€ãŸã§ãäžäŸ¿ãªãŸãŸã§ããäœå¹Žãåãç¥èã®ãŸãŸã§ã¯éçšããŸããã
POSIX ãæ¹å®ããããããšãã£ãŠãã·ã§ã«ã¹ã¯ãªããã®äžçãããã«å€åããããã§ã¯ãããŸããããã ããŸã å€åããŠããªããšããããã§ããããŸãããå
é²çãªã·ã§ã«ãç°å¢ã䜿ã£ãŠããã°ä»ãã䜿ããŸããååãšã㊠POSIX ã®æšæºåã¯åŸè¿œãã§å
ã«ããã€ãã®å®è£
ãã§ããŠããæšæºåãããŸããæ°ããæšæºåãããã·ã§ã«ã®æ©èœã¯ bashãkshãzsh ã§äœå¹Žãåã«å®è£
æžã¿ã§ãset -o pipefail ãªã© BSD ç³» Unix ã§ã¯ POSIX ã®ååãèŠãªããå
è¡ããŠå®è£
ãããŠããŸããrealpath ã readlink ãªã©æ°ããæšæºåãããã³ãã³ãããããŸããããããã GNU ã BSD ã§ãã§ã«å®è£
ãããŠãããã®ã§ããPOSIX ã§æšæºåãããŠããªãäžã§ãå€åã¯ãããŸãããã€ãŠ awk ã® gensub 㯠GNU awk ã®æ¡åŒµãšèšãããŸããããä»ã BSD ç³» Unix ã®ãã¹ãŠã§å¯Ÿå¿ããŠããŸããGNU ã³ãã³ããšããŠç¥ãããŠãã seq ã³ãã³ãã¯ä»ãå€ãã®ç°å¢ã§åäœããŸããBSD ç³» ã® sed ã®ä»æ§ã¯ GNU sed ã«ããªãè¿ã¥ããŠããåŸæ¥ BSD sed ã§ã¯åããªããšèšãããæžãæ¹ãåãããã«ãªã£ãŠããŸãããã®ããã«æ¡åŒµæ©èœãšããŠçãŸããæ©èœãæ®åã㊠POSIX ã§æšæºåããããšããæµãã§ããã·ã§ã«ã¹ã¯ãªããã®å€åã¯é
ãã§ããããããã« 10 幎ãããåã®æ
å ±ã¯å€ããŠçŸç¶ã«éçšããªããªãã€ã€ãããŸãã
ã㊠POSIX ã®æ¹å®ããã§å°ãã·ã§ã«ã¹ã¯ãªããã®äžçãè¯ããªã£ããããšèšã£ãŠããã§ååãšããããã§ã¯ãããŸãããã¯ã£ãããã£ãŠã·ã§ã«ã¹ã¯ãªããã®äžçã¯äžäŸ¿ã§ããä»ã®èšèªããäœå¹Žãé ããåã£ãŠããŸãããããªãä»ã®èšèªã䜿ãã°è¯ããšæããããããŸããããã·ã§ã«ã¹ã¯ãªããã¯ä»ã®ã¹ã¯ãªããèšèªãšã¯å šãéãç¹åŸŽãæã£ãŠããŸããç°¡åã«çœ®ãæããããšãã§ããªããã®ãªã®ã§ããããããååã«çè§£ãããŠãããã·ã§ã«ã¹ã¯ãªããã®äžäŸ¿ããçžãŸã£ãŠãã·ã§ã«ã¹ã¯ãªããããªããããšèšãããå§æ«ã§ãããŸãããããããšãèšã人ãããŠãããã£ã£ã£ãŒãŒãŒãšãªããªã£ãŠããªãã®ãçŸå®ãªããã§ãããã·ã§ã«ã¹ã¯ãªããããªããã®ã¯ç¡çãªã®ã§è«ŠããŸãããããããããåé¡ã解決ããã»ããçç£çã§ãã
æ®å¿µãªãã POSIX ã®æ¹å®ã§ã¯ã·ã§ã«ã¹ã¯ãªããã®åé¡ã解決ããããšã¯ã§ããŸããããªããªã POSIX 㯠Unix / Linux ã«æšæºçã«å«ãŸããŠãã OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãšãããã³ãã³ãã®ã¿ã察象ãšããŠããããã§ããOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«è©²åœããªã䟿å©ãªã³ãã³ãã¯å¯Ÿè±¡å€ã§ããäŸãã°ããŸããŸãªããã°ã©ãã³ã°èšèªã¯ OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ãããããªãã®ã§ã¯ãªãã®ã§ POSIX ã®å¯Ÿè±¡å€ã§ãããããŠäºææ§ãç¶æããå¿ èŠããããããUnix / Linux ã«æšæºçã«å«ãŸããŠããã³ãã³ãã¯ä»æ§ã倧ãã倿Žããããšãã§ããªãããã§ããã ã»ãã»ããUnix / Linux ã³ãã³ãã¯ä»æ§ããã€ãŸã§ãå€ããããã€ãŸã§ãäžäŸ¿ãªãŸãŸãªã®ã§ããåœããåã§ããäžäŸ¿ãªãã®ã䜿ããšèšã£ãŠã誰ã䜿ãããã«ãªããã®ã§ãããã·ã§ã«ã¹ã¯ãªããã®äžäŸ¿ããèªããäžã§ãäœãåé¡ã§ããããåæãã©ãããã°ãããææ¡ã解決ããŠå€åãããŠããããšããããã·ã§ã«ã¹ã¯ãªãããæãããã®ãæ¬åœããã¹ãããšã§ããçŸåšã®ãã ããªãã·ã§ã«ã¹ã¯ãªãã TIPS ãªããŠå šéšéå»ã®ãã®ã«ããŠããŸããŸãããã
ã·ã§ã«ã¹ã¯ãªããã®äžçã®æ¹åã¯ãPOSIX ã«é Œãããšãã§ããŸããããUnix / Linux ãã³ããŒã«é Œãããšãã§ããŸãããUnix / Linux ãã³ããŒã¯ OS ãéçºããŠãããOS ã«é¢ä¿ããªãéšåã«é¢ããŠã¯ OS ã«å«ããå¿
èŠããªãïŒèª°ããããã°ããïŒãšããèãã ããã§ããäŸãã° curl ã³ãã³ãã jq ã³ãã³ãã OS ã®æšæºæ©èœãšã㊠OS èªèº«ã«çµã¿èŸŒãå¿
èŠã¯ãªãã§ãããïŒ OS ã«çµã¿èŸŒãã§ããŸããš OS ããšã«äºææ§ããªããªã£ãŠããã®ã§ãã¡ãªãããããããŸããããã㊠OS ã«çµã¿èŸŒãŸããªããã®ã¯ POSIX ã§æšæºåãããããšããããŸãããã€ãŸãã·ã§ã«ã¹ã¯ãªããã®äžç㯠OS ãéçºããŠããªãç§éãå€ããŠãããªããã°ãªããªããšããããšã§ãã
ã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã¯ä»ã®èšèªã«å€§ããªå·®ãä»ãããã
ãUNIXãšããèãæ¹ããšããæ¬ããããŸãããã®äžã§ã·ã§ã«ã¹ã¯ãªããã¯ç§»æ€æ§ãé«ããªã©ãšæžãããŠããŸãããããã¯ãã®æ¬ã®åèãæžããã 1990 幎é ã®è©±ã§ããåœæã¯ Unix ã§äœ¿ããèšèªã¯ãC èšèªãé€ã㊠Perl ãããããèªçããŠãããã1990 幎é ã® C èšèªããã°ã©ã ã®ç§»æ€æ§ã¯ä»ãããå€§å¹ ã«äœããã®ã§ãããPOSIX ãæšæºåãããã°ããã§ãŸã æºæ ããŠãã OS ããªããä»ã«æ¯èŒå¯Ÿè±¡ã®èšèªããªãæä»£ã«ãããŠã·ã§ã«ã¹ã¯ãªãã㯠C èšèªãããç§»æ€æ§ãé«ããšèšãããŠããã ãã§ãã
ã·ã§ã«ã¯ã©ã® OS ã«ãæšæºã§ã€ã³ã¹ããŒã«ãããŠããŸãããOS ã®æšæºç°å¢ã§åãããšãšç§»æ€æ§ã¯å¥ã®è©±ã§ããä»ã®ã¹ã¯ãªããèšèªã®å€ãã¯ç§»æ€æ§ãé«ãã©ã®ç°å¢ã§ãåããŸããå¿ èŠãªã®ã¯ã¹ã¯ãªããèšèªã®ã€ã³ã¿ããªã¿ãã€ã³ã¹ããŒã«ããããšã ãã§ããã©ã¡ãã«ãã OS ã«ã¯äœãã®ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããªããã°äœ¿ãç©ã«ãªããŸãããäœãã€ã³ã¹ããŒã«ããã«åãã®ã¯æè»œã§ãããå¿ èŠãªãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããã°ããã ããªã®ã§ãOS ã®æšæºç°å¢ã§åãããšã«å€§ããªã¡ãªããã¯ãããŸãããã·ã§ã«ã¹ã¯ãªããã®ç®çã¯ã³ãã³ããçµã¿åãããããšã§ããã³ãã³ãéçºã«é¢ããŠã¯å€ãã®ã¡ãªãããæã£ãŠããæ°ããèšèªã§ããã¹ãããšã§ãã
æ°ããèšèªã¯ãUNIXãšããèãæ¹ããæžãããåŸã® 1990 幎代ã®äžé ããç»å ŽããŸããããããã®èšèªã¯ UNIX ã®éããåžåããèšèªä»æ§ãã©ã€ãã©ãªãæã£ãŠãããäžåºŠæžãã°ã©ã®ç°å¢ã§ãåãããã»ãŒå®çŸããŸãããäžæ¹ã§ã·ã§ã«ã¹ã¯ãªããã¯ãã®ãããªããšãããªãã£ããããã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã¯30幎ã®éã«ä»ã®èšèªã«å€§ããªå·®ãä»ããããŠããŸããŸããã30 幎ãåã®å€ãæä»£ã®æ¬ãæ ¹æ ã«ä»ãã·ã§ã«ã¹ã¯ãªãããç§»æ€æ§ãé«ããšèšãããšã¯ã§ããŸãããä»ã®ç°å¢ã§åããã©ãããæ°ã«ããªããæžããªããšé«ãç§»æ€æ§ãå®çŸã§ããªãã®ã¯ã·ã§ã«ã¹ã¯ãªãããããã§ãã
30幎ã40幎åã¯ã³ã³ãã¥ãŒã¿ã®æ§èœãéåžžã«äœããç§»æ€æ§ãšå¹çãäž¡ç«ãããããšãåºæ¥ãŸããã§ããããUNIXãšããèãæ¹ãã§ã¯ãããªã«ãŒãã®ã¢ã¯ã»ã©ã¬ãŒã¿æ©èœã䜿ããšå¹çã¯è¯ããªããç§»æ€æ§ã¯äœããªããšããã¬ãã«ã®è©±ãããŠããŠæè¡ãæä»£ãç°ãªããŸããä»ã®ããã«äºææ§ã®éããåžåããå±€ïŒãã©ã€ããã©ãããŒã©ã€ãã©ãªïŒãå ¥ããããå€§å¹ ã«ããã©ãŒãã³ã¹ãäžããããéžæè¢ã«ãªããªããšãããããªæä»£ãªã®ã§ãUNIXãšããèãæ¹ãã¯åœæã® UNIX ãã³ããŒã®éçºè ã®èãã¯åãã£ãŠãæè¡çãªè©±ã¯åèã«ãªããŸããããããããã®æ¬ã¯æè¡æžã§ã¯ãããŸããã
ã·ã§ã«ãšUNIXã³ãã³ãã¯æ¬åœã«äœ¿ãã¥ãã
å€ãã®äººãæããŠããããšã ãšæããŸãããã·ã§ã«ãšUNIXã³ãã³ãã¯éåžžã«äœ¿ãã¥ããã§ãã倿°ã®ä»£å
¥ã§ã€ã³ãŒã«ã®ååŸã«ã¹ããŒã¹ãå
¥ããŠã¯ãããªã if ã® [ ] ã®ååŸã«ã¯ã¹ããŒã¹ãå¿
èŠãšããã話ã§ã¯ãããŸããããã®åé¡ã解決ããã®ã¯ãã¶ããã§ã¯ãããŸããããæ
£ããªãææ³ã¯æ
£ããã°è§£æ±ºããã®ã§äºçްãªåé¡ã§ãã
ã·ã§ã«ãšUNIXã³ãã³ãã®çŸç¶ã®åé¡ã¯ãéèŠãªæ©èœãäžè¶³ããŠããªããäžå¿ èŠãªæ©èœããããããããç§»æ€æ§ãéèŠãªå Žåã«ã¯ Linux ã macOS ãªã©ã®ç°å¢ã®éããèæ ®ããŠã·ã§ã«ã¹ã¯ãªãããæžããªããã°ãããªããšããããšã§ãããã®ãããªåé¡ã¯çè«çã«ã¯è§£æ±ºã§ããã¯ãã®åé¡ã§ããå®éã«ä»ã®ããã°ã©ãã³ã°èšèªã¯ãã§ã«è§£æ±ºããŠããŸãã
ã·ã§ã«ã¹ã¯ãªããã®åœ¹ç®ã¯è£æ¹ã§ããä»ã®ããã°ã©ãã³ã°èšèªã§äœãã³ãã³ãããã䞻圹ã§ããä»ã®ã³ãã³ããçµã¿åãããããã«äœ¿ããã®ãã·ã§ã«ã UNIX ã³ãã³ãã§ãããçµã¿åãããããã®ããã°ã©ãã³ã°ãããã以åã®åé¡ã§èŠåŽããŠãããšããã®ãçŸç¶ã§ãã
ã·ã§ã«ã¹ã¯ãªããã®äžçã¯äžäŸ¿ãªãŸãŸåæ»ããŠããŸã£ã
ã·ã§ã«ã¹ã¯ãªããã®äžçã¯30幎åããåæ»ããŠããŸããŸãããåæ»ããçç±ã¯ããã€ããããŸãããäžçªå€§ããªçç±ã¯ UNIX éçºã®å€§å ã§ãã AT&T ã UNIX ã®éçºããæãåŒããããšã§ããããUNIX ãé·ãé倧ããå€åããŠããªãçç± ãUNIX ã宿ããã OS ã ããå€ããå¿ èŠããªããã®ã§ã¯ãããŸããããã®èšŒæ ã« UNIX ãéçºããç ç©¶ããŒã 㯠Plan9 ãšããæ°ã㪠OS ãéçºããŠããŸãããPlan9 ã«ãã·ã§ã«ãã³ãã³ãã¯ãããŸãããUNIX ã®ãã®ãšäºææ§ããããšããããã§ã¯ãªããããæ¹è¯ãããã·ã§ã«ãã³ãã³ããå®è£ ããŠããŸãããæ¹è¯ãšããã®ã¯æ©èœãå€ããšããæå³ã§ã¯ãããŸãããããã·ã³ãã«ã§ããç°¡åã«äœ¿ãããã®ãç®æããŠããŸãããäžãäžãªããä»ã®ã·ã§ã«ãš UNIX ã³ãã³ãã¯äœ¿ãããŠããªãã£ãã§ããããçŸåšã®ã·ã§ã«ã UNIX ã³ãã³ãã¯åªãããã®ã§ã¯ãªããäžäŸ¿ãªã·ã§ã«ãš UNIX ã³ãã³ããšã®äºææ§ãéèŠããŠçãæ®ãç¶ããŠããŸã£ããã®ãªã®ã§ãã
äºææ§ã¯éèŠã§ããããããªããäºææ§ã®ããã«äžäŸ¿ãªãã®ãæ®ãç¶ãããšããã®ãè¯ããšã¯èšããŸãããã·ã§ã«ãš UNIX ã³ãã³ãã¯äºææ§ãé·ãä¿ã¡ãããŸããã30 幎ãããã°ç©äºã¯ç¢ºå®ã«å€ãã£ãŠããããªãã®ã§ãããå®è³ªçã« UNIX ãéçºããŠãã AT&T ã UNIX ã®éçºããããUNIX ãå©çšããŠããäŒç€Ÿã®å€ãã UNIX ã®éçºã«èå³ããªããªã£ãããã«æããŸããçŸåš UNIX ããã³ UNIX ã®åŸç¶ãšã㊠OS ãéçºããŠããã®ã Linux ã macOS ã§ãããæ°ããåéã®éçºãäž»ã§ã·ã§ã«ã UNIX ã³ãã³ããªã©ã®æãããããã UNIX ã ããšèšããããããªåéã¯åæ»ããŠããŸã£ãŠããŸããäžçã®èå³ãæ°ããåéã«ç§»ã£ãŠããŸã£ãŠãããããã·ã§ã«ã¹ã¯ãªããã®äžçã¯ãããã§ããããããã®ç¶æ ã«ãªã£ãŠããã®ã§ãã
ãããã·ã§ã«ã¹ã¯ãªããã®äžçã¯ãã€ãŸã§çµã£ãŠããªããªããŸããã人ã ã¯æå¥ãèšããªãããã·ã§ã«ã¹ã¯ãªãããæžãç¶ããŠããŸããå€ãã®äººãã·ã§ã«ã¹ã¯ãªããããªããããšããŠããŸãããã©ããå®çŸã§ããŠããŸãããããã¯ã·ã§ã«ãä»ã®èšèªãšæ ¹æ¬çã«éãããšãçè§£ã§ããŠããªãããã§ããã·ã§ã«ãæ¹è¯ããã®ã§ã¯ãªããã·ã§ã«ãå¥ã®ãã®ã«çœ®ãæããããšããŠãããããã·ã§ã«ã¹ã¯ãªããããªããããšãã§ããŠããªãã®ã§ãã
ã·ã§ã«ã¹ã¯ãªããã§ããã¹ãããšãšããã§ãªãããš
ã·ã§ã«ã¹ã¯ãªããã¯ã©ããªããšã§ããããéå ·ã§ã¯ãããŸãããUNIX å²åŠã®èãæ¹ã¯äžã€ã®ãã®ã§äœã§ãããããšã§ã¯ãªãé©åãªãã®ãçµã¿åãããããšã§ããã·ã§ã«ã¹ã¯ãªããã§ãããã¯åãã§ããã·ã§ã«ã¹ã¯ãªããã§ãæ°ããäœãããã³ãã³ãã䜿ãã°ãããŸããŸãªäºãã§ããŸããããããã®ãæ°ããã³ãã³ãã¯ã©ã®èšèªã§äœãã°ããã§ããããïŒã ããã§ããå¥ã®ããã°ã©ãã³ã°èšèªãå¿ èŠã§ããå€ã UNIX ã®æä»£ã§ã¯ C èšèªãå¯äžã®ããã°ã©ãã³ã°èšèªã§ããããçŸåšã¯ããŸããŸãªããã°ã©ãã³ã°èšèªããããŸãã
ã·ã§ã«ã¹ã¯ãªããã§ããã¹ãããšã¯ã³ãã³ããäœãããšã§ã¯ãããŸãããã³ãã³ããäœããŸããäœã£ãŠãè¯ãã®ã§ãããããŸããŸãªçç±ããã³ãã³ããäœãã®ã¯å¥ã®èšèªã«ä»»ããŠãã·ã§ã«ã¹ã¯ãªããã§ã¯ã³ãã³ããçµã¿åãããããšã«ç¹åããã¹ãã§ãããããã·ã§ã«ã¹ã¯ãªããã§ããã¹ãããšã§ããã³ãã³ãã®çµã¿åããæ¹ã¯è²ã ãããŸãããã®äžã€ããã€ãã§ããããã€ãã¯ããŒã¿ãšããŠé¢é£ããããã®ãã€ãªããããšããã§ããŸãããã³ãã³ããçµã¿åãããæ¹æ³ã¯ãã€ã以å€ã«ããããŸããããŸããŸãªæ¹æ³ã§çµã¿åãããããšã§ãä»ã®ããã°ã©ãã³ã°èšèªã®èœåãåŒãåºãããšãã·ã§ã«ã¹ã¯ãªããã®åœ¹ç®ã§ãã
ããããã·ã§ã«ã¹ã¯ãªãããã€ãŸãã·ã§ã«èšèªãš UNIX ã³ãã³ãã®ç¯å²ã§ã¯ãŸãšããªããã°ã©ãã³ã°ã¯ã§ããŸããããŸãšããªããã°ã©ãã³ã°ãšã¯äŸãã°ã¢ã«ãŽãªãºã ã®æç§æžã§ç¿ããããªã¢ã«ãŽãªãºã ãå®è£ ããããšã§ãããããã®ã¢ã«ãŽãªãºã ãã·ã§ã«ã¹ã¯ãªããã§å®è£ ããããšããããã¡ã¢ãªã䜿ã代ããã«ãã¡ã€ã«ã§ä»£çšãããšããã€ã³ããã¯ã¹ã®ä»£ããã«ãã¡ã€ã«ã·ã¹ãã ã䜿ããšããç¡çãããªæ¹æ³ã§å®è£ ãããã©ãŒãã³ã¹ã¯å€§å¹ ã«äœããšããæ®å¿µãªç¶æ³ã«ãªããŸããã·ã§ã«ã¹ã¯ãªããã¯ããã°ã©ãã³ã°äœæ¥ã楜ã«ããããã®éèŠãªéå ·ã§ãããããã°ã©ãã³ã°æè²ã®äžå¿ã«ãªããããªãã®ã§ã¯ãããŸãããUNIX ã³ãã³ãã䜿ãããšã ããåŠãã§ããUNIX ã³ãã³ããäœãããšã¯ã§ããŸããã
ãã³ããŒäŸåã®ãªãããããã®æä»£ã«é·ã䜿ããã³ãã³ããäœã
ç¹å®ã®ãã³ããŒãäœã£ãã³ãã³ãã¯ããã®ãã³ããŒããªããªãã°äœ¿ãç©ã«ãªããªããªããŸããé·ã䜿ããã³ãã³ãã¯å€ãã®äººãèªç±ã«äœ¿ããŠèª°ã§ãèªç±ã«éçºã«åå ã§ãããã®ã§ããç¹å®ã®ãã³ããŒã仿§ãäœã£ãŠããããã§ã¯ãé·ã䜿ãããã®ã«ã¯ãªããŸãããé·ã䜿ãããã®ãšããã®ã¯äœ¿çšããéã«å¶éããªããšããããšã§ããç¹å®ã®ãã³ããŒãç¬å ããæš©å©ãæããã©ã€ã»ã³ã¹å¥çŽã¯äžèŠã§äœ¿çšããã®ã«ãéãããããŸãããã©ããªå人ã§ãã©ããªåŠæ ¡ã§ãã©ããªäŒç€Ÿã§ãå¶éãªãèªç±ã«äœ¿ãããã®ã§ãã
å€ããããã UNIX ã³ãã³ãã¯ãããããé·ã䜿ããŸãããããã ãã§ã¯ããããã®æä»£ã«å¯Ÿå¿ã§ããŸãããããããã©ãããä»ã®äžçã«ãåå察å¿ãåºæ¥ãŠããŸããããããŸã§ã® UNIX ã³ãã³ãã¯äºææ§ãä¿ã€ããã«æ®ãã¬ã¬ã·ãŒã³ãã³ãã§ãã
äœãäœãã®ãçµè«ã¯åºãŠããŸããå€ã UNIX ã³ãã³ãã®ä»£ãããšãªãæ°ããã³ãã³ãã»ããããªãŒãã³ãœãŒã¹ã§äœãããšã§ããGNU ãããžã§ã¯ããªã©ãäœå幎ããã£ãŠããããšãšåãããšã§ããPOSIX ã¯æšæºåãè¡ã£ãŠããã ãã§ãæ°ããã³ãã³ãã®ä»æ§ãèããããããå®éã«åãããŒã«ãäœã£ãŠããããã§ããªãã®ã§åœ¹ã«ç«ã¡ãŸãããå®éã«æ°ããã³ãã³ããäœãå¿ èŠããããŸãã
ç¬èªæè¡çå矀ãé¿ããä»äººã®åãå©çšããUNIXå²åŠã®èãæ¹
ã·ã§ã«ã¹ã¯ãªããã®äžçã§éèŠãªèãæ¹ã¯ãä»äººã®åãå©çšããŠçµã¿åããããšããèãæ¹ã§ããä»ãŸã§ã§ã Unix ã³ãã³ãã䜿ã£ãŠå®çŸã§ããŠããïŒ ããããè¶³ããŸãããä»ãå€ãã®ã³ãã³ããäœãããããããªãŒãã³ãœãŒã¹ã§èª°ã§ãç¡æã§äœ¿ããããã«æäŸãããŠããŸããããããããŸãçµã¿åãããããããã«ããããšããã·ã§ã«ã¹ã¯ãªããã®äžçã«å¿ èŠãªãã®ã§ãã
ãUNIXãšããèãæ¹ããšããæ¬ã«ã¯ãã®ãããªããšãæžããŠãããŸãã
ããããã°ã©ãã¯ããã³ãŒããæžããå倧ãªããã°ã©ãã¯è¯ãã³ãŒããåããŠãã
èªåã§ã³ãŒããæžãã®ã¯æéããããããšã§ãããããããä»äººãäœã£ãã³ãŒããå©çšããæ¹ãé¥ãã«ç°¡åã§çãæéã§ç®çãéæããããšãåºæ¥ãŸããããã¯å匷ã®ããã«èªåã§äœãããšãåŠå®ãããšããæå³ã§ã¯ãããŸãããå匷ã¯å匷ãããã¯å¥ã®è©±ãšããã ãã§ããå匷ã§äœã£ããã®ã¯å®çšç®çã§ã¯äœ¿ããªãããã«ããŸããããèªåã§äœãå¿ èŠããªããã®ã¯ä»äººãäœã£ããã®ãå©çšãæéãç¯çŽããã°ãæ¬åœã«èªåã§äœããªããã°ãããªãããšã«æéã䜿ãããšãåºæ¥ãŸãã
ã·ã§ã«ã¹ã¯ãªããã¯ãä»äººã®åãå©çšããŠæéãç¯çŽããããã®éå ·ã§ãã
ãUNIXãšããèãæ¹ãã«ã¯ç¬èªæè¡çå矀ãé¿ãããšãã話ãèŒã£ãŠããŸãããã¹ãŠãèªåãã¡ã§äœã£ãŠããŠã¯ãæéã¯ããããã£ãŠãè¶³ããŸããã30 幎以äžåã®å€ãæ¬ãªã®ã§ãç¹ã«æè¡çãªå 容ã¯çŸä»£ã«åœ¹ã«ç«ããªãã®ã§ãããèãæ¹ã¯åèã«ãªããŸãã
ã·ã§ã«ã¹ã¯ãªããã®äžçã¯å€ããªãããªããªãïŒ
ã·ã§ã«ã¹ã¯ãªãããæžããŠãããšéŠ¬é¹¿ãããããšãããã€ããããŸããç§»æ€æ§ãèãããšæŽã«æè»ãããããŸããç¹å®ã®ã·ã§ã«åé¡ããç¹å®ã®ç°å¢ã®åé¡ãã什åã®æä»£ã«ãããããªããšã§ã¯ãããŸããããããå šéš 30 幎åããé²åãåæ»ããŠããŸã£ãããã§ãã
ã·ã§ã«ã¹ã¯ãªããã®äžçã¯å€ããå¿ èŠããããŸããç®æãã¯ãç°¡åãªããšãããç°¡åã«ãã§ãã
ã·ã§ã«èšèªã UNIX ã³ãã³ãã®çœ ããã®åé¿æ¹æ³ãç§»æ€æ§ã®æ³šæç¹ã POSIX æºæ ãè±ç¥èããããããŠããŠããã€é¡ã§èªããããªäžçã§ã¯ã ããªã®ã§ãããããªãã®ã¯ãªãããŠããŸããŸããããã·ã§ã«ã¹ã¯ãªããããã£ãšç°¡åã«æžããããã«æ £ãã°ãæ¬åœã«ãããªããã°ãããªãããã°ã©ãã³ã°ã®äžçã«éäžããããšãã§ããŸãã
çŸç¶ã®åé¡ç¹
ã·ã§ã«ã¹ã¯ãªãããæžãäžã§ã®åé¡ç¹ãç°¡æœã«è¡šçŸãããšãæ¬è³ªã§ã¯ãªãéšåã«æéãããã£ãŠãããã§ããäŸãã° Linux ã macOS ã§åããéããšãã察å¿ããŠããæ£èŠè¡šçŸãéããšããã©ã®ç°å¢ã§ãåãæžãæ¹ãããããšãããšäœ¿ããæ©èœã倧ããå¶éãã䜿ãã¥ãããšãããã®ãããªåé¡ã®è§£æ±ºã«æéãããããªã©ã§ãã
åæ1: ç§»æ€æ§ãšã¯ãªãããïŒ
å°ãç§»æ€æ§ãšã¯ãªããããšãã話ãããããšæããŸããäŸãã°æ¬¡ã®ã³ãŒã㯠bash ã§ã®ã¿åãã·ã§ã«ã¹ã¯ãªããã§ããïŒè£è¶³ å³å¯ã«ã¯ã·ãã³ã倿Žããã° ksh ã zsh ã§ãåããŸããã·ãã³ã®å€æŽã¯å°ããä¿®æ£ãªã®ã§ä»¥äžã®ã·ã§ã«ã¹ã¯ãªãã㯠bashãkshãzsh ã®éã§ç§»æ€æ§ãé«ããšèšããŸãïŒ
#!/bin/bash
for ((i = 1; i <= 100; i++)); do
t=$((t + i))
done
echo "$t" # => 5050
ãã®ã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã¯é«ãã§ãã/bin/sh ã§åããªãããç§»æ€æ§ãäœãïŒ ãããããã®ã·ã§ã«ã¹ã¯ãªãã㯠bash ã§åãããšãæç€ºããŠãããã®ãªã®ã§ /bin/sh ã§åããã©ããã¯é¢ä¿ãããŸããã/bin/sh ãã©ã®ç°å¢ã§ã䜿ããã·ã§ã«ãšããã®ã¯ csh ãšæ¯ã¹ãŠã®è©±ã§ bash ãæ®åããŠããªã 1990 幎代ãŸã§ã®å€ãåžžèã§ããçŸåšã«ãã㊠bash ãåããªãç°å¢ã¯ãããŸãããbash ã®ã€ã³ã¹ããŒã«ãå¿
èŠãªç°å¢ããããšããã ãã§ããbash ãã©ã®ç°å¢ã§åãã®ã¯ POSIX ã§æšæºåããã C èšèªã€ã³ã¿ãŒãã§ãŒã¹ã䜿ã£ãŠãããbash 㯠POSIX ã«æºæ ããŠéçºãããŠãã POSIX ã·ã§ã«ã ããã§ããç§»æ€æ§ãé«ããšããã®ã¯å°ããä¿®æ£ã§ä»ã®ç°å¢ã§åãããšããšããããšã§ããbash ãã€ã³ã¹ããŒã«ãããŠããªãç°å¢ã« bash ãã€ã³ã¹ããŒã«ããäœæ¥ã¯å°ããªä¿®æ£ã§ããç§»æ€æ§ã®æå³ããOS ã®æå°æ§æã ãã§åãããšããšåéãããªãããã«ããŠãã ãããç§»æ€æ§ãé«ã bash ãå©çšãããšãã©ã®ç°å¢ã§ãåãã·ã§ã«ã¹ã¯ãªããã®éçºãç°¡åã«ãªãã ãã§ã¯ãªã bash ã®æ¡åŒµæ©èœïŒé²åããã·ã§ã«èšèªã®æ©èœïŒã䜿çšããŠçç£æ§ãé«ããããšãã§ããŸããbash ã®æ¡åŒµæ©èœã䜿ããªããš /bin/sh ã§åããããããŸããããçç£æ§ã¯äžããç°å¢ããšã«ç°ãªãã·ã§ã«ã§ã®åäœãã¹ããå¿
èŠã«ãªãã·ã§ã«ã¹ã¯ãªãããéçºããã³ã¹ããå¢å€§ããŸãã/bin/sh ã䜿ãç¶ããéãããã€ãŸã§çµã£ãŠãé²åããã·ã§ã«èšèªã®æ©èœã䜿ãããšãã§ããŸããã/bin/sh ã§åãã·ã§ã«ã¹ã¯ãªããã¯äžç¹å®ã®äººãžã®é
åžçšã«ã¯äŸ¿å©ãããããŸããããèªåãã¡ã®ã·ã¹ãã ã ãã§åããå Žåã«ã¯æå³ã¯ãããŸãããé
åžçšã§ãã£ãŠã bash ã®ã€ã³ã¹ããŒã«ãäœ¿çšæ¡ä»¶ã«ããã°æžã話ã§ããJava ã©ã³ã¿ã€ã ãã€ã³ã¹ããŒã«ããã° Java ã¢ããªã¯ã©ãã§ãåã話ãšäœãå€ãããªãããã§ãã
POSIX ã«æºæ ããããšæã£ãå Žåã䜿çšå¯èœãªèšèªãã³ãã³ãã¯ããã€ããããŸããC èšèªãšPOSIX ã·ã§ã«ãšPOSIX ã³ãã³ãã ãã§ã¯ãããŸãããPOSIX æºæ ã®æ¡ä»¶ã¯ãå
éšçã« POSIX ã§æšæºåãããã€ã³ã¿ãŒãã§ãŒã¹ã䜿ãããšããªã®ã§ãRust ã䜿ããã Python ã䜿ãããå
éšã§ POSIX ã€ã³ã¿ãŒãã§ãŒã¹ãåŒã³åºããŠããã°ããã㯠POSIX ã«æºæ ããã¢ããªã±ãŒã·ã§ã³ã§ãããšããããPOSIX ã§èŠå®ãããã³ãã³ã以å€ã䜿ã£ãã POSIX æºæ ãšèªããªã POSIX æšæºèŠæ Œãã ã£ãã誰ã POSIX ãªããŠæ¡çšããŸããããã以å€ã®ã³ãã³ããšããããšã¯èªåãã¡ãäœã£ãã³ãã³ããå«ãŸããŸãããããããªãã®äœ¿ãç©ã«ãªããŸãããPOSIX ã¯ãOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã䜿ãå Žåã«ã¯ã³ã¬ã䜿ãã°ç§»æ€æ§ãããããšèšã£ãŠããã ãã§äœãããããèªç±ã§ããOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã䜿ããªãå Žåã¯ãªã«ã䜿ã£ãŠã POSIX æºæ ã§ããäœè«ã§ãããä»åã® POSIX ã®æ¹å®ã§ã¯ C èšèªã³ã³ãã€ã©ã¯ c99 ãã c17 ã«å€æŽã«ãªããŸããã ãããšãã£ãŠãããã㯠c17 ã䜿ããªããš POSIX æºæ ã«ãªããªãã»ã»ã»ãªããŠããšã¯ãããŸãããããã« POSIXãPOSIXãèšã£ãæã§ãLinux ã BSD Unix ã POSIX ã«å®å
šã«æºæ ããŠããªãïŒæºæ ããŠãã®ã¯ã³ã¬ãšã³ã¬ã ãããããmacOSãªãã20幎åã® POSIX.1-2001 (Issue 6)ã®ãŸãŸïŒã®ã§ãPOSIX ã·ã§ã«ãš POSIX ã³ãã³ãã ãã䜿ã£ãŠã·ã§ã«ã¹ã¯ãªãããæžããæã§ç§»æ€æ§åé¡ã解決ããããããªããã§ããããšã POSIX æºæ ã䞻匵ããŠããŠãä»ãå®è£
ã«ã¯ãã°ãããã®ã§ç°å¢ããšã®åäœã®éãã¯é¿ããããŸãããPOSIX èŠæ Œæžãèªãã§ãããããšã¯ãã©ã®ç°å¢ã§ãåããšä¿èšŒãããæ©èœã§ã¯ãªããåããªãå¯èœæ§ãé«ãæ©èœã§ããOS ãå€ããã°å
šãŠãã¹ãã¯ããçŽãã§ãã
bash ã«äŸåããã·ã§ã«ã¹ã¯ãªãããæžãããšã«åé¡ã¯ãããŸãããbash ãã©ãã§ãåãé·ã䜿ãããœãããŠã§ã¢ã§ããããšã¯ãbash ãéçºããã 1989 幎ããã® 30 å¹Žã®æŽå²ã§èšŒæãããŠããŸããéå»ã« bash 㯠ShellShock ãšããè匱æ§ãçºèŠãããŸããããããã§ bash 䜿ããªããªã£ãã§ããããïŒ ããããè匱æ§ãçºèŠããããããšèšã£ãŠå¥ã®ã·ã§ã«ã«ä¹ãæãã人ã¯ããªãã§ããããã·ã§ã«ã倿Žããããã¹ãŠãã¹ããçŽãã§ããããçŸç¶ã®ã·ã§ã«ã¹ã¯ãªãã㯠OS ã³ãã³ããžã®äŸå床ãé«ããããä»ã®èšèªã§äœãããã¢ããªã±ãŒã·ã§ã³ã®ããã«æ°è»œã« OS ã倿Žããããšã¯ã§ããŸãããäŸãã° FreeBSD ãš NetBSD ã®éã«ãéãã¯ããã®ã§ãæ®æ®µããç¶ç¶çã«ãã¹ããããŠããªãéããå¥ã®ã·ã¹ãã ã§ã·ã§ã«ã¹ã¯ãªãããåé¡ãªãåäœããä¿èšŒã¯ãããŸãããã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ãé«ããã«ã¯ïŒPOSIX ã³ãã³ããå«ãïŒOS æšæºã®ã³ãã³ããžã®äŸååºŠãæžããå¿ èŠããããŸããåäœä¿èšŒãããã«ã¯ååãªæéãæããŠãã¹ãããå¿ èŠããããŸããããã®æéã«æ¯ã¹ãŠ bash ã®è匱æ§ã¯çãæéã§ä¿®æ£ãããŸãããããã¯ãªãŒãã³ãœãŒã¹ãã€ãŠãŒã¶ãŒæ°ãå€ãããã§ããé·ã䜿ãããœãããŠã§ã¢ãšã¯ãã®ãããªãã®ã§ããéã«ã¯ããŒãºããœãŒã¹ã§ãŠãŒã¶ãŒæ°ãå°ãªããã°é·ã䜿ããŸãããéçºå ããªããªãã°ããã§ãžãšã³ãã§ããGNU bash ã GNU ã³ãã³ããšãã£ãç¹å®ã® OS ãç¹å®ã®ãã³ããŒã«äŸåããªãé·ã䜿ãããœãããŠã§ã¢ã䜿ãããšããã·ã§ã«ã¹ã¯ãªããã®å¯¿åœãé·ãããããšã«ã€ãªãããŸãã
åæ2: UNIX/Linuxã¯UNIXãã³ããŒããšã«ç°ãªãUNIX/Linuxã§ãã
UNIX ãšããã®ã¯ UNIX ãã³ããŒããšã«ç¬ç«ããŠéçºãè¡ãããŠãããååãšããŠãœãŒã¹ã³ãŒãã¯å ±æãããŠããŸãããå ããã©ãã° AT&T ãã«ç ç©¶æãéçºãã UNIX ã«ãã©ãçããŸãããããããå§ãŸããBSD Unix ãåå²ããAT&T ãã«ç ç©¶æ ã® Unix ãš BSD Unix ã¯ããããç°ãªã UNIX ã«ãªããŸãããããçšåºŠãäºãã® UNIX ã®ææã®åã蟌ã¿ã¯è¡ãããŸããããäžã€ã® UNIX ãå ±æããŠããããã§ã¯ãªãã®ã§æ©èœãåäœã«éãããããŸãã
ãã®åŸãAT&T ã® Unix ã¯ããã€ãã«åå²ããŸããã1990 幎é ã¯å€ãã® Unix ãååšããŠããŸããããå€ãã¯éçºãçµäºããçŸåšæ®ã£ãŠãããšèšããã®ã¯ãSolarisãAIXãHP-UXãz/OSãmacOS ãããã§ãããããããã® Unix ã¯ããããç°ãªã£ãŠãããäžã€ã® Unix ãå ±æããŠããããã§ã¯ãããŸããããŸãäŸå€ããããŸãã åçš Unix ã¯ååãšããŠãœãŒã¹ã³ãŒããå ¬éãããŠããŸããã
BSD Unix ãåãããã«åå²ããŸãããAT&T ã®åçš Unix ããžãã¹ã®éå§ã«ãããBSD Unix ããå ã® AT&T ã®ãœãŒã¹ã³ãŒãã¯å®å šã«æé€ãããŸããããã®ãã System Vç³» Unix ãš BSD ç³» Unix ã®ãœãŒã¹ã³ãŒãã¯å šãå ±æãããŠããŸãããBSD Unix ã®éçºã¯çµäºãããã®åŸãåŒãç¶ãã BSD ç³» Unix ã«ã¯ FreeBSDãNetBSDãOpenBSDãDragonFlyBSD ããããŸãããããã¯éäžã§åå²ãããã䌌ãŠããéšåããããŸãããããããã§å¥ã ã«éçºãè¡ãããŠãããåå²ããŠãããããªãã®æéãçµã€ããéãéšåããããªãã«ãããŸãã
Unix ãšã¯ç¬ç«ããŠéçºããã Linux ããRed Hat Linux ã Ubuntu Linux ã§ããããå¥ã® Linux ã§ãããã¹ãŠãåã GNU ã³ãã³ããæ¡çšããŠããããã§ã¯ãããŸããããã¡ãã Unix ãš Linux ã®éã§ãœãŒã¹ã³ãŒãã¯å šãå ±æãããŠããŸããã
Unix 㯠POSIX èªèšŒã UNIX ã®èªèšŒãšããŠæšæºåãããŠããŸãããæšæºåã®ç¯å²ã¯ OS ãã¹ãŠãã«ããŒããŠããããã§ã¯ãããŸãããGUI ãã¹ã¯ããããš GUI ã¢ããªã±ãŒã·ã§ã³ã Unix ããšã«å šãéãã®ã¯èšããŸã§ããªãã§ãããããã³ããŒããšã«ç°ãªã Unix ã¯ããã®äžéšã ããæšæºåãããŠãããã®ç¯å²ã«ãããŠã®ã¿ç§»æ€æ§ããããšããã®ãçŸç¶ã§ããPOSIX 㯠Unix ãäœãããã®æšæºèŠæ Œã§ã¯ãããŸããããããã¯ç¬èªã® Unix ãäœã£ãŠè¯ããšããããšãæå³ããŠããŸããUnix ãšããã®ã¯ Unix ãåä¹ã£ãŠããŠããããããéã Unix ãªã®ã§ããéã Unix ã®éã§ã¢ããªã±ãŒã·ã§ã³ãç§»æ€ããããã®ã¬ã€ãã©ã€ã³ã POSIX ã§ããã·ã§ã«ã¹ã¯ãªããã®åéã§ãã POSIX ã·ã§ã«ãš POSIX ã³ãã³ãã¯ãæšæºåãããŠå ±éããŠäœ¿ãããšãããéšåã¯ããããããããŸãããroot æš©éãå¿ èŠã«ãªããããªã·ã¹ãã 管çç³»ããŠãŒã¶ãŒç®¡çç³»ã®ã³ãã³ãã¯æåãã POSIX ã®å¯Ÿè±¡å€ã§ããããã ãã§ã¯ç§»æ€æ§ãããã·ã§ã«ã¹ã¯ãªããããŸãšãã«æžãã®ã¯äžååã§ãã
ã·ã§ã«ã¹ã¯ãªããã¯ä»ã®èšèªã«æ¯ã¹ãŠä»ã®ç°å¢ã«ç§»æ€ããã®ãé£ãã
ä»ã®ããã°ã©ãã³ã°èšèªã¯ä»ã®ç°å¢ã«ç§»æ€ããã®ãç°¡åã§ããç§»æ€æ§ãæ°ã«ããŠããã®ã¯ãã¯ãã·ã§ã«ã¹ã¯ãªããã®äžçã ããšèšã£ãŠãéèšã§ã¯ãªããããããŸããããã¡ããä»ã®èšèªã§ãèšèªéçºè ãã©ã€ãã©ãªéçºè ã¯ä»ã®ç°å¢ãžã®ç§»æ€æ§ãæ°ã«ããŠããŸããæ°ã«ããŠããç§»æ€æ§ã®åé¡ã解決ããŠãããããããäžè¬ã®ã¢ããªã±ãŒã·ã§ã³éçºè ã¯ç§»æ€æ§ãæ°ã«ããã«ããã§ããã®ã§ãã
POSIXã·ã§ã«ãPOSIXã³ãã³ãã®å€ãã¯ä»ã®UNIXã§äœ¿ããªã
ã·ã§ã«ãUNIXã³ãã³ãã®å€ããç¹ã« POSIX ã³ãã³ãã¯ã©ã®ç°å¢ã§ã䜿ããã®ã§ãUNIX ãã³ããŒã«äŸåããŠããªããšåéãããŠããªãã§ããããïŒ ããã¯éããŸããPOSIX ã®æšæºèŠæ Œãç¹å®ã®ãã³ããŒã«äŸåããŠããªãããšãšãããããã®å®è£ ã UNIX ãã³ããŒã«äŸåããŠããªããã¯æå³ãéããŸããäžéšã®äŸå€ãé€ããŠãããããã® UNIX ãã³ããŒãéçºãã UNIX ã³ãã³ãã¯ãããããã® UNIX ã§ãã䜿ããªãïŒä»ã® UNIX ã§äœ¿ãããšãèæ ®ããŠããªãïŒã³ãã³ãã§ããã³ãã³ãåã UNIX ãã³ããŒåºæã§ã¯ãªããšããã ãã§ãå UNIX ãã³ããŒã§ããããå®è£ ãããŠããŸãã
å UNIX ãã³ããŒã®ã·ã§ã«ãããã€ãã®ã³ãã³ã㯠POSIX ã«æºæ ããŠããŸãããPOSIX ãã³ãã³ãã®ä»æ§ãèããŠããã®ä»æ§ã«åŸã£ãŠå UNIX ãã³ããŒãã³ãã³ããéçºããŠããããã§ã¯ãããŸãããé çªãéã§ããã©ããã® UNIX ãã³ããŒãã³ãã³ãã®ä»æ§ãèããŠå®è£ ããä»ã® UNIX ãã³ããŒã䟿å©ã ãããšåã仿§ã§å®è£ ããŸãããããŠããçšåºŠã®ç§»æ€æ§ããã POSIX ã§æšæºåãå¯èœã§ãããšå€æããããã®ãæšæºåããŠããã«éããŸããããã以å€ã¯ UNIX ãã³ããŒåºæã®æ©èœã§ããã ãããUNIXã³ãã³ãã¯ããŸããŸãªæ©èœïŒæ¡åŒµæ©èœãšåŒã°ãããã®ïŒãæã£ãŠããã POSIX ã§æšæºåãããŠãããã®ããç§»æ€æ§ããªãã®ã§ãããã POSIX ã§æšæºåãããŠããã³ãã³ãããã£ãŠããã®éãã«åããŠããªãå®è£ ããã£ããã©ããªããšæããŸãïŒ POSIX ã®æ¹ã仿§ã倿ŽããŠãç°å¢ã«ãã£ãŠåããç°ãªã (unspecified)ããšããæšæºèŠæ Œã«ãªãå ŽåããããŸãã
ã»ãšãã©ã®ã³ãã³ãã®å®è£ 㯠UNIX ãã³ããŒã«äŸåããŠããŸããå ·äœçã«èšããš FreeBSD ã§å®è£ ãããã³ãã³ãããä¿®æ£ãªãã«ãã®ãŸãŸ Linux ã§äœ¿ãããšã¯ååãšããŠåºæ¥ãŸãããããã€ãã®äŸå€ããããŸããmacOS ã§ã¯åºæ¬çã« FreeBSD ã®ã³ãã³ããå°å ¥ããŠããããã« FreeBSD çã®ã³ãã³ããšã ãããåããã®ã䜿ããŸããå®éã«ã¯ macOS åºæã®ä¿®æ£ãå ¥ã£ãŠãããããã®ã§ãmacOS çã®ã³ãã³ã㯠macOS äŸåã®ã³ãã³ãã§ããæã倧ããªäŸå€ã¯ GNU ã³ãã³ãã§ããããããã¯ããŸããŸãª UNIX ã«ç§»æ€ãããŠãããããGNU ã³ãã³ãã¯ç¹å®ã® Linux ã UNIX ãã³ããŒã«äŸåããŠããªãã³ãã³ãã§ãã
UNIXæšæºã®ã·ã§ã«ãã³ãã³ãã䜿ãããç§»æ€æ§ãäœããªã
ã·ã§ã«ã¹ã¯ãªããã¯ãç¹å®ã® UNIX ãã³ããŒäŸåã®ã·ã§ã«ãã³ãã³ããäŸãã° FreeBSD ã§ãã䜿ããªãã·ã§ã«ãã³ãã³ãã«äŸåããããšã§ç§»æ€æ§ãäœããªããŸããããã¯åœç¶ã§ããFreeBSD ã§ãã䜿ããªãã·ã§ã«ãã³ãã³ã㯠Linux ã§äœ¿ãããšãåºæ¥ãªãããã§ãã
UNIX ãã³ããŒäŸåã§ã¯ãªãã·ã§ã«ãã³ãã³ããšããã®ã¯ãäŸãã° bash ã GNU ã³ãã³ãã®ããšã§ãããããã¯ç¹å®ã® UNIX ãã³ããŒã ãã§åãã·ã§ã«ãã³ãã³ãã§ã¯ãªãããããããã UNIX ã Linux ã§åãããã«åããŸãããã®ãããªç¹å®ã®ãã³ããŒã«äŸåããŠããªãã·ã§ã«ãã³ãã³ãã䜿ã£ãŠããã·ã§ã«ã¹ã¯ãªããã¯ç§»æ€æ§ãé«ããªããŸãã
UNIXæšæºã®ã·ã§ã«ãã³ãã³ãã䜿ããšæ¡åŒµæ©èœã䜿ããªã
ã·ã§ã«ã¹ã¯ãªããã®äžè¡ç®ã®ã·ãã³ã«ã¯ /bin/sh ã䜿çšããã»ããè¯ãïŒ ããã¯ç§»æ€æ§ããããã°ééãã§ãããªããªã /bin/sh ã«ã¯ UNIX ãã³ããŒäŸåã®ã·ã§ã«ãã€ã³ã¹ããŒã«ãããŠããå Žåãããããã§ããäŸãã° FreeBSD ã§ã¯ /bin/sh 㯠FreeBSD sh ãšãã FreeBSD äŸåã®ã·ã§ã«ã§ãã
UNIX ãã³ããŒäŸåã®ã·ã§ã«ãã³ãã³ãã䜿ããšãå¥ã®ç°å¢ã§ãåãããã«ããã«ã¯ã©ã®ç°å¢ã§ãåãæžãæ¹ãããªããã°ãããªããªã£ãŠããŸããŸããããã§ UNIX ãã³ããŒã«äŸåããªãã³ãã³ããäŸãã° bash ã GNU ã³ãã³ããã€ã³ã¹ããŒã«ããŠäœ¿ãããã«ããã°ãã©ã®ç°å¢ã§ãåãããã«åãããã®äžã« bash ã GNU ã³ãã³ãã®æ¡åŒµæ©èœã䜿ãããšãåºæ¥ãŸããå¿ èŠãªã®ã¯ bash ã GNU ã³ãã³ããã€ã³ã¹ããŒã«ãããšããç°¡åãªäœæ¥ãè¡ãã ãã§ãã
ããããªãããbash ã GNU ã³ãã³ããã€ã³ã¹ããŒã«ã§ããªããããããªããšããç¶æ³ãå€ã ããããã§ããã€ã³ã¹ããŒã«äœæ¥ãªã㊠UNIX ãã³ããŒãçšæããããã±ãŒãžç®¡çã·ã¹ãã ããç°¡åã«è¡ããããã©ã¡ãã«ããããã±ãŒãžãã€ã³ã¹ããŒã«ããªããã° OS ãªããŠäœ¿ãç©ã«ãªããªãããã§ããã£ããšã€ã³ã¹ããŒã«ããã°è¯ããšæããŸããã©ãããã®ããã« UNIX ãã³ããŒã¯ããã±ãŒãžç®¡çã·ã¹ãã ãçšæããŠããããã§ã
POSIX ã®å®çŸ©ããããã°æ¡åŒµæ©èœã§ãããã·ã§ã«ã UNIX ã³ãã³ãã®æ¡åŒµæ©èœã¯ãUNIX ãã³ããŒãå¿ èŠã ãšèããéèŠãªæ©èœã§ããUNIX ãã³ããŒãéèŠã ãšèããŠè¿œå ããæ©èœããç§»æ€æ§ãèãããšäœ¿ããªããšããæ®å¿µãªããšã«ãªã£ãŠããŸããŸããæ¡åŒµæ©èœã䜿ããªããšããã®ã¯å€§åé¡ãªã®ã§ãã
POSIXãæèããªããšãããªãæç¹ã§ç§»æ€æ§ãäœããšããããšã
ããããç§»æ€æ§ã®å®çŸ©ã§ãããç§»æ€æ§ã¯ãã®ãŸãŸåãããšã§ã¯ãªããç§»æ€ã®ãããããã€ãŸãå¥ã®ã·ã¹ãã ã§åããããã®ä¿®æ£ã®ããããã§ããããã·ã¹ãã éã«å®å šãªäºææ§ãããã°ãç§»æ€ããå¿ èŠã¯ãããŸããããã£ãšãç§»æ€æã«ä¿®æ£ããéšåãå°ãªããã®ã¯ç§»æ€æ§ãé«ãããã§ããã®æãé«ãç¶æ ãä¿®æ£ç¡ãã§ç§»æ€ã§ããããšãšãèšããããã§ãä¿®æ£ããªãã§åãããšãç§»æ€æ§ãé«ããšèšããªãã¯ãããŸããã
ç§»æ€æ§ãæãé«ãç¶æ ãã€ãŸãã·ã¹ãã éã§å®å šãªäºææ§ãããã°ãã·ã§ã«ã¹ã¯ãªãããå«ãã¢ããªã±ãŒã·ã§ã³ã¯äœãä¿®æ£ããã«ãã®ãŸãŸåãããšã«ãªããŸãããç¥ã£ãŠã®éãã·ã§ã«ã¹ã¯ãªããã¯ãäœãä¿®æ£ããã«å¥ã®ã·ã¹ãã ã§åãããšã¯ãŸããããŸãããã ãããã POSIX ã®ç¯å²ã ãã§äœããªããïŒ ãªã©ãšãã話ãã§ãŠããããã§ããã§ã¯ POSIX ã®ç¯å²ã§äœã£ãŠããã°ãã·ã¹ãã éã§å®å šãªäºææ§ããªããŠãïŒã·ã§ã«ã¹ã¯ãªããã¯ïŒåãã®ãïŒãšããã°ããã§ã¯ãããŸããããã㯠POSIX ã®åœ¹ç®ã誀解ããŠããŸãã
POSIX ã¯å®å šã«äºææ§ããã UNIX ãäœãæšæºèŠæ Œã§ã¯ãããŸãããPOSIX 㯠UNIX ã®ä»æ§ã決ããŠãããã®ã§ã·ã§ã«ã¹ã¯ãªãããå«ãã¢ããªã±ãŒã·ã§ã³ãç§»æ€ããã®ã«å¿ èŠãªã€ã³ã¿ãŒãã§ãŒã¹ãå®ããŠããã ãã§ããUNIX ãäœãæšæºèŠæ Œã§ãªããšããããšã®æå³ã¯ãUNIX ã¯ããããã®ãã³ããŒãèªç±ã«äœãããšãã§ããããšãæå³ããŠããŸãããã㊠POSIX 㯠å®å šãªäºææ§ããªã UNIX ã®éã§ç§»æ€ãã€ãŸãä¿®æ£ã®å¿ èŠæ§ããããšèªããäžã§ãç§»æ€ããããããããã®ã¬ã€ãã©ã€ã³ã§ãã
POSIX ã«ã¯ã¢ããªã±ãŒã·ã§ã³ãç§»æ€ããããã«äœã«æ°ãã€ããã°è¯ãããæžãããŠããŸããPOSIX ã¯ç§»æ€æ§ãé«ãã¢ããªã±ãŒã·ã§ã³ãäœãããéçºè ãèªããã®ã§ããã§ãä»ã®ããã°ã©ãã³ã°èšèªã§ã¯ POSIX ãèªãŸãªããŠãç§»æ€æ§ãé«ãã¢ããªã±ãŒã·ã§ã³ãäœãããšãåºæ¥ãŸãããïŒããã¯ä»ã®ããã°ã©ãã³ã°èšèªããå®å šãªäºææ§ããªã UNIX ã·ã¹ãã ã®éããåžåããèšèªä»æ§ãã©ã€ãã©ãªãæã£ãŠããããã§ããOS ã®æ©èœã§ããã·ã§ã«ã UNIX ã³ãã³ããçŽæ¥äœ¿ãã·ã§ã«ã¹ã¯ãªããã¯ãOS ã®éããåžåããŠããªããããç§»æ€ããã®ã倧å€ãªã®ã§ãã
POSIX ã·ã§ã«ã®åé¡ç¹
POSIX ã·ã§ã«ã¯ãã»ãŒäœ¿ãããªããªã£ãå€ã Bourne ã·ã§ã«ã«æ¯ã¹ãŠã·ã§ã«ã¹ã¯ãªãããæžãããããªããŸããããããã§ããŸã æ©èœäžè¶³ã§ããUNIX ã·ã§ã«ã®åŸç¶ã·ã§ã«ãšãªãã¯ãã ã£ã Plan9 ã® rc ã·ã§ã«ã¯ãã£ãšå€ãã®æ©èœããããŸããå°ãªããšããããšåçã®æ©èœã¯äœ¿ããå¿ èŠãããã§ãããã以äžã«æãã POSIX ã·ã§ã«ã®åé¡ç¹ã¯ã»ãã®äžéšã§ãã现ããåé¡ã¯ããã€ããããŸãã
é åã飿³é åã䜿ããªã
ã·ã§ã«ã¹ã¯ãªããã§é
åã飿³é
åã䜿ããªããšããã®ã¯ãããªãã¡ééãã§ã¯ãããŸãããããã¯ããŒã¿ã®è©±ã§ããé
åã飿³é
åã¯ãªãã·ã§ã³ãåŒæ°ãåãæ±ãããã«ãããŸããäŸãã°ã³ãã³ãã©ã€ã³åŒæ°ãã·ã§ã«é¢æ°ã®åŒæ°ã®äœçœ®ãã©ã¡ãŒã¿ $@ ã倿°ã«ããã¯ã¢ããããã«ã¯ã©ããããè¯ãã§ããããïŒ é
åã«å¯Ÿå¿ããŠããã·ã§ã«ã§ã¯ããã ãã§ããé
åã«å¯Ÿå¿ããŠããªãã·ã§ã«ã§ã¯ç°¡åã«ã§ããŸãããïŒè£è¶³ åŒæ°ã«ã¯ã¹ããŒã¹ãå«ãŸããå Žåãããããšãå¿ããªãããã«ïŒ
args=("$@")
rc ã·ã§ã«ã§ã¯å€æ°ã¯ãã¹ãŠé
åã§ããUNIX ã®éçºè
ãã¡ã¯é
åã¯ã·ã§ã«ã«ãã£ãŠäžèŠãªãã®ãšã¯èããŠããªãã£ããšããããšãããããŸããã€ãã§ã«èšããš rc ã·ã§ã«ã¯ = ã®ååŸã«ã¹ããŒã¹ãå
¥ããããšãåºæ¥ãŸãããif ã®çµãã㯠fi ã§ã¯ãªã { ... } ã䜿ããŸãã
var = value
echo $var(1) # => value
var = (foo bar baz)
echo $var(2) # => bar
飿³é åã¯ããã»ã©äœ¿ããŸãããããªãã·ã§ã³ãæ±ããšãã«äœ¿ããŸãã
opts["key"]="value"
bashãkshãzsh ããããé åãšé£æ³é åã«å¯Ÿå¿ããŠããŸããå°ãªããšããããã®ã·ã§ã«ã®éçºè ã¯ã·ã§ã«ã«ãšã£ãŠå¿ èŠãªæ©èœã ãšèããããã§ãããPOSIX ã·ã§ã«ã®ç¯å²ã§ã¯èŠå®ãããŠããŸããã
æåååŠçãæ©èœäžè¶³
POSIX ã·ã§ã«ã§ã®å€æ°å±éæ©èœã®è¿œå ã§åºæ¬çãªããšãã§ããããã«ãªããŸããããããã§ããŸã æ©èœäžè¶³ã§ããäžçªã®åé¡ç¹ã¯çœ®ææ©èœïŒ${VAR//pattern/str}ïŒããªãããšã§ãããã®æ©èœããªãããã«ç°¡åãªåŠçã« sed ã³ãã³ããå¿
èŠã«ãªã£ãŠããŸããŸãã
䞊åå®è¡ãè¡ãã®ãäžäŸ¿
䞊åå®è¡ã¯ä»åŸãŸããŸãéèŠã«ãªã£ãŠããŸãããã·ã§ã«ã«ã¯ç°¡åãªããã¯ã°ã©ãŠã³ãå®è¡ã®æ©èœãããªããäŸãã° CPU ã³ã¢ã®æ°ã ãããã»ã¹ãèµ·åãããšãããããªããšãç°¡åã«ã§ããŸããããããå®çŸããããã« xargs ã³ãã³ãã GNU parallel ãå¿
èŠã«ãªã£ãŠããŸãããæ¬æ¥ã¯ããã»ã¹ç®¡çã¯ã·ã§ã«ãè¡ãã¹ãããšã§ãã
UNIXã³ãã³ãã»POSIXã³ãã³ãã®åé¡ç¹
UNIX ã³ãã³ããšã¯ãUNIX ã«å«ãŸããŠããã³ãã³ãã®ããšã§ããAT&T ãã«ç ç©¶æã§ UNIX ãéçºããããšãããååšããUNIX ã®çºå±ãšãšãã«å°ããã€è¿œå ãããŠãããŸãããUNIX ã³ãã³ãã AT&T ãã«ç ç©¶æã®å€ã§äœ¿ãããããã«ãªããããããã® UNIX ã§ããããäœãããŠãããŸãããããã€ãã®ã³ãã³ãã¯è€æ°ã® UNIX ã§å ±éã«äœ¿ãããŠããäžæ¹ã§ãç¹å®ã® UNIX ãã³ããŒåºæã®ã³ãã³ããäœãããŠãããŸããã
æãçµã¡ãå ã® UNIX ããå«ãŸããŠããã³ãã³ãã¯ãå UNIX ã§ããããä¿®æ£ããåãååã®ã³ãã³ãã§ãããªããç°ãªãåããããããã«ãªããŸããããã®ããã¢ããªã±ãŒã·ã§ã³ïŒã·ã§ã«ã¹ã¯ãªããïŒãç§»æ€ããã®ã次第ã«å°é£ã«ãªã£ãŠãããŸãããããã 1980 幎代ãã 1990 幎代åããŸã§ã®é ã®è©±ã§ããããã§ç»å Žããã®ã POSIX ã§ããPOSIX ã«ãã£ãŠã³ãã³ãã®å ±éããæ©èœãæšæºåãããç§»æ€æ§ãããã·ã§ã«ã¹ã¯ãªãããæžãããã«ã©ã®ãããªããšã«æ°ãã€ããã°ããããããã¥ã¡ã³ãåãããŸãããããããã㯠UNIX ã³ãã³ãã®åé¡ç¹ã解決ãããã®ã§ã¯ãããŸãããPOSIX ã¯ç§»æ€æ§ãããã·ã§ã«ã¹ã¯ãªãããæžãããã®ãã®ã§ããã䜿ãããã UNIX ã³ãã³ããäœã£ãŠãããã®ã§ã¯ãªãããã§ãã
UNIX ã³ãã³ãã»POSIX ã³ãã³ãã«ã¯ããŸããŸãªåé¡ç¹ããããŸãããããã®åé¡ç¹ã¯ãã¹ãŠã§ã¯ãªãããã€ãã®äŸã§ãããããŸããã
UNIXã³ãã³ãã®ä»æ§ã¯å€ãåççã§ãªã
UNIX ã³ãã³ãã®ä»æ§ã¯å€ãæä»£ã«äœããããã®ã§ãããåœæã®ã·ã¹ãã äžã®å¶çŽã«ããå¶éãããšããããäœã£ãŠä¿®æ£ãããªããŸãŸæ®ã£ãŠãããã®ããããŸãã仿§ã«åççãªçç±ããªããã®ãããã€ããããŸããäŸãã° xargs ã³ãã³ãã§ããxargs ã³ãã³ãã®æšæºïŒ-0 ãªãã·ã§ã³ãæå®ããªãïŒå Žåã®ããŒã¿åœ¢åŒã¯ããªãç¹æ®ã§ãxargs çšã®ããŒã¿åœ¢åŒã§åºåããã³ãã³ãã¯ã»ãŒååšããŸããã
OS ã®æšæºã³ãã³ãã¯äºææ§ãä¿ã€å¿ èŠããããããOS ã®äžéšãšãªã£ãã³ãã³ãã®ä»æ§ã¯å®¹æã«å€æŽã§ããªããªããŸããPOSIX ã§æšæºåããããšãªãããã§ããå€ãæ©èœã¯ä¿®æ£ããã«æ®ããæ°ããæ©èœã远å ãããããããŸããããã®çµæ UNIX ã³ãã³ãã®ä»æ§ã¯å€ãåççã§ãªããŸãŸæ®ãç¶ããŠããŸãã
xargs ã³ãã³ãã®è€éæªå¥ãªä»æ§ãç¥ãããæ¹ã¯ãxargs å®å šçè§£ããã¥ã¢ã« - xargs ã¯æ¡åŒµåŒæ° (extended arguments) ã®ç¥ã£ãŠç¥ã£ãŠããŸããïŒããåç §ããŠãã ããã
æ£èŠè¡šçŸãå€ãã³ãã³ãæ¯ã«å¯Ÿå¿ã«éãããã
UNIX ã³ãã³ãã®æ£èŠè¡šçŸã¯ ed ã³ãã³ãã«æåã«å®è£ ããããã®åŸåã³ãã³ãã«è€è£œãããŠãããŸãããå®ã¯æ£èŠè¡šçŸã¯ ed ã³ãã³ããããåã« QED ãšããããã¹ããšãã£ã¿ã§å®è£ ãããŠããŸããå®è£ ããã®ã¯ Unix ãåµå§è ã§ãã Ken thompson ã§ããed ã³ãã³ãã«ã¯ã³ã³ãã¥ãŒã¿ã®æ§èœããå®å šãªæ£èŠè¡šçŸã§ã¯ãªãéå®çãªæ£èŠè¡šçŸãå®è£ ãããŸãããåŸã«ã³ã³ãã¥ãŒã¿ã®æ§èœãåäžãå®å šãªæ£èŠè¡šçŸã egrep ã³ãã³ãã«å®è£ ãããŸããã
ed ãŸã㯠egrep ããå§ãŸããããŸããŸãª UNIX ã³ãã³ãã«äºçš®é¡ã®ç³»çµ±ã®æ£èŠè¡šçŸãåºãŸããŸããããã³ãã³ãããšã§æ©èœãæ¡åŒµãã察å¿ããæ©èœãç°ãªã£ãŠããŸãããããããŸãšã㊠POSIX ã§æšæºåãããã®ãåºæ¬æ£èŠè¡šçŸãšæ¡åŒµæ£èŠè¡šçŸã§ãããã®æŽå²ãããããããã«æ£èŠè¡šçŸã¯ POSIX ã§æšæºåããããã®ã䜿ãããŠããããã§ã¯ãªããPOSIX ãããåã«ããŸããŸãª UNIX ã³ãã³ãã§å®è£ ãããããããã®ã³ãã³ãã§éãããããã®ãªã®ã§ããPOSIX ã¯ç§»æ€æ§ã®èгç¹ããããããŸãšããŸããããåã³ãã³ãã®æ¡åŒµæ©èœã¯åãå ¥ããŸããã§ããã
POSIX ã§æ£èŠè¡šçŸãæšæºåããã以éãæ£èŠè¡šçŸã®é²åã¯æ¢ãŸããŸãããPerl ã«ãã£ãŠæ£èŠè¡šçŸã¯æ Œæ®µã«é²åããŸãããææ°ã®æ£èŠè¡šçŸã¯æ¡åŒµæ£èŠè¡šçŸãããé«åºŠãªæ©èœãæã£ãŠããŸãããUNIX ã³ãã³ãã察å¿ããæ£èŠè¡šçŸã¯å€ããŸãŸã§ããããã«ã³ãã³ãããšã«æ£èŠè¡šçŸã®å¯Ÿå¿ã«éããããããã®éãã«ãã£ãšæ©ãŸããç¶ããŠããŸããæ£èŠè¡šçŸã¯é²åããŸããããUNIX ã³ãã³ãããã㊠POSIX ã³ãã³ãã䜿ãéãããã€ãŸã§ãæ°ããæ£èŠè¡šçŸã䜿ãããšã¯åºæ¥ãŸããã
Unicode ãžã®å¯Ÿå¿ãäžéå端ã§äžè²«æ§ããªã
POSIX ã§ã¯ Unicode ãå«ããã«ããã€ãã®ãã±ãŒã«ã®æåã«å¯Ÿå¿ããããšã«ãªã£ãŠããŸãããçŸå®çã«ã¯å¯Ÿå¿ããŠããªãã³ãã³ãããããŸããåçš Unix ã¯ãããã察å¿ããŠããã¯ãã§ãããLinuxïŒGNU ã³ãã³ãïŒã BSD ç³» Unix ã§ã¯å¯Ÿå¿ããŠããªãå ŽåããããŸããLinux ã BSD ç³» Unix 㯠POSIX ã«æºæ ããŠãããšäž»åŒµããŠãªãã®ã§ãå®å šå¯Ÿå¿ããŠããªããŠããããããã®ãšããŠæ±ããããããŸããã
ããã« Unicode ã¯æ°å¹Žããã«ããŒãžã§ã³ã¢ãããããŸããæåã®ããŒãžã§ã³ã¯ 1991 幎㮠1.0 ã§åé²ãããŠããæå㯠7,129 æåã§ããçŸåšã®ææ°ããŒãžã§ã³ã¯ 2023 幎㮠15.1 ã§åé²ãããŠããæå㯠149,813 æåã§ããåé²ãããŠããæåã®éãã¯ãœãŒãé ãªã©ã«åœ±é¿ããŸãã
ããããã®ç°å¢ã§ Unicode ãžã®å¯Ÿå¿ã¯ç°ãªãããã±ãŒã«ã«åŸãã°ç°å¢ããšã§çµæãç°ãªãå¯èœæ§ãããããã±ãŒã«ã«åŸããªããã°ïŒC ãã±ãŒã«ã§ãã€ããªãšããŠæ±ãïŒãäžæåãäžæåãšããŠæ±ãããšãã§ããŸãããããã解決ãããšæããã C.UTF-8 ãã±ãŒã«ã¯ç°å¢ã«ãã£ãŠå¯Ÿå¿ããŠããªãå ŽåããããŸããã話ãæåã«æ»ããšç°å¢ã«ãã£ãŠãã«ããã€ãã®ãã±ãŒã«ã«å¯Ÿå¿ããŠããªãã³ãã³ãããããŸãã
UNIX ã³ãã³ãã¯ãã«ããã€ããšããæŠå¿µããªãã£ãé ããäºææ§ãä¿ã¡ãªããååšãç¶ããŠããããã®çµæ Unicode ãžã®å¯Ÿå¿ã¯äžéå端ã§äžè²«æ§ããªãç¶æ ã§ãã
ã€ã³ã¿ãŒãããéä¿¡ã®é察å¿
Unix ã¯ã€ã³ã¿ãŒãããããªãæä»£ã«çãŸããŸãããPOSIX ã§ã·ã§ã«ãã³ãã³ããæšæºåããã 1992 å¹Žã®æç¹ã§ãã€ã³ã¿ãŒãããã¯æ®åããŠããªãç¶æ ã§ããPOSIX ã¯ååãšããŠæ¢åã®ã³ãã³ããæšæºåãããã®ã§ããã€ã³ã¿ãŒããããæ®åããŠããªãæä»£ã®è€æ°ã® Unix ã§ãã€ã³ã¿ãŒãããé¢é£ã®ã³ãã³ããåºãæ®åããŠããã¯ãããªãããããã£ãŠ POSIX ã«ã€ã³ã¿ãŒãããé¢é£ã®æ©èœã¯ãããŸããããŸã JSONãHTMLãXML ãšãã£ãã€ã³ã¿ãŒãããã§ãã䜿ãããããŒã¿åœ¢åŒããåŸã§çãŸãããã®ãªã®ã§åœç¶å¯Ÿå¿ããŠããã³ãã³ãã¯ãããŸããã
åçŽãªããã¹ãããŒã¿åœ¢åŒã«ãã察å¿ã§ããªã
Rob Pike ã®ãNotes on Programming in CãïŒäžèšåç §ïŒã«ã¯æ¬¡ã®ãããªã«ãŒã«ããããŸãã
ã«ãŒã«5 éèŠãªã®ã¯ããŒã¿ã§ããããæ£ããããŒã¿æ§é ãéžã³ãç©äºãããŸããŸãšããã°ãã¢ã«ãŽãªãºã ã¯ãããŠãèªæãªãã®ã«ãªããŸããããã°ã©ã ã®äžå¿ã¯ãã¢ã«ãŽãªãºã ã§ã¯ãªããããŒã¿æ§é ã§ããïŒè©³ããã¯ã人æã®ç¥è©±ããåç §ããŠãã ããïŒ
-
Notes on Programming in C
- Cèšèªããã°ã©ãã³ã°ã®èŠãæžãïŒæ¹èš³ïŒ æ¥æ¬èªèš³ ïŒæç« ã¯ããããã®åŒçšïŒ
ã§ã¯ã·ã§ã«ã¹ã¯ãªããã§ãæ£ããããŒã¿æ§é ããéžã¶ããšã¯å¯èœã§ããããïŒ ã«ãŒã«4ã«ã¯ããŒã¿æ§é ãšããŠæ¬¡ã®ãããªãã®ãæžãããŠããŸãã
ã«ãŒã«4 ãã£ãããã¢ã«ãŽãªãºã ã¯åçŽãªã¢ã«ãŽãªãºã ããããã°ãèµ·ããããããå®è£ ãé£ãããã®ã§ããåçŽãªã¢ã«ãŽãªãºã ãšåçŽãªããŒã¿æ§é ã䜿ããŸãããã
ã»ãšãã©ã®å®çšçãªããã°ã©ã ã§ã¯ãæ¬¡ã«æãããªã¹ãã®ããŒã¿æ§é ãããã°ååã§ãã
- é å
- é£çµãªã¹ã
- ããã·ã¥ããŒãã«
- äºåæš
ãã¡ãããããããçµã¿åãããŠè€åããŒã¿æ§é ãäœãèŠæã¯å¿ èŠã§ããäŸãã°ãã·ã³ãã«ããŒãã«ã¯æåã®é åã®é£çµãªã¹ããå«ãããã·ã¥ããŒãã«ãšããŠå®è£ ããããããããŸããã
æŽå²ç㪠UNIX ã³ãã³ãã§æ±ããã®ã¯ãåçŽãªããã¹ã圢åŒãã®ã¿ã§ããæ£ããããŒã¿æ§é ãéžã¶ãšããããã«ã¯ããã€ã ã£ãŠåçŽãªããã¹ã圢åŒãæ£ããããŒã¿æ§é ãªèš³ããããŸãããæ¢åã® UNIX ã³ãã³ãããåçŽãªããã¹ã圢åŒããšããããŒã¿æ§é ããæ±ããªããããšããçç±ã§ãããŒã¿æ§é ãæ±ºããã®ã¯ãããã°ã©ã ã®äžå¿ãã¢ã«ãŽãªãºã ïŒæ¢åã® UNIX ã³ãã³ãã®ä»æ§ïŒã«ãªã£ãŠããããŒã¿æ§é ãäžå¿ã«ã¯ãªã£ãŠããŸããã
UNIX ã³ãã³ãã§ãŸãšãæ±ããã®ã¯è¡ãèŠçŽ ãšã¿ãªããé åã«çžåœããããŒã¿æ§é ãããã§ãããããèŠçŽ ã®äžã«æ¹è¡ãå«ãŸãããšç Žç¶»ããŸããæ°ããã®åœ¢åŒã§ãããã«æååºåãã䜿ãã°ããã«æå以å€ã®ããŒã¿ãæ±ããŸãããäžè¡ã«è€æ°ã®é ç®ãå«ãŸããŠããå Žåã«ã¯ç Žç¶»ããŸãããŸã UNIX ã³ãã³ãã¯ããã¹ããã¡ã€ã«ãåããåŸã«ã¹ããªãŒãã³ã°ã§æ±ãããã«èšèšãããŠããã©ã³ãã ã¢ã¯ã»ã¹ã«åŒ±ãã®ã§ãçµå±ã®ãšãã ãæ£ããããŒã¿æ§é ããéžã¶äžã§ããã¹ããã¡ã€ã«ã«ã¯éçããããŸãã
æŽå²ç㪠UNIX ã³ãã³ãã§æ±ããããã¹ã圢åŒã«ã¯ä»æ§ããããŸãããããããããèšãã° CSV ã TSV ã«å¯Ÿå¿ããã³ãã³ããç¡ããšããããšã§ãããªãã·ã§ã³ã工倫ããã° CSV ã TSV ã£ãœãããŒã¿åœ¢ãæ±ãããšãã§ããŸãããããããã®ã³ãã³ãã§ä»æ§ãäžè²«ããŠããããã§ã¯ãªããããŸããŸãªçœ ããããŸããããŒã¿ã®äžã«ã«ã³ããæ¹è¡ãå«ãŸãã CSV ããŒã¿åœ¢åŒãæ±ãã®ãå°é£ãªã®ã¯èšããŸã§ããªãã§ãããã
æè¿ã® awk ã® CSV 察å¿ïŒ--csv ãªãã·ã§ã³ïŒã«ãã£ãŠããã®åé¡ã¯è§£æ±ºãžãšäžæ©é²ã¿ãŸããããåœç¶ awk ã³ãã³ã以å€ã¯ CSV ã«å¯Ÿå¿ããŠããŸãããUNIX ã³ãã³ãã¯ããã¹ããã¡ã€ã«ãæ±ãããšãã§ããŸãããç¹å®ã®æ§é ãæã£ãè€éãªããã¹ã圢åŒã«ã¯å¯Ÿå¿ããŠããŸããã
æ°ããã·ã§ã«ã¹ã¯ãªããã®äžçã«èµ·ããå€å
ã·ã§ã«ã¹ã¯ãªããã®äžçã¯ãããããå€ããç¶ããŸãããã®å€åãã©ããããã®ã«ãªããã玹ä»ããŸããç¹°ãè¿ããŸããããã¯ç§ã®äºèšãªã®ã§å€ããããšããããŸããããã®ãããªå€åããããªããªããã°ã·ã§ã«ã¹ã¯ãªããã®äžçã¯äŸ¿å©ã«ã¯ãªããŸããã
POSIXæºæ ãæèããå¿ èŠããªãäžçãž
POSIX æºæ ãæèããŠã·ã§ã«ã¹ã¯ãªãããæžãã®ã¯éå¹çã§æéã®ç¡é§ã§ãããªãããªããã°ãªããªããã®ã®äžã€ã§ããä»ã®ããã°ã©ãã³ã°èšèªãšåãããã«ã©ã€ãã©ãªéçºè ãã·ã§ã«ã¹ã¯ãªããã®åéã§èšãã°ãã·ã§ã«èšèªã©ã€ãã©ãªãã³ãã³ãéçºè ã ããæèããã°ååã§ããPOSIX æšæºèŠæ Œæžã¯äžè¬ã®ã·ã§ã«ã¹ã¯ãªããéçºè ãèªããããªãã®ã§ã¯ãããŸããã
POSIX ãæšæºåã®å¯Ÿè±¡ãšããã®ã¯ OS ã€ã³ã¿ãŒãã§ãŒã¹ã ããšããããšãå¿ããªãããã«ããŠãã ãããããŸããŸäŸ¿å©ãªã³ãã³ããããŸããŸãªåªããèšèªããããã POSIX ã§æšæºåãããªãçç±ã¯ OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãªãããã§ããç§»æ€æ§ããªããããšãå£ã£ãŠããããã§ã¯ãããŸãããOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãªãã³ãã³ãã¯å¿ ã䜿ãã®ã§ãPOSIX ã³ãã³ãã ãã䜿ã£ãŠé 匵ããããšãã£ãŠãããã¯äžå¯èœã§ããroot æš©éãå¿ èŠãªã³ãã³ãã POSIX æšæºåã®å¯Ÿè±¡å€ã§ããããã§ã©ããã£ãŠ POSIX ã³ãã³ãã ãã§é 匵ãã°ããã®ã§ããããïŒ
POSIX ã³ãã³ãã«ãªããã®ã¯ C èšèªã䜿ã£ãŠèªåã§ã³ãã³ããäœãïŒ ãã®èªåã§äœã£ãã³ãã³ã㯠POSIX ã³ãã³ãã§ã¯ãããŸãããããC èšèªã§ POSIX API ã䜿ã£ãŠäœãã° POSIX æºæ ã ãã䜿ã£ãŠããïŒ ãããªãèªåã§äœãã誰ããäœã£ãã³ãã³ãã§ã POSIX API ã䜿ã£ãŠããã° POSIX æºæ ã§ããããäžã®äžã«ããããŸããŸãªã³ãã³ããèšèªã¯æçµçã« POSIX API ãåŒã³åºããŠãããã POSIX æºæ ã§ããçµè«ãšããŠã¯ POSIX ã§æšæºåãããŠããªãã³ãã³ããèšèªã®å€ã㯠POSIX ã«æºæ ããŠãããšããããšã§ãããã㊠POSIX ã§æšæºåãããŠããªãã³ãã³ããèšèªã¯ POSIX æºæ ãæèããããšãªã䜿ãããšãåºæ¥ãŸãããªããªãå€ãã®ã³ãã³ããèšèªã¯ OS ã®éããåžåããå±€ãæã£ãŠããããã§ãã
POSIX 㯠OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãšãªãã³ãã³ãããæšæºåããªãã®ã§ãPOSIX ã³ãã³ã㯠OS ã®äžéšãšãããŸããããããã® OS ã«ã¯éãããããŸããã€ãŸã OS ã®äžéšã§ãã POSIX ã³ãã³ããçŽæ¥äœ¿ããš OS ã®éããåžåããå±€ããªãããšãæå³ããŠããŸããã ãã POSIX ã³ãã³ãã䜿ãã·ã§ã«ã¹ã¯ãªãã㯠POSIX æšæºèŠæ Œæžãèªãã§ POSIX æºæ ãæèããªããã°ç§»æ€æ§ãå®çŸã§ããªãã®ã§ããå察㫠OS ã®éããåžåãã POSIX ã§æšæºåãããŠããªãã³ãã³ãã䜿ã£ãŠã·ã§ã«ã¹ã¯ãªãããæžãã° POSIX æºæ ãæèããå¿ èŠã¯ãããŸããã
ãPOSIX ã§æšæºåãããã³ãã³ããèšèªã¯ãããã®ãªãã ããªããªãæšæºåãããŠããããã ããšããçå±ã«åããªãèãæ¹ãæ¹ããç§»æ€æ§ãé«ãã³ãã³ããã€ãŸãå®éã«å€ãã®ç°å¢ã«ç§»æ€ãããŠãã GNU ã³ãã³ãã curl ã³ãã³ãã®ãããªãã®ã䜿ãããšã§ POSIX æºæ ãæèããå¿
èŠããªããªããŸãã
è£è¶³: POSIX ãæ®åããçç±ã®äžã€ã¯ãç±³æ¿åºã«çŽå ¥ããã³ã³ãã¥ãŒã¿ãŒã®èŠä»¶ãšã㊠POSIX ãšã®äºææ§ãèŠæ±ããŠããããã§ãããããããã®èŠä»¶ã¯ 2000幎2æ25æ¥ã«å»æ¢ãããŠãããïŒWithdrawn FIPS Listed by Number [PDF] ããïŒ
åè : https://ascii.jp/elem/000/001/786/1786156/
ãã€ãŠã¯ãç±³æ¿åºã«çŽå ¥ããã³ã³ãã¥ãŒã¿ãŒã¯POSIXãšäºææ§ãæã€å¿ èŠïŒFederal Information Processing StandardsïŒFIPSãFIPS 151-1ïŒ151-2ãPOSIXãšã®äºææ§ãèŠæ±ããŠããïŒããããæã®Windowsã¯POSIXãµãã·ã¹ãã ãå èµããŠããããã®FIPS 151-1/151-2ã¯2000幎ã«å»æ¢ããããããçŸè¡ã®Windowsã¯POSIXãšã®äºææ§ã¯æã£ãŠããªããã¡ãªã¿ã«WSLã¯POSIXãµãã·ã¹ãã ãããŒã¹ã«ããŠäœãããŠããã
ã·ã§ã«ã®éããåžåããã·ã§ã«èšèªã©ã€ãã©ãªã®æ®å
çŸç¶ã® POSIX ã·ã§ã«ã«ã¯ããŸããŸãªåé¡ããããŸããäžã€ã¯æ©èœäžè¶³ã§æå°æ©èœãããããªã POSIX ã·ã§ã«ã§ã¯å®çŸãé£ããããšããããŸãããŸãæ¡åŒµæ©èœãæã£ãã·ã§ã«ã§ãã·ã§ã«ããšã«éãããããŸããbash ãªã©ã®å¥ã®ã·ã§ã«ãå ¥ããã°æ¹åã§ããŸãããéå»ã«äœæããã·ã§ã«ã¹ã¯ãªãããšã®äºææ§ãä¿ã€å¿ èŠæ§ããã·ã§ã«ã倿Žã§ããªãå ŽåããããŸããã·ã§ã«èšèªã©ã€ãã©ãªã®ã¡ãªããã¯ãæ¬äœã®ã·ã§ã«ã¹ã¯ãªããã«ä»ãå ããŠé åžã§ãããããåäžãã¡ã€ã«ã®ã·ã§ã«ã¹ã¯ãªããã«ããããšãã§ããããšã§ãããã€ããªã®å®è¡ãã¡ã€ã«ãå¥ã«ã€ã³ã¹ããŒã«ããå¿ èŠããããŸããã
ã·ã§ã«èšèªã©ã€ãã©ãªã¯ããããã®ã·ã§ã«ã®æ©èœäžè¶³ãã·ã§ã«éã®äºææ§ã解決ããããã®ã©ã€ãã©ãªã§ããJavaScript ã«ããã jQuery ã®ã·ã§ã«ã¹ã¯ãªããçãšèãããšãããããããšæããŸããã·ã§ã«èšèªã©ã€ãã©ãªã¯ååãšããŠã·ã§ã«èšèªã®ç¯å²ã§å®è£ ãããŸãããã®çç±ã¯ã·ã§ã«èšèªã§å®è£ ããªããšã·ã§ã«å€æ°ãã·ã§ã«é¢æ°ãªã©ã«ã¢ã¯ã»ã¹ããããšãã§ããªãããã§ããã·ã§ã«èšèªã®æ©èœãæ¹åããããã®ãã®ãã·ã§ã«èšèªã©ã€ãã©ãªã§ãã
ã·ã§ã«èšèªã©ã€ãã©ãªã¯å€§ããªããŒã¿ãé«éã«æ±ãããšã¯èæ
®ããŸããããå°ããªããŒã¿ã«ãããŠååãªé床ã§åäœããåºæ¬çãªããŒã¿åŠçã¯å€éšã³ãã³ãã«äŸåããã«ããã ãã§è¡ãããšãã§ããŸãããŸã xargs ã³ãã³ããªã©ã«é Œããªãã³ãã³ãã®äžŠåå®è¡ã«ã察å¿å¯èœã§ãã
ã·ã§ã«èšèªã©ã€ãã©ãªã¯æçµçã«ãã©ã³ã¹ãã€ã©ãžãšçºå±ããå¯èœæ§ããããŸãããã©ã³ã¹ãã€ã©ãšãã£ãŠãã·ã§ã«èšèªãå šãå¥ã®èšèªã«ããããã§ã¯ãããŸãããJavaScript ãšäºææ§ããªã CoffeeScript ã倱æããäºææ§ãé«ã TypeScript ãæ®åããæŽå²ã«ç¿ã£ãŠãçŸåšã®ã·ã§ã«èšèªãå°ãæ¹è¯ãããã©ã³ã¹ãã€ã©ã§ããã·ã§ã«èšèªã®é©çšåéãå¢ããããã®ãã®ã§ã¯ãªããäŸãã° bash çšã®ã³ãŒãã dash ã§åãããã«ããçšåºŠã®ã·ã§ã«èšèªãšããŠäŸ¿å©ã«ããããã®ãã©ã³ã¹ãã€ã©ã§ãã
æ±çšã®åºæ¬ã³ãã³ãã®ç»å ŽãšUNIXã³ãã³ãã®äœ¿çšã®æžå°
ã·ã§ã«ã¹ã¯ãªããã®äžçã«ãšã£ãŠäžçªå¿
èŠãªãã®ã¯ãUNIX ã³ãã³ãã眮ãæããæ±çšã®åºæ¬ã³ãã³ãã§ããçŸåšã® UNIX ã³ãã³ããç¹ã« POSIX ã³ãã³ããšåŒã°ãããã®ã¯ OS ã§å¿
èŠãšãªãã³ãã³ãã®ã¿ããéå»ã®äºææ§ãä¿ã¡ãªãããå€ãæä»£ã®ä»æ§ã®ãŸãŸäœ¿ããç¶ããŠããã®ã§éåžžã«äžäŸ¿ã§ãããã¡ãã UNIX ã³ãã³ãã眮ãæããæ°ããã³ãã³ãã¯ããã€ããããŸãããæ®å¿µãªããã³ãã³ãåäœã§åå¥ã«äœãããŠãããã€ãŸã find ã³ãã³ãã眮ãæãã fd ã³ãã³ãã¯ãããŸãããä»ã®ã³ãã³ããšã®çµ±åæ§ã«æ¬ ããŠããŸãã
ããã§ããæ±çšã®åºæ¬ã³ãã³ããšããã®ã¯ãåªãã fd ã³ãã³ããäžèŠã«ãããã®ã§ã¯ãããŸãããåºæ¬ã®ã³ãã³ãã¯åºæ¬ã ããæäŸããŠããã°ååã§ããåºæ¬çãªããšã¯åºæ¬ã³ãã³ãã ãã§ã§ããããã®ããã§éšåçã«é«åºŠãªãã®ã欲ãããã°å°çšã®ã³ãã³ãã䜿ããšããèãæ¹ã§ãã
çŸåšã®ã³ãã³ãã¯å€ãã®æ©èœãæã£ãŠããŸããç¹ã« GNU ã³ãã³ãã¯ããããã®ãªãã·ã§ã³ãæã£ãŠããŸãããªããã®ãããªãªãã·ã§ã³ãæã£ãŠããã®ãïŒ ããã¯ãUnix å²åŠãå¿ããããã§ã¯ãããŸããã äºææ§ãéèŠããããã§ããäŸãã° ps ã³ãã³ãïŒãã㯠GNU ã³ãã³ãã§ã¯ãªã procps ã§ããïŒã¯å€ãã®ãªãã·ã§ã³ãæã£ãŠããŸããããã®çç±ã¯ System V ãªãã·ã§ã³ã BSD ãªãã·ã§ã³ãå®è£
ããŠã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ãé«ããããã§ããPOSIX ã¯ç§»æ€æ§ãé«ããããã«ãæ¢åã®ãªãã·ã§ã³ãšã»ãŒåãæ©èœã®ãªãã·ã§ã³ã倧æåã§è¿œå ãããããšããããŸããäŸãã xargs ã³ãã³ãã® -I ãªãã·ã§ã³ã¯ãæ©èœçã«ã¯æãã -i ãªãã·ã§ã³ãšããŠååšããŠãããã®ã POSIX ã§æšæºåãããªãã·ã§ã³ã§ããPOSIX ã§ã¯ -I ãªãã·ã§ã³ã§ããããããŸã§äœ¿ãããŠãã -i ãªãã·ã§ã³ãåé€ãããšãããŸã§ã®ã·ã§ã«ã¹ã¯ãªãããåããªããªãã®ã§ãGNU xargs 㯠-i ãš -I ã®äž¡æ¹ã®ãªãã·ã§ã³ãæã£ãŠããŸãã
äºææ§ãç§»æ€æ§ã¯éèŠã§ãããã©ããã§åãæšãŠãªããã°ã³ãã³ãã¯è€éã«ãªãäžæ¹ã§ãããã Unix ã³ãã³ããå®ç§ãªã³ãã³ãã§ããã°ãæ©èœã远å ããããšããªãã£ãã§ããããããã§ã¯ãããŸãããããããã® OS ã§å¿ èŠãšèããæ©èœã远å ããå¥ã®å®è£ ã§ã¯ç§»æ€æ§ãé«ããããã«åæ§ã«ãªãã·ã§ã³ã远å ããèãæ¹ã®éãããå°ãç°ãªãæ©èœã§å®è£ ãããããã POSIX ã§å€§æåãªãã·ã§ã³ãšããŠè¿œå ãããUnix ã³ãã³ãã¯ããéçã§ããäºææ§ãä¿ã¡ãªããã·ã³ãã«ã«ããããšã¯ã§ããŸãããæ°ããåºæ¬ã³ãã³ããå¿ èŠã§ãã
æ°ããã³ãã³ãã¯ã€ã³ã¿ãŒãããã®å¯Ÿå¿ãé³å£°ã»ç»åã»åç»ãªã©ã®æšæºåããããã€ããªåœ¢åŒãžã®å¯Ÿå¿ãªã©ãOS ã®ã€ã³ã¿ãŒãããã«ãããããªãã®ã§ã¯ãªãããçŸåšå¿ èŠãšãããæ©èœã«å¯Ÿå¿ããŸããæå€§ã®ããã©ãŒãã³ã¹ãç®æããã®ã§ã¯ãããŸããããçŸåšã®ãã¬ã³ããšããŠãã«ãã³ã¢ CPU ãžã®å¯Ÿå¿ã¯ããããå¿ èŠã§ãããããã«ãã¹ã¬ããã䜿çšããããšã§ã³ãã³ãåäœã§ããã«ãã³ã¢ CPU ãå©çšããŠé«ãããã©ãŒãã³ã¹ãåºãããšãã§ããŸããC èšèªã§ã¯ãªã Rust 補ã Go ã§è£œã«ãªããšæããŸãããåœç¶ POSIX æºæ ãšãªãã®ã§ã©ã®ç°å¢ã§ãåããŸãã
æçµçã«ã¯ OS äŸåãæ¿ãã UNIX ã³ãã³ãã䜿çšããå¿ èŠæ§ã¯ã»ãšãã©ç¡ããªãã§ããããåéãããŠã¯æ¬²ãããªãã®ã¯ UNIX ã³ãã³ãã¯ãªããªããªããšããããšã§ãããã㯠OS ã®äžéšã§ãããªããããšã¯åºæ¥ãŸãããUNIX ã³ãã³ãããªããªããªãã®ã§ããã°ãUNIX ã³ãã³ãã䜿ãç¶ããã°è¯ããšæããããããŸããããäžäŸ¿ãª UNIX ã³ãã³ããããããå ã® 10幎ã20幎ã䜿ãç¶ããããšæããŸããïŒ ç§ã¯å«ã§ããUNIX ã³ãã³ãã¯ç§»æ€æ§ã¯äœã䜿ãã¥ããã OS ã«æšæºçã«ã€ã³ã¹ããŒã«ãããŠããã³ãã³ããšããŠéžæè¢ã®äžã€ãšããŠçãæ®ããŸãã
æ§é åããã¹ã圢åŒãããŒã¿ããŒã¹ãžã®å¯Ÿå¿
æ§é åããã¹ã圢åŒãšã¯åŸæ¥ã®æ§é ããªãããã¹ã圢åŒã®åé¡ã解決ãããã®ã§ããæ§é åããã¹ã圢åŒã®äŸã®äžã€ã¯ CSV 圢åŒã§ãããã¹ãŠã®ã³ãã³ããæ§é åããã¹ã圢åŒã«å¯Ÿå¿ããŸããäŸãã° sort ã³ãã³ãã«å€ããæ°ããäžŠã³æ¿ãã³ãã³ã㯠CSV 圢åŒïŒããŒã¿ã«æ¹è¡ãã«ã³ããå«ãŸãããã®ïŒã«å¯Ÿå¿ããŠããã«ã©ã ãæå®ããŠæ£ãããœãŒããã§ããŸããããã¯çŸåšã® sort ã³ãã³ãã§ã¯äžå¯èœãªããšã§ãã
ããŒã¿ããŒã¹ãžã®å¯Ÿå¿ãå¿
èŠã§ããæ§é åããã¹ã圢åŒã«å¯Ÿå¿ãããšããŠããããŒã¿ããŒã¹ãžã®å¯Ÿå¿ã¯å¿
èŠã§ããäŸãã° RDBMS ã®å€§ããªã¡ãªããã®äžã€ã¯ããŒã¿ããŒã¹ããé çªãšããæŠå¿µãåãé€ããããšã§ããRDBMS ã§ã¯ããŒã¿ã®é çªã¯ããŒãšã€ã³ããã¯ã¹ã«ãã£ãŠéæ¥çã«å®çŸ©ãããŠãããå
éšçã«ãœãŒãæžã¿ã®ããŒã¿ãæã£ãŠããŸããããã«ãããŠãŒã¶ãŒãããŒã¿ã®èšæ¶é ãæèããã«ãé«éãªæ€çŽ¢ãšããŒãã«ã®çµåãå®çŸããŠããŸãããã®ä»ããŒã¿ããŒã¹ã«ã¯æŽåæ§ãç¶æããæ§ã
ãªæ©èœãæã£ãŠããŸããUNIX ã³ãã³ãã«ã join ã³ãã³ããªã©ããŒã¿ããŒã¹é¢é£ã®ã³ãã³ãããããŸããããŠãŒã¶ãŒããœãŒãç¶æ
ãæèããŠå¿
èŠãªå Žåã«èªåã§ãœãŒããè¡ããªããã°ãããŸãããããŒã¿ããŒã¹ãããœãŒãã®æŠå¿µãåãé€ãã«ã¯ããã¹ããã¡ã€ã«ã䜿ã£ãŠããŠã¯å®çŸã¯ã»ãŒäžå¯èœã§ããé«åºŠãªããŒã¿ç®¡çã«ã¯ããŒã¿ããŒã¹ãå¿
èŠã§ãã
å®éã®å®è£ ã§ã¯ãããã SQLite ã䜿ãããšã«ãªãã§ããããããã¯ããŒã¿ããŒã¹ãµãŒããŒãäžèŠã§ãå€ãã®ç°å¢ã§åäœãããã¡ã€ã«ã®ä»£ãããšããŠäœ¿ããé«éãªããŒã¿ããŒã¹ã§ããä»ã®èšèªãšã®çžäºéçšæ§ãé«ããã³ãã³ããçµã¿åãããããã®ã·ã§ã«ã¹ã¯ãªããã«ãšã£ãŠãŽã£ãããªããã°ã©ã ã§ãã
åççã§å®çšçãªUnicode察å¿ãšåœéå察å¿
çŸåšã®ã·ã¹ãã ã§ã¯ Unicode (UTF-8) ãžã®å¯Ÿå¿ã¯äžå¯æ¬ ã§ããä»ã®æåã³ãŒãã UTF-8 以å€ãžã®å¯Ÿå¿ã¯äžå¯èœã§ã¯ãããŸããããiconv ãªã©ã§ååãªã®ã§ããããåºæ¬ã³ãã³ãã«å«ããå¿
èŠã¯ãªãã§ãããã
åççã§å®çšç㪠Unicode 察å¿ãšã¯ãããŒã¿ãšããŠã® Unicode ãšäººãèªã¿æžããã Unicode ããã£ã¡ããšåããŠèããããšã§ããããŒã¿ãšããŠã® Uincode 㯠Unicode ã®ããŒãžã§ã³ã«ã¯äŸåããæåãã³ãŒããã€ã³ããšããŠæ±ããŸããäŸãã°ãœãŒãã®é çªã¯ Unicode ã®ã³ãŒããã€ã³ãã§ç §åé åºãšããæŠå¿µã¯ãããŸããããã®äžæ¹ã§äººãèªã¿æžããã Unicode ã«ã¯ç §åé åºã®èãæ¹ãå¿ èŠã§ããUnicode ã®ããŒãžã§ã³ã®éãã«å¯Ÿå¿ããè€æ°ã®æåã§äžæåã衚ãæåãªã©ãžã®å¯Ÿå¿ãå¿ èŠã§ããåççã§å®çšç㪠Unicode 察å¿ã«äœãå¿ èŠã§ãããã¯ãŸã èãããŸãšãŸã£ãŠã¯ããŸããããäœããããå¿ èŠã¯ãããŸãã
åœéå察å¿ãå¿ èŠã§ããäŸãã°æ°å€ã¯ã©ã®åœã§ã3æ¡åºåããšããããã§ã¯ãããŸããããããåœã§ã¯å°æ°ç¹èšå·ã¯ããªãªãã§ã¯ãªãã«ã³ãã§ãã3æ¡ã®ã«ã³ãåºåãã«ã ã察å¿ããã°è¯ããšããæä»£ã§ã¯ãããŸãããåœéå察å¿ã¯å¿ èŠã§ããåçåããå¿ èŠããããŸããäŸãã°å°æ°ç¹èšå·ã«ã«ã³ããçšããå Žåãå°æ°ãå«ãŸãã CSV 圢åŒã«äžæã察å¿ã§ããŸãããããã¹ã圢åŒãã³ã³ãã¥ãŒã¿ã§åŠçããããã¹ã圢åŒãšäººãèªã¿æžãããããã¹ã圢ãšã§éãããããŸããUNIXã³ãã³ãã®ãã±ãŒã«ãžã®å¯Ÿå¿ã¯çŸåšã¯ã·ã¹ãã äŸåãšãªã£ãŠããŸããç§»æ€æ§ãèãããšã·ã¹ãã ããç¬ç«ãããããšã«ãªãã§ãããã
ãããã« - ã·ã§ã«ã¹ã¯ãªããã¯ã©ãã§ãåãç°¡åã«æžããããã«ãªã
ã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã§æãããšã¯ POSIX ãããã°ãPOSIX ãããã°ãå šãŠã解決ãããã ãšåéãããŠãã人ãå€ãããã«æããããšã§ãããã£ããåæããã° POSIX ãã©ãã§ãåãããšã«å¯ŸããŠå®å šãªè§£æ±ºçã§ã¯ãªãããšãããããšæãã®ã§ãããPOSIX ã¯æšæºèŠæ Œã§ãã£ãŠå®è£ ã§ã¯ãããŸãããUNIX ã®å®è£ ã¯ãã³ããŒããšã«ãã©ãã©ã«éçºãããŠããåããã®ã¯ãããŸããããŸã UNIX ã³ãã³ãèªèº«ãè¯ããã®ã§ã¯ãããŸãããæãããããšããã ãã§ãããããªä»æ§ã§äžéå端ãªãã®ã°ããã§ããOS ã®æ©èœã«äŸåããŠããéã OS ã®éãããéããããšã¯ã§ããŸãããOS ãéãã®ã ããåœããåã®è©±ã§ãããïŒ
POSIX ã§æšæºåãããŠããã·ã§ã«ãã³ãã³ãã®æ©èœãã䜿ããªããšèšã£ãŠããéããã·ã§ã«èšèªãã³ãã³ããé²åããŠãããã®é²åããæ©èœã¯äœ¿ããŸãããå®éã«é²åããã·ã§ã«ã§ãã bash ã®æ¡åŒµæ©èœã䜿ããªãã®ã§ãããïŒ ãã®èšäºã§ç޹ä»ããäºæãå®çŸã§ããã°ãæ®éã«æžããã·ã§ã«ã¹ã¯ãªããã¯ã©ã®ç°å¢ã§ãåãããã«ãªããŸããLinux ã®å Žåãšã macOS ã®å Žåãšãæ°ã«ããå¿ èŠã¯ãããŸããããã®ããã«ã¯ã·ã§ã«ã®éããåžåããã·ã§ã«èšèªã©ã€ãã©ãªãšæ±çšã®åºæ¬ã³ãã³ããéèŠã§ããbash ã®æ¡åŒµæ©èœã¯ã©ã€ãã©ãªãéããŠã©ã®ã·ã§ã«ã§ã䜿ããããã«ãªããŸããããããã§ããã°ã·ã§ã«ã¹ã¯ãªããã¯ãã£ãšç°¡åã«æžããããã«ãªããçç£ã³ã¹ããç§»æ€æ§ã倧ããåäžãããããšãã§ããŸãã
ãããªãã®ãäœããã«ãæ ¹æ¬çã«æ°ããã·ã§ã«ãäœãã°ããã®ã§ã¯ãªãããšèãã人ãããããç¥ããŸããããããæ¹æ³ã®äžã€ã§ãããå®éæ°ããã·ã§ã«ãéçºããŠãã人ã¯äœäººãããŸãããããç§ã¯ããããããã§ã¯ã·ã§ã«ã¹ã¯ãªããã®äžçãå€ããããšã¯åºæ¥ãªããšèããŠããŸãããªããªãäžã®äžã«ã¯å€åããããªã人ãæå€ãšå€ãããããã§ããå€åã¯ãã£ãããšè¡ãå¿ èŠããããŸãããŸãä»ãŸã§ã®ã·ã§ã«ã¹ã¯ãªããã«è¿œå ãã圢ã§ãã·ã§ã«èšèªã©ã€ãã©ãªãåºæ¬ã³ãã³ããçµã¿åãããŠäœ¿ããããã«ããŸããäžæ°ã«å€§ããå€åãããã®ã§ã¯ãªããåŸã ã«å€åãããŠããããšãéèŠã ãšç§ã¯èããŠããŸãã
ä¿å®çãªèãæ¹ã奜ããªäººã¯ãããã¯ããã§ä»ãŸã§éãã®ããæ¹ãç¶ããã°ãããšæããŸããæ°ãããã®ã®æ¹ãçç£ã³ã¹ãã¯äœããªããŸãããåŠã¶ã®ã«ãã³ã¹ãã¯æãããŸãããããæ°ããããšãåŠã³ãããªããšããã®ã§ããã°ãããã¯ãã®äººã®åæã§ããç§ã¯ã·ã§ã«èšèªãé²åãããã¹ãã ãšæã£ãŠããŸãããUNIX ã³ãã³ããé²åãããã¹ãã ãšæã£ãŠããŸãããPlan9 ãéçºããŠãã Unix éçºè ãã¡ã®èãã POSIX æšæºèŠæ Œãæ¹å®ããã®ãšåãããã«å€åãããããšãæã¿ãŸãã