ã¯ããã«
$\color{#e02020}{\huge{\bf{ããã¯åãªããPOSIXæšæºèŠæ Œæžã®çšèªéããããïŒ}}}$
ãšããããšã§ããŸããšãããã« POSIX ãããã¹ããã¡ã€ã«ã®ä»æ§ã決ããŠãããã®ãããªåãæµããŠããŸããïŒç§ãèšã£ãããšãããããïŒïŒãPOSIX ã«ãããã¹ããã¡ã€ã«ã¯æ«å°Ÿã«æ¹è¡ãæžããªããã°ãªããªãããªããŠä»æ§ã¯ãããŸããããŸã POSIX ã¯ãããã¹ããã¡ã€ã«ã®æ«å°Ÿãæ¹è¡ã«ãã¹ãããªã©ãšãèšã£ãŠããŸãããPOSIX ã¯ã3. DefinitionsïŒå®çŸ©ïŒãã§ ãPOSIX æšæºèŠæ Œæžã®äžã§äœ¿çšããŠãããããã¹ããã¡ã€ã«ããšããçšèªã®æ£ç¢ºãªæå³ã¯ã»ã»ã»ã§ããããšèšã£ãŠããã ããªãã§ããçšèªã®æå³ãå®çŸ©ããã ãã§ããããšããã¡ãããš POSIX ã«æžãããŠããŸãã
- âïž POSIXã¯ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãæžããªããã°ãªããªããšæ±ºãã
- â POSIXã§ã¯æ«å°Ÿã«æ¹è¡ããããã®ãããã¹ããã¡ã€ã«ãšåŒãã§ãã
POSIX ã®å®çŸ©ã§ã¯ãæ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ããããã¹ããã¡ã€ã«ãšã¯åŒã³ãŸããããã®ãããªãã¡ã€ã«ããªããšåŒã¶ãã«ã€ããŠã¯ POSIX ã®å®çŸ©ã§ã¯åã«ãã¡ã€ã«ãšåŒã¶ãããã€ããªãã¡ã€ã«ãšåŒã¶ãããªãã®ã§ãããæ¬èšäºã§ã¯ãããã¹ããã¡ã€ã«ãã©ãããšåŒã¶ããšã«ããŸããããã¹ããã¡ã€ã«ãã©ãã¯ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ã®äžéã§ãããçšåºŠããã¹ããã¡ã€ã«ãšåãããã«æ±ãããšãã§ããã POSIX ã§å®çŸ©ãããããã¹ããã¡ã€ã«ã®æ¡ä»¶ãæºãããªããã®ãšããŸãã
POSIX ã³ãã³ãã®äžã«ã¯äžèŠããã¹ããã¡ã€ã«ãèªã¿èŸŒãããã«æããŠããã€ããªãã¡ã€ã«ãããã¹ããã¡ã€ã«ãã©ããèªã¿èŸŒãã³ãã³ãããããŸããã€ãŸãæ«å°Ÿã«æ¹è¡ããããã¡ã€ã«ã«ãã察å¿ããŠããªãããã§ã¯ãããŸãããPOSIXã§ã¯ãããã¹ããã¡ã€ã«ãã©ããããããã¹ããã¡ã€ã«ããšã¯åŒã³ãŸãããããããã¹ããã¡ã€ã«ãã©ããã®äœæãçŠæ¢ããŠã¯ããŸããããã€ããªãã¡ã€ã«ã®äœæã ã£ãŠçŠæ¢ããŠããªãã®ã§ãããåœç¶ã§ãããïŒ
ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå ¥ããçç±ã«ã€ããŠãPOSIX ã§ããæ±ºãŸã£ãŠãããããã§çŽåŸããŠãã人ãå€ãããã§ãããäžæè°ã§ãªããŸãããããã¯ããªãã§ç·åã¯å šå¡äžžåäž»ã§å¥³åã¯å šå¡ããã£ã±ãã£ãŠïŒ æ ¡é·ãããæ±ºãããã ããæ ¡åã§ããæ±ºãŸã£ãŠããããæ ¡åãå®ãïŒããšãã£ãŠããã®ãšåãããšã§ããã«ãŒã«ã§æ±ºãŸã£ãŠãããšããã®ã¯ããªããã®ãããªã«ãŒã«ãæãã®ãã®èª¬æã«ã¯ãªã£ãŠããŸãããã«ãŒã«ãããããåŸã£ãŠããããšããã®ã¯ãèããããšãæŸæ£ããŠããã ãã§ãã
ãã®èšäºã®å 容ã¯ïŒPOSIXïŒæšæºèŠæ Œã®åœ¹å²ãæ£ããçè§£ããã®ã¯é£ãããšãã話ã§ããããŸããPOSIXãããã¹ããã¡ã€ã«ãšããçšèªã®æå³ããã®ããã«å®çŸ©ããçç±ã¯ãPOSIX ã³ãã³ãã®ä»æ§ãæ£ç¢ºã«èšè¿°ããã®ã«éœåãè¯ãããã§ãã人ã ã«ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå ¥ããããã«åŒ·å¶ãããã£ãããã§ã¯ãããŸãããèªç§° POSIX ã®ä»£ç人ã¯ãããã¹ããã¡ã€ã«ã®èŠæ Œã¯ POSIX ãå®ããŠãããã ãã POISX ã«åŸãããªã©ãš POSIX ãèšã£ãŠãããªãããšãèšã£ãŠèªç±ã奪ãããšããŸãããå°æ¥ã®èªç±ã劚ããããšããªãããã«æšæºèŠæ Œãçå®ããŠãã POSIX ã®æ¹éããããã°èŠåœéãããããšãã§ãã
2024-11-13 è¿œèš POSIX æšæºèŠæ Œã¯ ISO ã§ãæ¡çšãããŠããã¬ãã¥ãŒãè¡ãããŠããŸããISO 㯠POSIX æšæºèŠæ Œã®åé¡ãšããŠãDefinitionsãã«å«ãŸããŠããèŠä»¶ãåé€ããããã«èŠæ±ããŸããããã®äºå®ãããçšèªã®å®çŸ©ã¯èŠä»¶ã§ã¯ãªãããšãæããã§ãã
https://www.austingroupbugs.net/view.php?id=1874
In their comment 052 on Issue 8 the ISO editors requested that any requirements stated in definitions be removed. The Austin Group's response was that a change would be considered for the next TC.
åºæ¬ç·š
ããã¡ã€ã«ã®æ«å°Ÿã®æ¹è¡ããšã¯äœã®è©±ïŒ
ãŸããããã¹ããã¡ã€ã«ã®æ«å°Ÿã®æ¹è¡ããäœã®è©±ãç¥ããªã人ã«åããŠãã©ããã話ãªã®ããç°¡åã«èª¬æããŸãããããã¹ããã¡ã€ã«ã®æ«å°Ÿã®æ¹è¡ãã¯å®ã¯æ£ç¢ºãªè¡šçŸã§ã¯ãããŸãããæ£ããã¯ããã¹ãŠã®è¡ã¯è¡æ«ã«æ¹è¡ãå¿
èŠããšãã話ã§ããã€ãŸãããããããšã§ããïŒ<LF> ã¯æ¹è¡ã®æå³ïŒ
line1<LF>
line2<LF>
line3<LF>
ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ããªããšããã®ã¯ããããç¶æ ã®ããšã§ãã
line1<LF>
line2<LF>
line3
ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ããªããšããã®ã¯ãæåŸã®è¡ã ãè¡æ«ã«æ¹è¡ããªããšããããšã§ããäžè²«æ§ããããŸããããïŒ äžè²«æ§ããªãããŒã¿ã¯ããããæ±ãããã®äŸå€çãªåŠçãå¿ èŠãšãªãå Žåãããããã°ãã°ãã°ãåŒãèµ·ããããšããããŸãã
Windows ãŠãŒã¶ãŒã¯ããã¹ããã¡ã€ã«ããã¡ã€ã«å šäœãã²ãšãããŸããšããŠèŠãåŸåããããšæããŸãããUnix ãŠãŒã¶ãŒã¯æŽå²çã«ããã¹ããã¡ã€ã«ãè¡ã®éãŸããšããŠèŠãåŸåã«ãããŸããããã¯å ã UnixïŒ1969幎èªçïŒã CLIïŒã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ïŒæåã§ãããè¡åäœã®åœä»€ã§ã³ã³ãã¥ãŒã¿ãæäœãã OS ãšããŠå§ãŸã£ãŠããããã§ããUnix ãæäœããã³ãã³ãã¯ãã¡ã€ã«ãè¡åäœã§åŠçããŠããŸããããã®ããã«ãªã£ãçç±ã¯ãã¬ã¿ã€ããšããã¿ã€ãã©ã€ã¿ãŒã®ãããªèŠãç®ã®ç«¯æ«ã䜿ã£ãŠããããã§ãããã¬ã¿ã€ãã®åºåã¯ãã£ã¹ãã¬ã€ã§ã¯ãªãå°å·ããããæ¶ãããšãã§ããªãçŽã«å°åãããã«ãŒãœã«ãäžäžå·Šå³ã«èªç±èªåšã«åãããŠæåãæ¶ããããªäœ¿ãæ¹ã¯ã§ããŸããã§ãããããã¹ããšãã£ã¿ã¯ãã®ãããªå¶éãããç°å¢ã§ã䜿ããè¡åäœã§æäœããã©ã€ã³ãšãã£ã¿ã䜿ãããŠããŸããããã®ãããªæä»£ã§ã¯ããã¹ããã¡ã€ã«ãè¡ã®éãŸããšèŠãã®ã¯èªç¶ãªçºæ³ã§ãã
Windows ã®å身ã§ãã MS-DOSïŒ1981幎èªçïŒã®æä»£ã§ã¯ãã§ã«ãã£ã¹ãã¬ã€ãåœããåãšãªã£ãŠãããCLI ã³ãã³ããããã»ã©é«åºŠãªãã®ã§ã¯ãªãã£ãããããã¹ããã¡ã€ã«ãè¡ã®éãŸãã§ãããšããèãæ¹ã¯åžèã§ããã¡ãŒã«ã¯ 80 æåã ã 76 æåã ãã§é©åºŠã«æ¹è¡ãå ¥ãããšèšãããããšããããŸãããã¯ãŒãããªã©ã§ã¯èªåæãè¿ããããŸãæ©èœãããããã«é·ãæç« ã§ãæ¹è¡ãå ¥ããã«å ¥åããŸãããïŒ çŸä»£ã®ããã¹ãææžã¯è¡ã®éãŸãã§ã¯ãããŸãããç¹ã«åèªããã¯ã€ãã¹ããŒã¹ã§åºåããªãæ¥æ¬èªã§ã¯é©åºŠã«æ¹è¡ãå ¥ããææžãç»é¢å¹ ã«å¿ããŠèªåçã«åæ§æããã®ãé£ãããããé©åºŠãªæ¹è¡ã¯ããŸãè¯ããªãçµæããããããŸãã
ãããã¹ããšãã£ã¿ã®ä»æ§ããªããŠãªã
ç§ã®æèŠã¯ãããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå ¥ããæ¹ãè¯ãã ã§ãã
ã§ãããããã¹ããšãã£ã¿ã¯ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå ¥ãã仿§ã«ããªããã°ãããªãããã§ã¯ãããŸãããããã¹ããšãã£ã¿ã¯ POSIX ã§å®çŸ©ããããããã¹ããã¡ã€ã«ãã ãããäœæããŠã¯ãªããªããšããã®ã¯åãªãæã蟌ã¿ã§ããããã¹ããšãã£ã¿ã¯ãããã¹ããã¡ã€ã«ãã©ãããäœæããã£ãŠè¯ãã®ã§ãããªããªããã€ããªãã¡ã€ã«ãäœããããã¹ããšãã£ã¿ã ã£ãŠããã§ããããšã
äŸãã° Visual Studio Code ã¯ïŒä»æ§å€æŽãããŠããªããã°ïŒããã©ã«ãã§ããã¹ããã¡ã€ã«æ«å°Ÿã«æ¹è¡ãèªåã§å ¥ããããšã¯ãããŸãããç§ã¯ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå ¥ããæ¹ãè¯ããšèããŠããããããããã©ã«ãã«ããã¹ãã ãšãæããŸãããVisual Studio Code ãããããªããã°ãããªãçç±ã¯ãããŸããããªããªã Visual Studio Code 㯠POSIX ã§æšæºåãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãªãããã§ããPOSIX æšæºèŠæ Œæžã«ãVisual Studio Code 㯠POSIX ã§å®çŸ©ãããããã¹ããã¡ã€ã«ã ããèªã¿æžãããæ«å°Ÿã«æ¹è¡ãå ¥ããªããã°ãªããªããšæžããŠããªããã®ã§ãã©ã®ãããªä»æ§ã§ã POSIX ã«éåããããšã¯ãããŸãããvi ã ed ã ex 㯠OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãšã㊠POSIX ã§æšæºåãããŠãããããvi ã ed ã ex ã®å®è£ è ã¯ïŒPOSIX ã«æºæ ããããªãïŒPOSIX ã®ä»æ§ã«åŸãå¿ èŠããããŸããããã vi ã ed ã ex 以å€ã®ãããã¹ããšãã£ã¿ã®ä»æ§ããªããŠãã®ã¯ POSIX ã§èŠå®ãããŠããŸãããå®å¿ããŠãã ãããããªããä»ãŸã§ã«ãªãç»æçã§çŽ æŽãããæ©èœãå®è£ ããããã¹ããšãã£ã¿ãéçºãããšããŠãããã« POSIX ããããããåºãŠããŠãPOSIX ãæ±ºãããšããã«äœãïŒãããªæ©èœã远å ãããªïŒããšæå³ããããšã¯ãããŸãããããªãã«ã¯ç¬èªã®ããã¹ããšãã£ã¿ãäœãèªç±ããããŸãã
ããŸããŸãª OS éã§ã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãåäžããã POSIX ããããããã§ Visual Studo Code 㯠Linux ã macOS ã ãã§ã¯ãªã FreeBSD ã§ãåäœããŸãããããŠãPOSIX ãåé§ãã OS éã®äºææ§åé¡ãåžåããæè¡ã«ãã£ãŠãVisual Studo Code ã¯ãPOSIX ç°å¢ã§ã¯ãªã Windowsãäžã§ãåããŸãããããïŒvi ã ed ã ex ãšã¯ç°ãªãïŒVisual Studo Code èªäœã¯ OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãšã¿ãªãããŠããªãïŒã¿ãªãããããããªãïŒãã POSIX ã®æšæºåã®å¯Ÿè±¡ã§ã¯ãããŸããããããã GUI é¢é£ã¯ POSIX ã®æšæºåã®å¯Ÿè±¡å€ã§ããVisual Studio Code 㯠POSIX ç°å¢ã ãã§ã¯ãªã Windows ãŸã§å¯Ÿå¿ããŠãããåãªããPOSIX ã®æ³å®ç¯å²ä»¥äžã«ç§»æ€æ§ãé«ããã¢ããªã±ãŒã·ã§ã³ã§ããããã« POSIX ããããããåºãŠããŠãPOSIX ãæ±ºããæ©èœã ãã䜿ã£ãŠäœãïŒWindows å¯Ÿå¿æ©èœã远å ãããªïŒããšæå³ããããšã¯ãããŸãããæ«å°Ÿã«å¿ ãæ¹è¡ãå ¥ããŠããŸããšããå¶éãããããã¹ããšãã£ã¿ã«æ¯ã¹ãŠãæ«å°Ÿã®æ¹è¡ãçç¥ããããšãã§ããããã¹ããšãã£ã¿ã¯ãäž¡æ¹ã«å¯Ÿå¿ããç»æçã§çŽ æŽãããæ©èœãæã£ãããã¹ããšãã£ã¿ãšè§£éããããšãã§ããŸããããã¹ããšãã£ã¿ã®éçºè ã«ã¯èªåãã¡ãäœã£ãããã¹ããšãã£ã¿ã®ä»æ§ã決ããèªç±ããããŸããèšå®ã倿Žããã°èªåã§æ«å°Ÿã®æ¹è¡ãå ¥ããããšãã§ããã®ã§ããã§ååãšããèãæ¹ã¯çè§£ã§ãããã®ã§ãã
äžã€ç¢ºããªããšã¯ãPOSIX ãæã¡åºããŠããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãããããšèŠæ±ããã®ã¯äžåœã§ããããšããããšã§ãããœãããŠã§ã¢ã®éçºè ã« POSIX ã«åŸããªããã°ãªããªã矩åã¯ãããŸãããå€ãã®éçºè ã¯ãPOSIX ãããåªãããã®ãäœãããã«ãæ£åœãªçç±ããããšèããã° POSIX ããéžè±ããå®è£ ãè¡ããŸããäŸãã° GNU ã¯ãä»ã®çµç¹ãçºè¡ããæšæºãåœä»€ã§ã¯ãªãææ¡ãšã¿ãªããæšæºãèæ ®ãããåŸãããã§ã¯ãªãããšç«å Žãæç¢ºã«ããŠããŸããLinux ã ãã§ã¯ãªã BSD ç³» Unix ãå«ã POSIX ã®èªèšŒãåããŠããªãã®ã¯è²»çšããããããã ãã§ã¯ãªããPOSIX ã§æ±ºããããããšã ãã¯çµ¶å¯Ÿã«å®ãããšããèããæã£ãŠããªããããšã®çŸãã§ããããéçºè ã«ææ¡ããã®ã§ããã° POSIX ãªã©ãæã¡åºããã«çç±ãèšãã¹ãã§ãããPOSIX ãããèšã£ãŠãããããã¯çç±ã§ã¯ãªããããã POSIX ããšããèšã£ãŠããããšãã§ããããããã®ãããªè©±ã®åã«ããããã POSIX ã¯ããã¹ããã¡ã€ã«ã®æ«å°Ÿãæ¹è¡ã«ããªããã°ãªããªããšèŠæ±ããŠããªããšãã話ãããå¿ èŠããããŸãã
ãã¹ãŠã®è¡ã«æ¹è¡ãå¿ èŠãªæ¬åœã®çç±
äžéšã®ã³ãã³ãã¯è¡æ«ã«æ¹è¡ãããããšãåæã«ããŠãããè¡æ«ã«æ¹è¡ããªãè¡ã¯èªã¿åããªãïŒç¡èŠãããïŒå ŽåããããŒã¿ãšããŠæ£ããæ±ããªãå ŽåããããŸãããã£ããèšãã°ãè¡æ«ã«æ¹è¡ããªããšãã©ãã«ã®å ã«ãªããããããå ¥ããŠããããšããã®ãããã¹ãŠã®è¡ã®è¡æ«ã«æ¹è¡ãå ¥ããã»ããè¯ãæ¬åœã®çç±ã§ãããã®è©±ã« POSIX ã¯é¢ä¿ãããŸããã
è¡æ«ã«æ¹è¡ããªãè¡ãèªã¿åããªãããŒã«ã¯ããã°ãšã¿ãªãããããšããããŸãããå®éã«ã¯è¯ã仿§ã§ããå¯èœæ§ããããŸãããªããªãããã¯ãéåããè¡ãã®å¯èœæ§ãããããã§ããäŸãã°æ¬¡ã®ãããªãã¡ã€ã«åã®ãã¹ãèšè¿°ããããªã¹ãããã£ããšããŸããããããŒã«ã¯ãã®ãªã¹ããåé€ãã¡ã€ã«ãªã¹ããšããŠæ±ããèšè¿°ããããã¹ã®ãã¡ã€ã«ãåé€ãããã®ãšããŸãã
/tmp/file1.txt<LF>
/tmp/file2.txt<LF>
/tmp/file3.txt<LF>
ãããã®ãã¡ã€ã«ãæå³ããªãéä¿¡åæããã£ã¹ã¯å®¹éããã£ã±ãã§æžã蟌ããªãã£ããªã©ã®äœããã®çç±ã§ãéåããŠããŸã£ãããšããŸãã
/tmp/file1.txt<LF>
/tmp/file2.txt<LF>
/tmp/
ãããªã£ãŠããŸããšãããããŒã«ã¯ /tmp ãã£ã¬ã¯ããªä»¥äžããã¹ãŠåé€ããŠããŸããããããŸãããè¡æ«ã®æ¹è¡ã¯ããŒã¿ã®çµç«¯æåãšè§£éããããšãã§ããŸããçµç«¯æåãŸã§èªã¿åããã°è¡ããŒã¿ã¯å®å šã§ãããšèšããŸãããããçµç«¯æåãèªã¿åããªããã°ããŒã¿ã¯äžå®å šã§ãããããè¡æ«ã«æ¹è¡ããªãè¡ã¯ç¡èŠããã®ãå®å šãªä»æ§ãšèšããŸããã€ãŸãã«ãã£ã«ãã£ã«ãã£ããã¿ãŒã³ïŒã®ããã¿ãŒã³ïŒãã®æ®µéã§å®è¡ããã®ã§ãã£ãŠãã«ãã£ã«ãã£ããŠããéã¯ãŸã åãæ¶ããã§ããå ¥åäžã ãšããããšã§ãã
ãœãããŠã§ã¢æ¥çã®ä»æ§ã¯POSIXãäœã£ãŠãããã§ã¯ãªã
ãã®æã®åéãã¯ã ãããããPOSIX ãèãã仿§ã«åŸã£ãŠ Unix ãäœãããŠããããšããåéããåå ã§ããUnix 㯠POSIX ãèªçãããããåãããããŸããPOSIX 㯠Unix ã«å ±éãã仿§ããŸãšãããã®ã§ãããã®éã«ç§»æ€æ§ãããã¢ããªã±ãŒã·ã§ã³ãéçºããããã«ã©ãããŠã仿¹ãªãã£ãéšåã«é¢ããŠã¯ POSIX ã仿§ãçµ±äžããUnix 㯠POSIX ã®ä»æ§ã«åããã圢ã§èª¿æŽãè¡ããŸããããã»ãšãã©ã®ä»æ§ã¯ POSIX ãããåãããã£ã Unix ã®ä»æ§ãããŒã¹ã§ããUnix 㯠POSIX ã«åŸã£ãŠäœãããŠããããã§ã¯ãªããéã« POSIX ã Unix ã«åŸã£ãŠäœãããŠããã®ã§ãã
POSIXã¯ãç§»æ€æ§ããã OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ããæšæºåããŠããå£äœã§ããããœãããŠã§ã¢æ¥çãçè³ã£ãŠããå£äœã§ã¯ãããŸããã
- POSIX ã Unix/Linux ã®ä»æ§ãèããŠäœã£ãŠããããã§ã¯ãããŸãã
- POSIX ãããã°ã©ãã³ã°é¢é£ã®èŠæ Œãäœã£ãŠããããã§ã¯ãããŸãã
- POSIX ããã¡ã€ã«åœ¢åŒã®ä»æ§ãäœã£ãŠããããã§ã¯ãããŸãã
POSIX ã¯ã¢ããªã±ãŒã·ã§ã³ãç§»æ€ããã人ã®ããã« Unix ç³» OS ã®ä»æ§ãããŒã¹ãšã㊠OS ã®ä»æ§ãïŒäœãã®ã§ã¯ãªãïŒæšæºåããŠããã ãã§ããæšæºåãšã¯ OS ã®å®éã®åäœã仿§ãšããŠå®ããããšã§ãPOSIX 㯠Unix ç³» OS ã®åãããšããšã調ã¹ãŠããã®åäœãæ£ç¢ºã«ææžåããŠããŸããããã°ã©ã㯠POSIX æšæºèŠæ Œæžãèªãããšã§ã䜿ã£ãããšããªã OS ã§ãããçšåºŠä»æ§ãææ¡ããããšãã§ããç§»æ€æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãéçºãããããªããŸããPOSIX ã¯ã¢ããªã±ãŒã·ã§ã³ãç§»æ€å¯èœã«ããã«ã¯ã©ãããã°è¯ããïŒ ãšããããã°ã©ãã®æ©ã¿ã«çããããã¬ã€ãã©ã€ã³ã«ãããŸããã
ä»ããæ°ãã OS ãäœãããšæã£ãŠãã人ã«ãšã£ãŠã¯ãããŸãã§ POSIX ãæšæºåãããç§»æ€æ§ã®ãã OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ããšåŒã°ããŠãããã®ãå®è£ ããŠããã°ãæ°ãã OS ã Unix ã«ããªããŠã POSIX ç°å¢çšã«äœãããã¢ããªã±ãŒã·ã§ã³ãæ°ãã OS ã§åããããšãã§ããŸããPOSIX ã Unix ãäœãããã®æšæºèŠæ Œã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãé«ããããã®æšæºèŠæ Œãšããã®ã¯ãããããæå³ã§ããããã¹ããã¡ã€ã«ã®å®çŸ©ãæçµçã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãåäžãããããšãç®çã®å®çŸ©ã§ããéã«èšãã°ç§»æ€æ§ãæ°ã«ããªããªãé¢ä¿ãªã話ã§ãã
POSIX ã®ç®ç㯠OS ã®æ©èœãäœãããšã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã®ç§»æ€æ§ãé«ããããšã§ããã€ãŸãããã°ã©ããéçºããã¢ããªã±ãŒã·ã§ã³ã Linux ã macOS ã FreeBSD ã Solaris ãªã©ã§ïŒãœãŒã¹ã³ãŒããã³ã³ãã€ã«ããŠïŒåãããããããããšã§ããç¹å®ã® OS åºæã®åªããæ¡åŒµæ©èœã POSIX ã§æšæºåãããããšã¯ãªãã®ã§ãPOSIX ã®æ©èœã ãã§ OS ã®èœåãåŒãåºããããããŒããŠã§ã¢ã®æ§èœãåŒãåºãããšã¯ã§ããŸãããããã POSIX ã®éçãªã®ã§ããç§»æ€æ§ãšæ©èœæ§ãæ§èœã¯ãã¬ãŒãã»ãªãã®é¢ä¿ã«ãããããç§»æ€æ§ãéèŠããã®ã§ããã°æ©èœæ§ãæ§èœã¯ç ç²ã«ãªããŸãããã®åé¡ãæ¹åããããã«ãå€ãã®èšèªã§ã¯ã©ãããŒã©ã€ãã©ãªãéçºããããšã§ãOS åºæã®åªããæ¡åŒµæ©èœãåäžã®ã€ã³ã¿ãŒãã§ãŒã¹ã§äœ¿ããããã«ããŠãçç£æ§ãç ç²ã«ããããšãªãæ©èœæ§ãæ§èœãåŒãåºã POSIX ã®éçãä¹ãè¶ããŠããŸããçŸåšã«ãã㊠POSIX ã¯ç§»æ€æ§ãå®çŸããããã®æäœã©ã€ã³ã«éããŸãããçŸå®ã®å®è£ ã¯ãã§ã« POSIX ãé¥ãã«è¶ ããŠããŸãã
誰ããèªåã®ããã¹ããã¡ã€ã«ã®å®çŸ©ãæã£ãŠãã
ããªãã«ãšã£ãŠããã¹ããã¡ã€ã«ãšã¯ã©ã®ãããªãã®ã§ããããïŒ ããããå€ãã®äººã¯ã人ãèªãããã¡ã€ã«ãã§ã¯ãªãããšæããŸããäŸãã°ç«¯æ«ã« cat ã³ãã³ãã§ãã®ãŸãŸåºåããŠããããèªããã°ããã¹ããã¡ã€ã«ãšèããã§ãããããããããã㯠POSIX ã®å®çŸ©ã§ã¯ãããŸãããäŸãã°ä»¥äžã®åºå㯠POSIX ã«ãšã£ãŠã¯ïŒC ãã±ãŒã« = POSIX ãã±ãŒã«ã§ïŒããã¹ããã¡ã€ã«ã§ãã
$ (LC_ALL=C; tr -d '\0' </dev/urandom | fold | head )
(ᅵ3ᅵ Wmg>ᅵᅵᅵOᅵᅵ@e5Cᅵoᅵᅵᅵᅵᅵ,ᅵᅵᅵᅵᅵsᅵZᅵH905ᅵ(/x}ᅵᅵᅵ
Å.mᅵ:
Sᅵᅵᅵ,ɷĹU8ᅵrᅵᅵᅵᅵᅵᅵᅵ|ᅵᅵ7M
NQoV]nᅵNᅵᅵᅵᅵhÞ°HUhᅵᅵnᅵᅵᅵ4ᅵyÄ6Íᅵ|ᅵM
.83ᅵYIᅵ\#ᅵ:ᅵᅵᅵ\ᅵᅵᅵᅵᅵᅵᅵO)ᅵᅵ8ᅵᅵdᅵn"ᅵᅵSᅵᅵᅵᅵ-ᅵᅵlᅵ$á
º ᅵBᅵᅵkᅵ
ᅵ7B>X.5W
4OW<@ᅵVᅵᅵᅵ ᅵᅵᅵ۱ᅵᅵ3ᅵi{ᅵhᅵᅵᅵᅵUᅵᅵᅵlhᅵWᅵ&hᅵ
ᅵ]ᅵᅵ6wxfᅵQjᅵPlH.ᅵ( ᅵNᅵᅵ\ᅵ(.ᅵ)ᅵᅵᅵᅵ+ᅵᅵ ᅵIi<ᅵᅵᅵᅵHᅵS9Z*ᅵᅵPCjxᅵoᅵ5ᅵ82ᅵ
|ᅵÚ[ᅵ4ᅵᅵᅵ.I6ᅵ3ᅵᅵzᅵQMᅵᅵᅵᅵ&ᅵ'eᅵ`8RᅵqᅵᅵᅵᅵᅵᅵᅵiᅵᅵEh"ᅵᅵsᅵ
ᅵᅵʷᅵTᅵF.ᅵϧᅵᅵᅵ>}ᅵ,$ᅵ_[ᅵᅵ:ᅵᅵᅵYpᅵᅵ,2ᅵIK;ᅵC|7ᅵᅵÒᅵ3ᅵᅵᅵd#M2ᅵᅵᅵᅵᅵBJjBᅵᅵᅵÝ
8ᅵᅵAᅵᅵᅵ8jᅵ4ᅵcᅵᅵ<+ᅵ9ᅵËᅵᅵ-`Rᅵ/ᅵ+ᅵᅵᅵᅵC(ᅵᅵᅵᅵT=]
ᅵ`ᅵoᅵ1ᅵT/ᅵᅵwᅵᅵ!Vᅵ5ᅵᅵz[Jᅵ ᅵᅵ|ᅵUᅵᅵ:ᅵQᅵMᅵ]ᅵXᅵ[9Ύᅵ ᅵᅵᅵ\3ᅵ#iᅵ7RᅵOᅵvᅵᅵᅵq(
Ýᅵ@Zoᅵk5ᅵ/kᅵ4>ᅵᅵo;BXiᅵᅵu:ᅵ3ᅵᅵ?-yLtwᅵᅵϧᅵnSy4ᅵ(,ᅵ&ᅵ?q-$ᅵᅵDᅵx`ᅵU
@yᅵ;ᅵ`Vᅵᅵ29**ᅵ=ᅵᅵ#cᅵᅵ;ᅵT8uᅵI^ᅵᅵᅵ#ᅵᅵᅵIᅵᅵʷqᅵᅵ0ᅵCᅵJᅵᅵ4ᅵ_
ᅵ(-),ᅵᅵᅵᅵ
6.2 Character Encoding ãã 0x80 - 0xFF ã®ç¯å²ã POSIX ãã±ãŒã«ã§ characters ã§ãããšè§£éããŠããŸãã
The POSIX locale shall contain 256 single-byte characters including the characters in Portable Character Set and Non-Portable Control Characters , which have the properties listed in 7.3.1 LC_CTYPE .
ããã«ããã€ããªãã¡ã€ã«ã®ãããªåºåã§ããããããã POSIX ã¯ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ãåºå¥ããŠããŸããããã®ããšã¯ã3.387 Text Fileãã®å®çŸ©ã«æç¢ºã«èšãããŠããŸãã
POSIX.1-2024 does not distinguish between text files and binary files
ãããã¹ããã¡ã€ã«ãã®å®çŸ©ã¯äººããããã§ãããããã POSIX ã®ããã¹ããã¡ã€ã«ã®å®çŸ©ãšåäžã®å®çŸ©ã®äººã¯å°ãªãã§ããããå€ãã®äººããæ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ããšåŒãã§ããäºå®ãããæããã§ãã
POSIX ã®ããã¹ããã¡ã€ã«é¢é£ã®çšèªã®å®çŸ©
POSIX ã®ãããã¹ããã¡ã€ã«ããšããçšèªã®æå³ã¯ 3. Definitions ã§å®çŸ©ãããŠããŸããä»åã®è©±ã«é¢é£ãããå®çŸ©ããšããããæç²ããŸãã
3.164 ããã¡ã€ã«ãã¯æžã蟌ã¿ãŸãã¯èªã¿èŸŒã¿ããŸãã¯ãã®äž¡æ¹ãå¯èœãªãªããžã§ã¯ã
3.164 File
An object that can be written to, or read from, or both. A file has certain attributes, including access permissions and type. File types include regular file, character special file, block special file, FIFO special file, symbolic link, socket, and directory. Other types of files may be supported by the implementation.
3.387 ãããã¹ããã¡ã€ã«ãã¯0è¡ä»¥äžã®æåãå«ããã¡ã€ã«
3.387 Text File
A file that contains characters organized into zero or more lines. The lines do not contain NUL characters and none can exceed {LINE_MAX} bytes in length, including the <newline> character. Although POSIX.1-2024 does not distinguish between text files and binary files (see the ISO C standard), many utilities only produce predictable or meaningful output when operating on text files. The standard utilities that have such restrictions always specify ``text filesââ in their STDIN or INPUT FILES sections.
3.185 ãè¡ãã¯æ¹è¡ã§çµãã0æå以äžã®æåã®äžŠã³
3.185 Line
A sequence of zero or more non-<newline> characters plus a terminating <newline> character.
3.58 ãæåãã¯æåã»ããã衚çŸãã1ãã€ã以äžã®äžŠã³
3.58 Character
A sequence of one or more bytes representing a member of a character set.Note: This term corresponds to the ISO C standard term multi-byte character, where a single-byte character is a special case of a multi-byte character. Unlike the usage in the ISO C standard, character here has no necessary relationship with storage space, and byte is used when storageãspace is discussed. See the definition of the portable character set in Section 6.1 (on page 117) for a further explanation of the graphical representations of (abstract) characters, as opposed to character encodings.
3.61 ãæåã»ãããã¯ããŒã¿ã衚çŸããããã®ç°ãªãæåã®ã»ãã
3.61 Character Set
A finite set of different characters used for the representation, organization, or control of data.
3.63 ãæååãã¯ãã«ãã€ãã§çµäºãããã«ãã€ããå«ãæåã®äžŠã³
3.63 Character String
A contiguous sequence of characters terminated by and including the first null byte.
3.172 ãäžå®å šãªè¡ãã¯ãã¡ã€ã«ã®æåŸã®1æå以äžã®æ¹è¡ã§ã¯ãªãæåã®äžŠã³
3.172 Incomplete Line
A sequence of one or more non-<newline> characters at the end of the file.
ããã ãç®æ¡æžãã«ããã°ãæããã人ã¯ããããããã¯çšèªéã ããšæ°ã¥ããã®ã§ã¯ãªãããšæããŸãã
POSIXã¯ãããã¹ããã¡ã€ã«ãã®èŠæ Œãäœã£ãã®ã§ã¯ãªã
POSIX ã«ãã®ããã«ãå®çŸ©ããããŠããããšããããããããã¹ããã¡ã€ã«ã®ä»æ§ãèŠæ Œã ãšããåéããããŠããŸãããPOSIX ã®ããã¹ããã¡ã€ã«ã®å®çŸ©ã¯ä»æ§ãèŠæ Œã§ã¯ãããŸããããããããã仿§ã§ãããªãã°ãshallïŒããªããã°ãªããªãïŒãããshouldïŒããã»ããããïŒãã®ãããªèšèãå«ãŸããŠããã¯ãã§ãããããããã¹ããã¡ã€ã«ã®å®çŸ©ã«ã¯ shall ã should ã䜿ãããŠããŸãããã ãããããã¯ä»æ§ã§ã¯ãªãã®ã§ãã仿§ã§ã¯ãªããšããããããã¯äœãªã®ã§ããããïŒ
ãã®çãã¯ããããæžãããŠããããŒãžã®ã¿ã€ãã«ã®ãšããã§ããã3. Definitionsãã§ããããïŒ ãããããã¯ãPOSIX ã䜿çšããŠããçšèªã®å®çŸ©ããªã®ã§ããããŒãžã«ãããã«ã¯ããæžãããŠããŸãïŒå€ªåã¯ç§ã«ãããã®ïŒã
- Definitions
For the purposes of POSIX.1-2024, the following terms and definitions apply. The Authoritative Dictionary of IEEE Standards Terms, Seventh Edition should be referenced for terms not definedin this section.
倪åéšåã®èš³: POSIX.1-2024 ã®ç®çã®ããã«ã次ã®çšèªãšå®çŸ©ãé©çšãããŸãã
Rationale ã«ã¯ãã®ããã«æžãããŠããŸãã
The definitions in this section are stated so that they can be used as exact substitutes for the terms in text. They should not contain requirements or cross-references to sections within POSIX.1-2024; that is accomplished by using an informative note. In addition, the term should not be included in its own definition. Where requirements or descriptions need to be addressed but cannot be included in the definitions, due to not meeting the above criteria, these occur in the General Concepts chapter.
倪åéšåã®èš³: ãã®ã»ã¯ã·ã§ã³ã®å®çŸ©ã¯ãæ¬æäžã®çšèªã®æ£ç¢ºãªä»£æ¿ãšããŠäœ¿çšã§ããããã«èšèŒãããŠããŸããïŒè£è¶³: è§£éãé£ãããæ®ãã®éšåã«ã¯ãå®çŸ©ã«ã¯èŠæ±äºé ãå«ãŸãªãããšæžããŠããããã«èªã¿åããã®ã§ãããã¹ããã¡ã€ã«ã®å®çŸ©ã«ã¯æ«å°Ÿã«æ¹è¡ãå ¥ããªããã°ãªããªããšããèŠæ±ã¯å«ãŸããŠããªããšè§£éã§ãããããããªãïŒ
POSIX ã¯ãçšèªã®æå³ãæ£ç¢ºã«å®çŸ©ããªããšä»æ§ã®è©±ãã§ããªããããæåã«çšèªãå®çŸ©ããŠããŸãããããæšæºèŠæ Œã®æåã®æ¹ã«ããã3. Definitionsãã§ãããã®æ®µéã§ã¯ä»æ§ã®è©±ã¯ãŸã å§ãŸã£ãŠããŸãããçšèªã®å®çŸ©ã ããèŠããããŠããããã POSIX ã®ããã¹ããã¡ã€ã«ãšããçšèªã®å®çŸ©ã§ããããšã¯ããã£ããããã§ããã¹ããã¡ã€ã«ãã©ãããã®ããïŒããšèšãããšããã§ããŸããã
POSIX ã¯ã³ãã³ãã®åäœãæ£ç¢ºã«èª¬æããããã«çšèªã®æå³ãå®çŸ©ããã®ã§ãã£ãŠãããã¹ããã¡ã€ã«ã®ä»æ§ãèŠæ Œã決ããã®ã§ã¯ãããŸãããã©ããã§ãæ«å°Ÿãæ¹è¡ã§çµãããªããã¡ã€ã«ãããã¹ããã¡ã€ã«ãšèªããã¹ãã ããšããæèŠãèŠãããŸãããããããããã¹ããã¡ã€ã«ã®å®çŸ©ã«ããŠããŸããšã³ãã³ãã®åäœãæ£ç¢ºã«èª¬æããã®ãé¢åã«ãªã£ãŠããŸããŸãããªããªãããã®ã³ãã³ãã¯ããã¹ããã¡ã€ã«ãèªã¿èŸŒãããæ«å°Ÿã®æ¹è¡ã¯å¿ é ã§ããããšæ¯å説æããªããã°ãªããªããªãããã§ãã
POSIX ã®çšèªã®å®çŸ©ã¯ãPOSIX æšæºèŠæ Œã§äœ¿çšããããã«å®çŸ©ããããã®ã§ããå¯äžã®æ£ããå®çŸ©ãšããããã§ã¯ãããŸãããäŸãã°èŸ²ææ°Žç£çã¯ã€ããŽã¯éèãšå®çŸ©ããŠããŸãããããã¯èŸ²ææ°Žç£çã®å®çŸ©ã§ãã£ãŠãç§ãã¡ã®äžè¬çãªå®çŸ©ã§ã¯ãããŸãããèŸ²ææ°Žç£çã®å®çŸ©ãçç±ã«ãã€ããŽã¯éèãšæ±ºãŸã£ãŠããã ããéèã³ãŒããŒã«çœ®ãïŒããšã¯ã¬ãŒã ãèšã£ãŠãã人ããããšããããããªãã¯ããæãã¯ãã§ãã
ãåãããæãããªããããªãã ãã ãåãäžã§ã¯ãª (-â¡ÐŽâ¡-)
ã¡ãªã¿ã«ç±³åœã§ã¯ã€ããŽã¯æç©ã§ããããã¥ãŠãªããã¹ãæç©ã ããã§ããæç©ãããã¹ããã¡ã€ã«ãäžéäžè¬ã®å®çŸ©ã¯ããŸããŸã§çµ±äžãããŠããŸãããã ãã仿§ãšããå³å¯ãªè©±ããããšãã«ã¯æåã«çšèªã®æ£ç¢ºãªæå³ãå®çŸ©ãããå¿ èŠããããŸããPOSIX ã®çšèªã®å®çŸ©ã¯ãPOSIX ãäžã®çãäžçã®å®çŸ©ã§ãããªããPOSIX 以å€ã®äžéäžè¬ã®ããã¹ããã¡ã€ã«ã®å®çŸ©ã«ãŸã§åœ±é¿ãäžãããã®ã§ã¯ãããŸããã
ããã¹ããã¡ã€ã«ã®å®çŸ©ãã¡ãããšèªãã
POSIXã®çšèªã®å®çŸ©ãåŒçšããŠãããšããã¯ããã€ãããã®ã§ãããã¡ãããšèªãã§ããïŒãšæãããšããããããŸããPOSIX ã®ããã¹ããã¡ã€ã«ã®å®çŸ©ãç®æ¡æžãããšãããªããŸãã
- æåãå«ãŸãã 0 è¡ä»¥äžã®è¡ã§æ§æããããã¡ã€ã«ïŒç©ºãã¡ã€ã«ãå«ãïŒ
- è¡ã¯ãã«æåãå«ãŸãªã
- è¡ã¯æ¹è¡ãå«ã㊠LINE_MAX ãã€ããè¶ ããªã
- POSIX ã§ã¯ããã¹ããã¡ã€ã«ãšãã€ããªãã¡ã€ã«ãåºå¥ããŠããªã
- å€ãã®ãŠãŒãã£ãªãã£ã¯ããã¹ããã¡ã€ã«ãæäœãããšãã«ã®ã¿äºæž¬å¯èœãŸãã¯æå³ã®ããåºåãçæãã
- ãã®ãããªå¶éãæã€æšæºãŠãŒãã£ãªãã£ã¯ STDIN ãŸã㯠INPUT FILES ã»ã¯ã·ã§ã³ã§åžžã«ãããã¹ããã¡ã€ã«ããæå®ãã
ãããã®é ç®ã¯ãã¹ãŠéèŠã§ããããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå¿ èŠãšãããšããã ããèªãã§ããã®ä»ã®éèŠé ç®ãèªã¿é£ã°ããŠããŸãããïŒ
1è¡ã2048ãã€ããè¶ ãããããã¹ããã¡ã€ã«ã§ã¯ãªã
POSIX ã®ããã¹ããã¡ã€ã«ã®å®çŸ©ã§ã¯ 1 è¡ã¯ LINE_MAX ãã€ã以å
ã§ããLINE_MAX ãã€ãã®å€ã¯ç°å¢äŸåã§ããPOSIX ãšããŠã¯æäœ 2048 ãã€ããšããããšã«ãªã£ãŠãããLinuxãmacOSãåBSD UnixãSolaris ã§èª¿ã¹ãæããã¹ãŠ 2048 ãã€ãã§ããããããã£ãŠäºå®äž 2048 ãã€ããè¶
ããè¡ããã£ããããã®ãã¡ã€ã«ã¯ããã¹ããã¡ã€ã«ã§ã¯ãªããšããããšã«ãªããŸãã
$ getconf LINE_MAX
2048
2048 ãã€ã㯠UTF-8 ã§æ¥æ¬èªã® 1 æåã 3 ãã€ããšä»®å®ããŠèšç®ãããš 682 æåã§ããåçš¿çšçŽ 1.5 æåãæè¡æžã ãšåããŒãžçšåºŠã®éã§ããäžæ®µèœã®ç®å®ã¯å€ããŠã 300 æåããããéçãªãããªã®ã§æ®éã®ããã¹ãææžã§åé¡ã«ãªããšã¯æããŸããããCSV ã JSON Lines ã®ãã㪠1 è¡åäœã§è€æ°å±æ§ã®ããŒã¿ãæã€ãããªããã¹ãããŒã¹ã®ããŒã¿åœ¢åŒã®å Žå㯠2048 ãã€ããè¶ ããããšãããã§ãããããã®ãããªé·ãè¡ãå«ãŸãããã¡ã€ã«ã¯ POSIX çã«ã¯ããã¹ããã¡ã€ã«ã§ã¯ãããŸãããããããããã¹ããã¡ã€ã«ã¯ 1 è¡ã®é·ãã 2048 ãã€ããŸã§ã«ããïŒããšèšã£ãŠãã人ã¯ããªãã ãèŠãããããšããããŸããã
ã¡ãªã¿ã« LINE_MAX ã®å€ãã©ããã¹ããã«ã€ããŠã¯éå»ã«è°è«ã«ãªã£ãããã§ãããã®è©³çްã«ã€ããŠã¯ C.1.3 Utility Limits ãåç
§ããŠãã ãããäžéšã®äººã
㯠1 è¡ã®é·ãã«ã€ããŠå¶éãªããæ±ããŸããããæŽå²çãªãŠãŒãã£ãªãã£ã¯åºå®ãµã€ãºã®ãããã¡ã䜿çšããŠãããããïŒC èšèªã§åºå®ãµã€ãºã®ãããã¡ã®å®è£
ãç¡å¶éã«äœãå€ããã®ã¯å€§å€ãªã®ã§ïŒãã®åХ忡ãšããŠåœæãšããŠã¯å€§ããã® 2048 ãã€ããéžã°ããããã§ããä»ã ãšããå°ã倧ãããŠãè¯ãã£ãã®ã§ã¯ãªãããšèãããããããŸãããããããæ±ºãããã 1990 幎é ã®æ§èœãäœãã³ã³ãã¥ãŒã¿ã§ã¯ãå°ããããã¡ã¢ãªäœ¿çšéã®è² æ
ã«ãªããªãçŸå®çãªãµã€ãºã ã£ãã®ã§ãããã
LINE_MAX ã¯ãåã³ãã³ãã䜿çšãããããã¡ã®ãµã€ãºã®èŠä»¶ã§ã¯ãããŸãããã€ãŸããããã¡ãµã€ãºã 2048 ãã€ãã«ããªããã°ãããªããšããæå³ã§ã¯ãªããå®éã®ã³ãã³ãã¯ããå€ãã®ãµã€ãºãæ±ããããã«ããŠæ§ããŸããããããããããšãæšå¥šãããŠããŸãããã®ããšããªã³ã¯å
ã«æèšãããŠããŸãã
it may not be a good idea to allocate blindly a buffer for an input line based on the value of {LINE_MAX}, for instance.
LINE_MAX ã®å€ã¯ãPOSIX ã³ãã³ãã䜿çšããŠç§»æ€æ§ãé«ãã¢ããªã±ãŒã·ã§ã³ïŒã·ã§ã«ã¹ã¯ãªããïŒãæžãããšæã£ãŠããããã°ã©ãããïŒPOSIX ã«æºæ ããŠããã·ã¹ãã ã§ïŒå®å¿ããŠã³ãã³ãã«æž¡ãããšãã§ãã 1 è¡ã®æå€§ã®é·ãã ãšããããšã§ãã
åºåã¯2048ãã€ã以å ã«ããå¿ èŠã¯ãªã
LINE_MAX ã¯å
¥åæã®åºå®ã®ãããã¡ãµã€ãºãç±æ¥ã®å¶éã§ãããããåºåã®ãµã€ãºã«ã¯é¢ä¿ããŸãããã€ãŸãã³ãã³ãã®åºå㯠1 è¡ã 2048 ãã€ããè¶
ããŠãæ§ããªããšããããšã§ãã1 è¡ã®åºåãµã€ãºã«å¶éã¯ãããŸããã
It should be noted that {LINE_MAX} applies only to input line length; there is no requirement in POSIX.1-2024 that limits the length of output lines.
POSIX ã§ã¯ awkãsedãpaste ã³ãã³ããäŸã«ã1 è¡ã®é·ãã¯å
¥åãµã€ãºãããé·ããªãå ŽåããããLINE_MAX ãè¶
ããè¡ã«å¯ŸåŠããã®ã¯ã¢ããªã±ãŒã·ã§ã³ïŒã·ã§ã«ã¹ã¯ãªããïŒã®è²¬ä»»ã§ããããšãæç¢ºã«èšãããŠããŸãã
Utilities such as awk, sed, and paste could theoretically construct lines longer than any of the input lines they received, depending on the options used or the instructions from the application. They are not required to truncate their output to {LINE_MAX}. It is the responsibility of the application to deal with this. If the output of one of those utilities is to be piped into another of the standard utilities, line length restrictions will have to be considered; the fold utility, among others, could be used to ensure that only reasonable line lengths reach utilities or applications.
ããããèšããããšã¯ãç§»æ€æ§ãé«ãã·ã§ã«ã¹ã¯ãªãããæžãããšããŠãã人ã¯
sed '...' input.txt | awk '...'
- sed ã³ãã³ãã®å ¥åïŒinput.txtïŒã® 1 è¡ã®é·ã㯠2048 ãã€ã以å ã§ããïŒ
- awk ã³ãã³ãã®å ¥åã® 1 è¡ã®é·ã㯠2048 ãã€ã以å ã§ããïŒ
ãèæ ®ããªããã°ãããªããšããããšã§ãããŸããããªããšãæ®éã¯èª°ããããªããšæ³å®ããŸããããïŒ ããã POSIX ãæã¡åºããŠãããã¹ããã¡ã€ã«ã¯ POSIX ã®å®çŸ©ã«åŸã£ãŠæ«å°Ÿãæ¹è¡ã«ããªããã°ãªããªãããšäž»åŒµããã®ã§ããã°ãåãããã«ãããã¹ããã¡ã€ã«ã¯ POSIX ã®å®çŸ©ã«åŸã£ãŠ 1 è¡ã®é·ãã 2048 ãã€ã以å ã«ããªããã°ãªããªãããšäž»åŒµããªããã°ãããªãã¯ãã§ããPOSIX ã«æºæ ããŠã·ã§ã«ã¹ã¯ãªãããæžããšããã®ã¯ãããããããšãèããªããã·ã§ã«ã¹ã¯ãªãããæžããšããããšã§ãã
GNUã³ãã³ãã«ã¯ãµã€ãºå¶éã¯ãªã
ïŒãããããã¹ãŠã®ïŒGNU çã®ã³ãã³ãã® 1 è¡ã®é·ãã¯ãäºå®äžã®ç¡å¶éïŒæèŒã¡ã¢ãªéãã¡ã¢ãªã¢ãã«äžã®å¶éã®ã¿ïŒã§ãããã®ããšã¯ GNU ã®ããã¥ã¡ã³ãã«æèšãããŠããŸãã
Though grep expects to do the matching on text, it has no limits on input line length other than available memory, and it can match arbitrary characters within a line. If the final byte of an input file is not a newline, grep silently supplies one. Since newline is also a separator for the list of patterns, there is no way to match newline characters in a text.
GNU grep ã«ã¯æèŒã¡ã¢ãªå®¹é以å€ã®å¶éã¯ãªããæ«å°Ÿã«æ¹è¡ããªãå Žåã¯é»ã£ãŠæ¹è¡ãå ããã
For those who want to write portable sed scripts, be aware that some implementations have been known to limit line lengths (for the pattern and hold spaces) to be no more than 4000 bytes. The POSIX standard specifies that conforming sed implementations shall support at least 8192 byte line lengths. GNU sed has no built-in limit on line length; as long as it can malloc() more (virtual) memory, you can feed or construct lines as long as you like.
GNU sed ã«ã¯è¡ã®é·ãã«ããå¶éã¯ãªããïŒè£è¶³: POSIX ã«ãããš 8192 ãã€ã㯠ãã¿ãŒã³ã¹ããŒã¹ãšããŒã«ã ã¹ããŒã¹ã®ãµã€ãºã§ããã4000 ãã€ããšã¯æŽå²çãªå®è£ ã䜿çšããŠãããµã€ãºãªã®ã§ãGNU ã«ãã説æã¯ POSIX ã®èª¬æãšççŸããŠããïŒ
Length of input record in bytes ULONG_MAX
GNU awk ã«ã¯å ¥åè¡ã®ãã€ãæ°ã®é·ãã«å¶éã¯ãªããïŒãã®ä»ã®å¶éãäºå®äžãªãã詳现ã¯ãªã³ã¯å ãžïŒ
If the final byte of an input file is not a newline, GNU sort silently supplies one. GNU sort (as specified for all GNU utilities) has no limit on input line length or restrictions on bytes allowed within lines.
GNU sort ã¯è¡æ«ã«æ¹è¡ããªãå Žåã¯é»ã£ãŠå ããïŒãã®åäœã¯ POSIX ã§ãèŠå®ãããŠããïŒããŸãïŒãã¹ãŠã® GNU ãŠãŒãã£ãªãã£ã§æå®ãããŠããããã«ïŒå ¥åè¡ã®é·ãã®å¶éã¯ãªã
ãšããããšã§ãGNU ã³ãã³ãã䜿ã£ãŠããéããè¡ã®é·ãã®å¶éã¯ãªãããã§ããïŒè©³ãã調ã¹ãŠã¯ããŸããããã®ä»ã®å®è£ ãè¡ã®é·ãã®å¶éã¯ãªãåŸåã«ããããã§ããïŒ
ãã¡ããå¶éããªãã®ã¯ GNU ã³ãã³ãã§ãã£ãŠãOS æšæºã®ã³ãã³ãã䜿ã£ãŠç§»æ€æ§ãé«ãã·ã§ã«ã¹ã¯ãªãããæžãããšèããŠãã人ã¯ããµã€ãºå¶éãæèããå¿ èŠãããã§ããããå®éã®ã³ãã³ãã«å¶éããããã©ããã¯ãç°å¢äŸåãªã®ã§èª¿ã¹ããããããŸããããã¹ãŠã®ç°å¢ã調ã¹ããšããé¢åãªããšãããªããŠãããããã« POSIX ãæäœã®ãµã€ãºã決ããŠããŸãããããããããã£ãŠ POSIX ã«æºæ ãããããšèŠåŽããŠã·ã§ã«ã¹ã¯ãªãããæžãããããã©ã®ç°å¢ã§ãåãç§»æ€æ§ãé«ã GNU ã³ãã³ããã€ã³ã¹ããŒã«ããŠããŸã£ãã»ããç°¡åã«é«ãç§»æ€æ§ãå®çŸããããšãã§ããŸãã
空ãã¡ã€ã«ã¯ãããã¹ããã¡ã€ã«ãæ±ãããããšã«å€ãã£ã
äžèº«ããªããã¡ã€ã«ã¯ãã¯ãããŠ"ããã¹ã"ãã¡ã€ã«ãªã®ã§ããããïŒ å²åŠçãªè©±ã§ãããPOSIX ã«ãããŠã¯ç©ºãã¡ã€ã«ãããã¹ããã¡ã€ã«ãšããŠæ±ããšå®çŸ©ãããŠããŸãããã®å®çŸ©ã¯ POSIX.1-2008 (Issue 7) ã§å€æŽãããŠããã以åã¯ç©ºãã¡ã€ã«ã¯ããã¹ããã¡ã€ã«ã§ã¯ãããŸããã§ããã
POSIX.1-2001 (Issue 6) ãŸã§  ããã¹ããã¡ã€ã«ã¯ 1 è¡ä»¥äž
A file that contains characters organized into one or more lines.
POSIX.1-2008 (Issue 7) ãã  ããã¹ããã¡ã€ã«ã¯ 0 è¡ä»¥äž
A file that contains characters organized into zero or more lines.
倿Žã®çµç·¯ã¯ïŒAustin Group > Aardvark > Aardvark Defect and Bug Reporting > XCU Defect reportsã®ïŒãEnhancement Request Number 106ãã§æèµ·ãããŠãããçç±ãèŠçŽãããšãdiff ã³ãã³ãã§ç©ºãã¡ã€ã«ããã€ããªãã¡ã€ã«ãšããŠæ¯èŒãããšãã®åºåãè¡ããããšå°ãããæŽå²çãªã³ãã³ãã¯ç©ºãã¡ã€ã«ãããã¹ããã¡ã€ã«ãšããŠæ±ã£ãŠãããã® 2 ç¹ã§ãã
diff ã³ãã³ãã¯ãã€ããªãã¡ã€ã«ãšããŠæ¯èŒããå Žåã«æ¬¡ã®ãããªåºåãè¡ããŸãã
$ diff data1.txt data2.txt
Binary files data1.txt and data2.txt differ
çæ¹ãããã¹ããã¡ã€ã«ã§ãçæ¹ãããã¹ããã¡ã€ã«ä»¥å€ã§ããå Žåãdiff ã³ãã³ãã¯ãã€ããªãã¡ã€ã«ãšããŠæ¯èŒããªããã°ãªããŸããã空ãã¡ã€ã«ããã€ããªãã¡ã€ã«ãšããŠæ±ããªããã°ãªããªãã®ã§ããã°ãPOSIX ã«å³å¯ã«æºæ ãããšäžèšã®ãããªåºåãããªããã°ãªããå·®åãåºåããããšãã§ããªããªã£ãŠããŸããŸãããããå®éã® diff ã³ãã³ãã®å®è£
ã¯æŽå²çã«ãã®ãããªåäœãè¡ã£ãŠããã空ãã¡ã€ã«ãããã¹ããã¡ã€ã«ãšæ±ã£ãŠããŸããã
ãŸããããã¹ããã¡ã€ã«ãæ±ã POSIX ã³ãã³ãã«å¯ŸããŠç©ºãã¡ã€ã«ãèªã¿èŸŒãŸããããšãã§ããªããªã£ãŠããŸããŸããäŸãã°æ¬¡ã®ãããªäŸãèããŠã¿ãŸãã
$ grep "error" /var/log/syslog | sort | uniq
sort ã³ãã³ãã uniq ã³ãã³ãã¯ããã¹ããã¡ã€ã«ãå
¥åããã³ãã³ãã§ããgrep ã³ãã³ãã§ãã°ãã¡ã€ã«ã®äžãã error ãšããæååãå«ãŸããè¡ãæœåºãããšããerror ãèŠã€ãããªããã°åœç¶ grep ã³ãã³ãã¯äœãåºåããŸãããã€ãŸã空ãã¡ã€ã«ãåºåããŸãã空ãã¡ã€ã«ã uniq ã sort ã§åŠçããããšæã£ããšãããã空ãã¡ã€ã«ãããã¹ããã¡ã€ã«ãšèªããªãã®ã§ããã°ã³ãã³ãã®åäœã¯äžå®ãšãªãããã®ãããªäœ¿ãæ¹ã¯ç§»æ€æ§ããªãããé¿ããªããã°ãªããªãããšã«ãªã£ãŠããŸããŸããæŽå²çãªã³ãã³ãã®å®è£
ã¯ç©ºãã¡ã€ã«ãããã¹ããã¡ã€ã«ãšããŠæ±ã£ãŠããŠããã空ãã¡ã€ã«ã®å
¥åã¯äžè¬çãªäœ¿ãæ¹ã§ãããããPOSIX ã¯ãã®çŸå®ãæ£ããæšæºåã§ããŠããªãã£ãããšã«ãªããŸãããããããã¹ããã¡ã€ã«ã®å®çŸ©ã倿Žã«ãªã£ãçç±ã§ãã
Enhancement Request Number 106ã®å 容ïŒå€æŽã®çµç·¯ïŒ
_____________________________________________________________________________
OBJECTION Enhancement Request Number 106
eggert:cs.ucla.edu Defect in XCU diff (text vs binary) (rdvk# 6)
{20060612a} Tue, 13 Jun 2006 06:13:13 +0100 (BST)
_____________________________________________________________________________
Accept_X___ Accept as marked below_____ Duplicate_____ Reject_____
Rationale for rejected or partial changes:
ERN 106 (->interps) AI-192
This needs to be submitted down the interpretations track The standard is clear, standard is wrong, defect, concerns are being forwarded to the sponsors.
_____________________________________________________________________________
Page: 321 Line: 12380 Section: diff
Problem:
Edition of Specification (Year): 2004
Defect code : 1. Error
POSIX says that empty files are not text files, but common practice is to treat empty files as text files. This causes problems, particularly with "diff", but also with other commands.
1. POSIX's exclusion of empty files from the set of text files requires behavior that contradicts all POSIX implementations that I know of. For the following script executed in the POSIX locale:
: > empty
diff empty empty
POSIX requires that the output of "diff" must contain the word "differ" (see XCU page 321 line 12382). I know of no diff implementation that does this; they all output nothing, which is what users expect.
2. Typically, diff implementations sample the first few bytes of a file. If any bytes are zero, they treat the file as binary; otherwise they treat it as text. In contrast, POSIX requires that "diff" must inspect the entire input file and strictly check for any encoding errors or long lines.
3. POSIX says that portable scripts cannot use standard utilities like 'grep', 'sed,', 'sort', etc. on empty files. For example, the command:
grep PATTERN FILE | sort | sed 's/$/./'
does not conform to POSIX if FILE contains no lines that match PATTERN. Yet this sort of shell script programming is very common practice, and POSIX should not say that the behavior is undefined here.
If there is a good reason that empty files are not text files (compatibility with TENEX, perhaps? :-) then this should be clearly documented in the rationale. However, I suspect that whatever reason may have existed long ago, is no longer valid.
Action:
In XBD page 89 line 2824 (definition of Text File), change from:
A file that contains characters organized into one or more lines.
to:
A file that contains characters organized into zero or more lines.
In XCU page 321 line 12380-12382 (Diff Binary Output Format), change
from:
In the POSIX locale, if one or both of the files being compared are not text files, an unspecified format shall be used that contains the pathnames of two files being compared and the string "differ".
to:
In the POSIX locale, if one or both of the files being compared are not text files, it is implementation-defined whether "diff" uses the binary-file output format or the other formats as specified below. The binary-file output format shall contain the pathnames of two files being compared and the string "differ".
In XRAT page 32 lines 1232-1233, change:
The definition allows a file with a single <newline>, but not a totally empty file, to be called a text file.
to:
The definition allows a file with a single <newline>, or a totally empty file, to be called a text file.
STDINãŸãã¯INPUT FILESã»ã¯ã·ã§ã³ãèªãã
ãããã¹ããã¡ã€ã«ãã®å®çŸ©ã¯ãåãªãçšèªã®å®çŸ©ã«éããŸãããã³ãã³ããã©ãããåããããã®ããšããã³ãã³ãã®ä»æ§ã¯ãã³ãã³ãããšã® STDIN ãŸã㯠INPUT FILES ã»ã¯ã·ã§ã³ã«èšãããŠããŸãããããã£ãŠããã¹ããã¡ã€ã«ã®å®çŸ©ã ããç¥ã£ãŠããªãã®åœ¹ã«ãç«ã¡ãŸããã
ã¡ãªã¿ã«ããã¹ããã¡ã€ã«ãåºåããã³ãã³ã㯠STDOUT ã OUTPUT FILES ã»ã¯ã·ã§ã³ã«ãã®ããšãèšèŒãããŠããŸããããã®ãããªã³ãã³ãã¯ãŸãã§ããã€ãŸãå€ãã®ã³ãã³ã㯠POSIX ãå®çŸ©ããããã¹ããã¡ã€ã«ä»¥å€ãåºåããå¯èœæ§ããããšããããšã§ããããã¹ããã¡ã€ã«ãåºåãããšæèšãããŠããã®ã¯ nl ã uuencode ããããã§ããsed ã³ãã³ã㯠STDOUT ã«ã¯æžãããŠããŸããããOUTPUT FILES ã¯ããã¹ããã¡ã€ã«ãšæžãããŠããŸããïŒããã¯ééãã®ãããªïŒïŒã
POSIXã³ãã³ãã®ä»æ§ã説æããããã®ãããã¹ããã¡ã€ã«ã
POSIX ããããã¹ããã¡ã€ã«ããšããçšèªã®æå³ãå®çŸ©ããçç±ã¯ãããã¹ããã¡ã€ã«ããšããçšèªãã³ãã³ãã®åäœã説æããããã«äœ¿ãããã§ããPOSIX ã³ãã³ããã€ãŸãæŽå²ç㪠Unix ã³ãã³ãã®å€ãã¯ããã¹ããã¡ã€ã«ãæ±ãã³ãã³ãã°ããã ãšèããŠãããããããŸããããæå€ãšããã§ã¯ãããŸãããå ¥åãã¡ã€ã«ãšããŠä»»æã®ãã¡ã€ã«åœ¢åŒïŒãã€ããªåœ¢åŒïŒãå ¥åã§ãããš POSIX ã§èŠå®ãããŠããã³ãã³ãã¯çµæ§ãããŸãã
ä»»æã®ãã¡ã€ã«åœ¢åŒãå ¥åã§ããã³ãã³ã
| ã³ãã³ã | ãã¡ã€ã«åœ¢åŒ | è£è¶³ |
|---|---|---|
| cat | ä»»æã®åœ¢åŒ | |
| cksum | ä»»æã®åœ¢åŒ | |
| cmp | ä»»æã®åœ¢åŒ | |
| dd | ä»»æã®åœ¢åŒ | |
| diff | ä»»æã®åœ¢åŒ | |
| file | ä»»æã®åœ¢åŒ | |
| od | ä»»æã®åœ¢åŒ | |
| read | ä»»æã®åœ¢åŒ | |
| sh | ä»»æã®åœ¢åŒ | åé éšåã¯ã·ã§ã«ãè§£éå¯èœãªã³ãŒã |
| split | ä»»æã®åœ¢åŒ | |
| tee | ä»»æã®åœ¢åŒ | |
| tr | ä»»æã®åœ¢åŒ | |
| wc | ä»»æã®åœ¢åŒ |
ãã¡ããããã¹ããã¡ã€ã«ããå ¥åã§ããªãã³ãã³ãããããŸãããã®äžéšã«ã¯ç¹å®ã®ãªãã·ã§ã³ãæå®ãããšãã ãä»ã®åœ¢åŒãæ±ããå ŽåããããŸãã
| ã³ãã³ã | ãã¡ã€ã«åœ¢åŒ | è£è¶³ |
|---|---|---|
| awk | ããã¹ã | |
| bc | ããã¹ã | |
| comm | ããã¹ã | |
| csplit | ããã¹ã | |
| ed | ããã¹ã | |
| expand | ããã¹ã | |
| fold | ããã¹ã | è¡ã®é·ãã«å¶éãªãïŒ-bïŒ |
| grep | ããã¹ã | |
| iconv | ããã¹ã | |
| join | ããã¹ã | |
| more | ããã¹ã | |
| nl | ããã¹ã | |
| sed | ããã¹ã | |
| tsort | ããã¹ã | |
| tail | ããã¹ã | ä»»æã®åœ¢åŒïŒ-cïŒ |
| unexpand | ããã¹ã | |
| uniq | ããã¹ã | |
| xargs | ããã¹ã | ä»»æã®åœ¢åŒïŒ-0ïŒ |
ããã¹ããã¡ã€ã«ããå ¥åã§ããªãããã«æããŠãäžéšã®å¶éãç·©åãããããã¹ããã¡ã€ã«ãã©ããæ±ããã³ãã³ãããããŸãã
| ã³ãã³ã | ãã¡ã€ã«åœ¢åŒ | è£è¶³ |
|---|---|---|
| cut | ããã¹ããã©ã | è¡ã®é·ãã«å¶éãªã |
| ex | ããã¹ããã©ã | äžå®å šãªè¡ã®å Žåã¯æ¹è¡ãå ãã |
| head | ããã¹ããã©ã | è¡ã®é·ãã«å¶éãªããä»»æã®åœ¢åŒïŒ-cïŒ |
| vi | ããã¹ããã©ã | äžå®å šãªè¡ã®å Žåã¯æ¹è¡ãå ãã |
| paste | ããã¹ããã©ã | è¡ã®é·ãã«å¶éãªã |
| sort | ããã¹ããã©ã | äžå®å šãªè¡ã®å Žåã¯æ¹è¡ãå ãã |
ãä»»æã®åœ¢åŒã®ãã¡ã€ã«ããå ¥åã§ããã³ãã³ã
catãcksumãcmpãddãdiffãfileãodãreadãshãsplitãteeãtrãwc ã¯ä»»æã®åœ¢åŒã®ãã¡ã€ã«ïŒãã€ããªãã¡ã€ã«ïŒãå
¥åã§ããããšã POSIX ã§æšæºåãããŠããŸããããã¯ä»»æã®åœ¢åŒã®ãã¡ã€ã«ãå
¥åããå Žåã®åäœãèŠå®ãããŠãããšããæå³ã§ããããã®åäœãçŽåŸã§ãã仿§ã§ãããã¯å¥åé¡ã§ããäŸãã° wc ã³ãã³ãã¯æ«å°Ÿã«æ¹è¡ããªããã¡ã€ã«ã¯ 1 è¡å°ãªãã«ãŠã³ãããããã®ãããªåäœãè¡ããŸãã
# æ«å°Ÿã«æ¹è¡ãããã° 3 è¡ãšã«ãŠã³ããã
printf 'FOO\nBAR\nBAZ\n' | wc -l # => 3
# æ«å°Ÿã«æ¹è¡ããªããã° 2 è¡ãšã«ãŠã³ããã
printf 'FOO\nBAR\nBAZ' | wc -l # => 2
wc ã³ãã³ãã¯æ«å°Ÿã«æ¹è¡ããªãè¡ãã«ãŠã³ãããªããããäžè¬çã«ã¯æ«å°Ÿã«æ¹è¡ã¯å¿
ãå
¥ããå¿
èŠããããšèšãããŠããŸããããã wc ã³ãã³ãã¯åã«æ¹è¡æåã®æ°ãæ°ããã ããªã®ã§ãä»»æã®åœ¢åŒã®ãã¡ã€ã«ãå
¥åããããšãã§ãããšããã®ã仿§ã§ããã¡ãªã¿ã«ãã®ä»æ§ã¯ POSIX ãèæ¡ããããã§ã¯ãããŸãããæŽå²ç㪠wc ã³ãã³ãã®åäœããã®ããã«ãªã£ãŠãããç§»æ€æ§ã®ããã·ã§ã«ã¹ã¯ãªãããæžããã人ã«ãšã£ãŠåœ¹ã«ç«ã€æ
å ±ãšããã®ã¯ãå®éã® wc ã³ãã³ãã®æ£ç¢ºãªåäœã§ãã
äœè«ã§ãããPOSIX ã«å¯ŸããŠãwc ã³ãã³ãã®ä»æ§ã¯åççã§ã¯ãªããã倿ŽããããšèŠæ±ãã人ãããŸããããã POSIX ãæ«å°Ÿã«æ¹è¡ããªããŠãã«ãŠã³ããããšæžãããšããŠãã誰ããããªä»æ§ã§å®è£
ããŠããªãã®ã§ããããç§»æ€æ§ã®ããã·ã§ã«ã¹ã¯ãªããæžãã®ã«åœ¹ã«ç«ã¡ãŸãããããã POSIX ã¯ãã®åäœã«ç§»æ€æ§ããããšåãæžããŠããããšã«ãªããŸããé çªãééããŠã¯ãããŸããããŸã GNU ã BSD ç³» Unix ã System V ç³» Unix ã«èšŽããŠãå®è£
ã倿Žãããããšã§æ¹ã㊠POSIX ã«èŠæ±ããå¿
èŠããããŸãããããé£ãããããšèšã£ãŠãPOSIX ãæªçšããŠå®éã®å®è£
ã«å¯ŸããŠå€æŽããããã«å§åãããããããšã¯èš±ãããŸããã
cat ã³ãã³ãã«ã䌌ããããªåé¡ããããŸãã2ã€ã®ããã¹ããã¡ã€ã«ãããããæ¬¡ã®ãããªæã
foo
bar<LF>
baz
2 ã€ã®ãã¡ã€ã«ãçµåãããšãã®åºåã¯æ¬¡ã®ããã«ãªããŸãã
$ cat file1.txt file2.txt
foobar
baz â æ«å°Ÿã«æ¹è¡ãªã
æ¬æ¥ãcat ã³ãã³ãã¯ãã€ããªãã¡ã€ã«ãå«ããã¡ã€ã«ãçµåããã³ãã³ããªã®ã§ãæ«å°Ÿã«æ¹è¡ãå«ãŸããŠãªãå Žåã«ã¯ããã®ãŸãŸçµåãããŠããŸããŸãã
diff ã³ãã³ãã¯ããã¹ããã¡ã€ã«ãæ¯èŒããã ãã®ããã«æããŸãããå®éã«ã¯ãã€ããªãã¡ã€ã«ãå
¥åããããšãã§ããŸãã
$ head -c 1000 /dev/urandom > data1.bin
$ head -c 1000 /dev/urandom > data2.bin
$ diff data1.bin data2.bin
Binary files data1.bin and data2.bin differ
read ã³ãã³ã㯠POSIX.1-2024 ããåãŸã§ã¯ããã¹ããã¡ã€ã«ã®ã¿ãèªã¿èŸŒããšãã仿§ã§ãããããã POSIX.1-2024 ã§ã¯ãã®ä»æ§ãæ¹ãããããã€ããªãã¡ã€ã«ãããã¹ããã¡ã€ã«ãã©ããå
¥åã§ããããã«ãªããŸããããã®çç±ã®äžã€ã¯ -d ãªãã·ã§ã³ã®è¿œå ã«ããè¡åºåãã®æåãïŒäŸãã° \0 ã«ïŒå€æŽã§ããããã«ãªã£ãããã§ããããã£ãšåïŒãããã Bourne ã·ã§ã«ã®æä»£ïŒãããæ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ãã©ããå
¥åããããšãã§ããŸãããã€ãŸãã以åã®POSIX ã®æšæºåã®å
容ã¯ïŒããã¹ããã¡ã€ã«ããæ±ããªããšããïŒå¿
èŠã®ãªãå¶éããã£ããšããããšã§ãã
# ã·ã§ã«ã§å®è¡ãã cat ã³ãã³ãçžåœã®å®è£
shcat() {
# readã³ãã³ãã¯æ¹è¡ãèªã¿åã£ããçãèªã¿åããªãã£ããåœãšãªã
while IFS= read -r line; do
printf '%s\n' "$line"
done
# æ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ãèªã¿åãããšãã§ãã
# ïŒå€æ°ã«æ«å°Ÿã«æ¹è¡ããªãæçµè¡ãèªã¿åã£ãŠããïŒ
printf '%s' "$line"
}
sh ã³ãã³ãïŒã·ã§ã«ïŒã¯ãã€ããªãã¡ã€ã«ãå
¥åããããšãã§ããŸãããã ãåé éšåã¯ã·ã§ã«ãçè§£ã§ããã³ãŒãã§ãªããã°ãªããŸãããã€ãŸããã®ä»æ§ã¯ã·ã§ã«ã¹ã¯ãªããã®åŸåéšåã«ã·ã§ã«ãå®è¡ããªããã€ããªããŒã¿ãåã蟌ãã§å©çšãããšãããã¯ããã¯ãçŠæ¢ããªãããã®ä»æ§ã§ãã
tr ã³ãã³ãã¯ããã¹ããã¡ã€ã«ãå
¥åããã³ãã³ãã®ããã«æãããããããŸããããå®éã«ã¯ããŒã¿ããã€ããªãšããŠåŠçããããšãã§ããŸããããã¯å
¥åãã¡ã€ã«ã«å«ãŸãã \0 ãåé€ãããããããã«äœ¿ãããšãã§ããŸãã\0 ãå«ãŸãããã¡ã€ã«ã¯ããã¹ããã¡ã€ã«ã§ã¯ãããŸããã
$ tr -d '\0' data.bin
ãããã¹ããã¡ã€ã«ãããå ¥åã§ããªãã³ãã³ã
awkãbcãcommãcsplitãedãexpandãfoldãgrepãiconvãjoinãmoreãnlãsedãtsortãtailãunexpandãuniqãxargs ã¯ããã¹ããã¡ã€ã«ããå
¥åã§ããªããšããå¶éãããã³ãã³ãã§ããããã¹ããã¡ã€ã«ä»¥å€ïŒãã€ããªãã¡ã€ã«ãããã¹ããã¡ã€ã«ãã©ãïŒãå
¥åããå Žåã®åäœã¯ POSIX ã§ã¯èŠå®ãããŠããªããããæçµè¡ã®æ«å°Ÿã«æ¹è¡ããªãå Žåã«ããã®è¡ã¯ç¡èŠãããŠããŸã£ãŠãæå¥ã¯èšããŸããããããã®ã³ãã³ãã®ãã¡ foldãtailãxargs ã¯ç¹å®ã®ãªãã·ã§ã³ãæå®ãããšãã«äžéšã®å¶éãç·©åãããŸãã
ãããã®ã³ãã³ãã®ãã¡ãç¹ã«ãã䜿ãã®ã¯ awkãgrepãsedãtailãuniqãxargs ãããã§ããããããã㯠POSIX ã®èŠå®ã§ã¯ããã¹ããã¡ã€ã«ããå
¥åã§ããªãã®ã§æ³šæããŠãã ãããããã¯ããã¹ããã¡ã€ã«ä»¥å€ãå
¥åããå Žåã®åäœã¯ç§»æ€æ§ããªããšããæå³ã§ããããã¹ããã¡ã€ã«ããå
¥åã§ããªãã®ã§ãç§»æ€æ§ãããã·ã§ã«ã¹ã¯ãªãããéçºãããã®ã§ããã°ãå
¥åãã¡ã€ã«ã® 1 è¡ã®é·ã㯠2048 ãã€ã以å
ã«ããæ«å°Ÿã«ã¯æ¹è¡ãå¿
ãå
¥ããå¿
èŠããããŸãã
ãã ã GNU ã³ãã³ãã®ãããªäžéšã®å®è£
ã§ã¯ããããã®å¶éãç·©åãããŠããå ŽåããããŸããäŸãã° GNU grep ã¯æ«å°Ÿã«æ¹è¡ããªãå Žåã«é»ã£ãŠè¿œå ããããšãããã¥ã¡ã³ãã«æèšãããŠããŸããSolaris 11 ã® /bin/grep ïŒPOSIX æºæ ã§ã¯ãªãïŒã¯æ«å°Ÿã«æ¹è¡ããªãå Žåã«æ¹è¡ã远å ããªãããã§ããã/usr/xpg4/bin/grep ïŒPOSIX æºæ çïŒè¿œå ããããã§ããAIX çã® grep ã§ã¯æ«å°Ÿã«æ¹è¡ããªãå Žåã«è¿œå ãããããã§ãããããã¥ã¡ã³ãã«ã¯ãå
¥åãã¡ã€ã«ã®çµããã«ã¯ãæ¹è¡æåãä»ããŠãã ãããããšæžããŠããã®ã§ãæ«å°Ÿã«æ¹è¡ããªããã¡ã€ã«ãå
¥åããã®ã¯é¿ããã»ããè¯ãã§ãããã
ãããã¹ããã¡ã€ã«ãã©ãããå ¥åã§ããã³ãã³ã
cutãexãheadãviãpasteãsort ã¯ããã¹ããã¡ã€ã«ãã©ããã€ãŸã POSIX ãå®ããããã¹ããã¡ã€ã«ã®æ¡ä»¶ãæºãããªãïŒããã€ããªãã¡ã€ã«ãããå¶éãããïŒãã¡ã€ã«ãå
¥åããå Žåã®åäœãèŠå®ãããŠããã³ãã³ãã§ãã
cutãheadãpaste 㯠1 è¡ã®é·ãã«å¶éã¯ãããŸãããhead ã³ãã³ã㯠-c ãªãã·ã§ã³ãæå®ãããšãã«ä»»æã®åœ¢åŒãæ±ãããšãã§ããŸããhead ã³ãã³ãã®å¯Ÿç
§ã³ãã³ããšãèšãã tail ã³ãã³ãã«ã¯ 1 è¡ã®é·ãã«å¶éãããã®ã§æ³šæããŠãã ãããhead ã³ãã³ãã tail ã³ãã³ãã®ïŒC èšèªã§ã®ïŒå®è£
ãèããã°ãhead ã³ãã³ãã«é·ãã®å¶éãæãããªãã®ã¯ç°¡åã§ãtail ã³ãã³ãã¯é£ããããšãæ³åã§ããã§ããããã ããå®éã®å®è£
ã§ãã®ãããªå¶éãã§ããŠããŸããç§»æ€æ§ãããã·ã§ã«ã¹ã¯ãªãããéçºã§ããããã«ããããããã®åäœã POSIX ã§ææåããå¿
èŠããããŸããã
exãviãsort ã¯äžå®å
šãªè¡ãå
¥åããå Žåã«ã¯æ«å°Ÿã«æ¹è¡ãå ããããšã POSIX ã§æšæºåãããŠããŸããè¡ãäžŠã³æ¿ãã sort ã³ãã³ãã¯ãæ«å°Ÿã«æ¹è¡ãå ããªããšæå³ã®ãªãåºåãè¡ã£ãŠããŸããããæŽå²çãªå®è£
ã¯ã©ããæ«å°Ÿã«æ¹è¡ãå ããã®ã§ãããã
æ«å°Ÿã«æ¹è¡ããªãããŒã¿ã
foo<LF>
bar<LF>
baz
æ«å°Ÿã«æ¹è¡ãå ããã«ãœãŒããããšã次ã®ããã«ãªã£ãŠããŸãã
bar<LF>
bazfoo<LF>
ãã ã Solaris 11 çã AIX çã® sort ã§ã¯æ¹è¡ãå ãããšãã«èŠåãåºåãããŸããPOSIX ã«ã¯ïŒã©ã® OS ã®è©±ãã¯æžãããŠããŸãããïŒèŠåãåºåããå ŽåããããšæžããŠããã®ã§ãã¡ãããš POSIX ãèªãã§ããã°ãã®æåã«æ°ã¥ãããšãã§ããŸãã
$ printf 'FOO\nBAR\nBAZ' | ( PATH=$(getconf PATH); sort )
sort: missing NEWLINE added at end of input file STDIN
BAR
BAZ
FOO
ãããã®ã³ãã³ãã®ååšã¯ãæ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ãã©ããäœæããããšã POSIX ã¯çŠæ¢ããŠããªã蚌æ ã§ããããŸããããããã¹ããã¡ã€ã«ãã©ãã®äœæãèš±ããªãã®ã§ããã°ãåã«ãå ¥åãã¡ã€ã«ã¯ããã¹ããã¡ã€ã«ã®ã¿ã§ããããšãã仿§ã«ããã°ããã£ãã¯ãã§ããããã¹ããã¡ã€ã«ãã©ããå ¥åãããå Žåã®åäœãæšæºåããŠãããšããããšã¯ãç§»æ€æ§ãããæ©èœãšããŠäœ¿çšããŠæ§ããªããšèšã£ãŠããã®ãšåãããšã§ãã
diffãGitHubã¯çŠæ¢ã§ã¯ãªãèŠåããŠãã
æ«å°Ÿã«æ¹è¡ããªããã¡ã€ã«ã diff ã³ãã³ãã§æ¯èŒãããšãã«ã\ No newline at end of fileããšåºåãããããGitHub ã§ãâããšè¡šç€ºãããŠããã®ãèŠãŠããªã«ãééã£ãããšãããããããªãããšçŠã£ãŠãã人ãããããã§ãããããã¯åãªãèŠåã§ããdiff ã GitHub ããééã£ãŠããªãïŒããšèŠªåã«æããŠãããŠããã ãã§ããæ«å°Ÿã«æ¹è¡ããªããã¡ã€ã«ãçŠæ¢ããŠããããã§ã¯ãªãã®ã§ãæ£åœãªçç±ãããå Žåã¯ç¡èŠããŠãæ§ããªããã®ã§ãã
ã\ No newline at end of fileãã®åœ¹å²
diff ã³ãã³ãã§ãã¡ã€ã«ãæ¯èŒãããšãã«ã\ No newline at end of fileãïŒãNo newline at end of fileãã®éšåã¯ç¿»èš³ãããå¯èœæ§ãããïŒãšåºåãããããšããããŸãããããã¯æ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ãäœã£ãŠã¯ãããªããšããæå³ã§ã¯ãªããåã«æ«å°Ÿã«æ¹è¡ããªãããšãç¥ãããŠããã ãã§ãããããã®åºåããªããã°æ¬¡ã®ããã«ãªã£ãŠããŸããéãããããšåºåãããŠããã®ã«äœãéãã®ãããããªãããšã«ãªã£ãŠããŸããŸãã
$ diff -u file1.txt file2.txt
--- file1.txt 2024-08-03 07:18:01.797900284 +0900
+++ file2.txt 2024-08-03 07:17:57.005895715 +0900
@@ -1,3 +1,3 @@
foo
bar
-baz
+baz
ã\ No newline at end of fileããšããåºåãããããšã§ã倿Žåã®ãã¡ã€ã«ã«ã¯è¡æ«ã«æ¹è¡ããªãã倿ŽåŸã®ãã¡ã€ã«ã«ã¯è¡æ«ã«æ¹è¡ããããšããããŸãã
$ diff -u file1.txt file2.txt
--- file1.txt 2024-08-03 07:18:01.797900284 +0900
+++ file2.txt 2024-08-03 07:17:57.005895715 +0900
@@ -1,3 +1,3 @@
foo
bar
-baz
\ No newline at end of file
+baz
diff ã³ãã³ãã®åºåçµæã¯ãpatch ã³ãã³ãã®å
¥åãšããŠãã¡ã€ã«ã倿Žããããã«äœ¿çšãããŠããŸããããã\ No newline at end of fileããšããåºåããªããã°ãpatch ã³ãã³ãã§æ«å°Ÿã®æ¹è¡ãåé€ããããšãã§ããªããªã£ãŠããŸããŸããæ«å°Ÿã®æ¹è¡ãåé€ãããããšã¯ãªããããããŸããããpatch ã³ãã³ãã®åœ¹ç®ãšããŠã¯æ£ãã仿§ãšã¯æããŸããã
å®ã¯ Solaris çã AIX çã® diff ã³ãã³ãã¯ã\ No newline at end of fileããåºåãã仿§ã¯ãªãïŒä»£ããã«æšæºãšã©ãŒåºåã«èŠåãåºåãããïŒãpatch ã³ãã³ãããã®åºåãåãä»ããŸããã調ã¹ãã®ã§ããã©ããã POSIX ã§ã¯ã\ No newline at end of fileãã®ä»æ§ã¯æšæºåãããŠããªãããã§ãããã®ä»æ§ã®çºç¥¥ãã©ããã¯èª¿ã¹ãããŸããã§ããïŒãããã GNU diffã§ãïŒããBSD ç³» Unix ã§ãåºãæ¡çšãããŠãããç§»æ€æ§ãé«ããããã«æšæºåããã»ããããã ãããšç§ã¯èããŠããŸãã
GitHubããâãïŒé²å ¥çŠæ¢ïŒã䜿ãçç±
GitHub ã§ã¯ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ããªããšãã«ãâããšããçµµæåã䜿ã£ãŠããã®ããšãç¥ãããŠããŸãïŒè£è¶³: ãããããã¡ã€ã«ã¿ã€ãïŒæ¡åŒµåïŒãèŠãŠã㊠.txt ã®å Žåã«ã¯è¡šç€ºãããªãïŒããã®çµµæåã¯åšå§æãäžããééã£ãŠãããã ããå¿ ãæ¹è¡ãå ¥ãããšãããµãã«è§£éãã人ãããããã§ãããããã¯ã\ No newline at end of fileããšåãã§ããã æ«å°Ÿã«æ¹è¡ãå«ãŸããŠããªããšèŠåããŠç¥ãããŠããã ãã§ãã
ãªããããçŠæ¢ã®æå³ã«æããŠããŸãããšèšããšãçµµæåã®æå³ããé²å ¥çŠæ¢ãã ããã§ãããé²å ¥çŠæ¢ããªã®ã ãããçŠæ¢ã®æå³ã«æããŠããŸãã®ã¯èªç¶ã§ãããããããã¯ãã ã®èŠåã§ãããªã GitHub ã¯ãã ã®èŠåã«çŠæ¢ã®ããŒã¯ã䜿çšããŠããã®ã§ããããïŒ
å®ã¯ç§ã¯ãã仮説ãç«ãŠãŠããŸããäŸµå ¥çŠæ¢ã¯è±èªã§ãDO NOT ENTRYãïŒç¥ããŠãNO ENTRYãïŒããŸãã¯ãDO NOT ENTERãïŒç¥ããŠãNO ENTERãïŒã§ããç¥ã£ãŠã®éã ENTER ã¯æ¹è¡ãå ¥åããããã®ããŒãªã®ã§ãâãã¯ãæ¹è¡ãªãããšè§£éã§ããªãããšããããŸããããNO ENTERãã®çšæ³ã¯å°ãªãããã§ããããŸã£ãããªããšããããã§ã¯ãªãããã§ãã
æ¥æ¬äººã«ãšã£ãŠã¯ãé²å ¥ããšãæ¹è¡ãã¯çµã³ã€ããªãã®ã§ãçŠæ¢ãã®ã€ã¡ãŒãžããæ®ããŸããããè±èªã§ã¯ NO ENTER ãã€ã¡ãŒãžããã®ã§ã¯ãªãã§ããããïŒ ãâ 㯠NO ENTERïŒã ãã®èšäºãæžããçç±ã¯ãããèšãããã£ãããã§ããïŒåã§ããïŒ
ãããã«
ã¯ãããã£ãšåããæžãããã£ããã®èšäºãæžãäžããŸãããã¿ããªæ«å°Ÿã«æ¹è¡ãå¿ èŠãªçç±ãšããŠãPOSIX ããŒãšãæšæºèŠæ ŒããŒã£ãŠèšã£ãŠãããã§ãããã¿ããªããã§çŽåŸããŠããã§ããããïŒ POSIX ãèšã£ãŠãããšã¯çµè«ã§ãããªã POSIX ãããèšã£ãŠããã®ãããªãããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå¿ èŠãªã®ããã¿ããªãã®çç±ãŸã§èããŠããªãããã§ãã
ããã«ããŠãé¢åãªè©±ã§ãããïŒ POSIX ã«æºæ ããŠã·ã§ã«ã¹ã¯ãªãããæžãã¹ãã ãªã©ãšå®æã«èšã人ãããŸãããæ¬åœã« POSIX ã«æºæ ããŠæžãã®ã§ããã°ã1 è¡ã®é·ã 2048 æååé¡ãžã®å¯ŸåŠãèããå¿ èŠããããŸããã¯ã£ããèšã£ãŠãããªããšãã£ãŠãããŸããããå¶éããªããšæç¢ºã«ããŠãã GNU ã³ãã³ããã€ã³ã¹ããŒã«ããã»ããç°¡åã§ãããã®ãããªåé¡ã¯ã·ã§ã«ã¹ã¯ãªããèªèº«ã®åé¡ã§ã¯ãããŸãããã·ã§ã«ã¹ã¯ãªããã®èšèªïŒã·ã§ã«èšèªïŒèªäœã« 1 è¡ã®æååã®é·ãã®å¶éãæ«å°Ÿã«æ¹è¡ãå ¥ããªããã°ãªããªããšããèŠä»¶ã¯ãããŸããããããã¯ã³ãã³ããæã€å¶éã仿§ã§ããPOSIX ã¯çŸåšãéèŠã§ãããããã¯ç§»æ€æ§ã®ããã¢ããªã±ãŒã·ã§ã³ãéçºãã人ã«ãšã£ãŠã¯éèŠãšããæå³ã§ãããããªã®ã«ç§»æ€æ§ã®ããšãæ°ã«å¿ èŠããªãã®ã«ãPOSIX ãããæ±ºããŠãããããããæ£ãããã§èããã®ãããã人ãå€ãããã«æããŸãã
ãã¹ãŠã®ããã¹ããã¡ã€ã«ãæ«å°Ÿã«æ¹è¡ãå¿
èŠãªããã§ã¯ãããŸãããäŸãã° JSON ãã¡ã€ã«ã®ããã«ããŒã¿ã®çµãããæ§é ããèªã¿åããå Žåã«ã¯ãæ«å°Ÿã«æ¹è¡ããããå¿
èŠã¯ãããŸããããã ãããã® JSON ãã¡ã€ã«ã®è¡æ°ã wc ã³ãã³ãã§æ°ãããããããšãæ³å®ãããã®ã§ããã°ãæ«å°Ÿã«æ¹è¡ãå
¥ããã»ããè¯ãã§ãããã倧æµã®å Žåã¯æ«å°Ÿã«æ¹è¡ãå
¥ããŠããã»ããå®å
šãªã®ã§å
¥ããããšãæšå¥šããŸãããããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå
¥ããªããã°ãããªããã©ããã¯äœ¿çšããããŒã«æ¬¡ç¬¬ã§ããåæã® Unix ã¯ïŒäºç®ãåŸãããã«ïŒææžç·šéã·ã¹ãã ãšããäœã§éçºãå§ãŸã£ããããããã¹ãææžãæ±ãã³ãã³ããåæã«äœãããŸãããPOSIX ã®ããã¹ããã¡ã€ã«ã®å®çŸ©ããã®ããã«ãªã£ãã®ã¯ãïŒè€éãªæ§é ãæã€ JSON ãªã©ã®ããã¹ãããŒã¹ã®ããŒã¿æ§é ã§ã¯ãªãïŒå€ãã®è¡åäœã®ããã¹ãææžãæ±ãã³ãã³ããæšæºåããå¿
èŠããã£ãããã§ãã
POSIX 㯠POSIX ã§æšæºåããŠããããŒã«ïŒPOSIX ã³ãã³ãïŒã®åäœã説æããå¿ èŠãããããããã¹ããã¡ã€ã«ãšããçšèªããã®ããã«å®çŸ©ããã ãã§ãæ«å°Ÿã«æ¹è¡ããªãããã¹ããã¡ã€ã«ãã©ããäœã£ãŠã¯ãããªããšã¯èšã£ãŠããŸãããPOSIX ã³ãã³ãã䜿ããªã人ã«ãšã£ãŠã¯ POSIX ããªããšèšã£ãŠãããšããŠãé¢ä¿ãªã話ã§ãèªåã䜿ãããŒã«ãæ«å°Ÿã«æ¹è¡ããªããã¡ã€ã«ãæåŸ ãããšããã«æ±ããããæ°ã«ããã°ååã§ãããã ãä»ã®äººã¯ãã®ãã¡ã€ã«ã POSIX ã³ãã³ãã䜿ã£ãŠæ±ããããããªãã®ã§ãç¹ã«çç±ããªãéãæ«å°Ÿã«æ¹è¡ãå ¥ããŠãããæ¹ãè¯ããšããã®ã¯ãã®ãšããã§ããé¢åãªã®ã§çç¥ããŸããããC èšèªã®ãœãŒã¹ã³ãŒããæã¯æ«å°Ÿã«æ¹è¡ãå¿ èŠã§ããããC++ ã®æ°ããã®èŠæ Œã§ã¯æ«å°Ÿã«æ¹è¡ããªããŠãè¯ããªã£ãããã§ããããããã®ãæã® C èšèªã³ã³ãã€ã©ã®äžéšã«ã¯æ«å°Ÿã®æ¹è¡ãå¿ é ã®å®è£ ããã£ã£ãããã§ãããçŸåšã® C++ ã³ã³ãã€ã©ã®å®è£ ã¯æ«å°Ÿã«æ¹è¡ããªãå Žåã«æ¹è¡ãèªåçã«è¿œå ããããã«ãªã£ããããªã®ã§ãããã
ç§ã Visual Studio Code ã¯ããã©ã«ãã§æ«å°Ÿã«æ¹è¡ãå ¥ããããã«ããŠããã¹ãã ãšæãçç±ã¯ãã©ãã Visual Studio Code ãªããŠé«åºŠãªããã¹ããšãã£ã¿ã䜿ã人ã¯ããã°ã©ããããã§ããïŒãšããèãããã§ããå€ãã®ããã°ã©ã㯠POSIX ã³ãã³ãã䜿ãç§»æ€æ§ãæ°ã«ããåŸåãªã®ã§ãããã©ã«ãã®èšå®ãããã°ã©ãåãã«ããŠããã°é¢åã§ã¯ãªããªããŸããåæã«æ«å°Ÿã«æ¹è¡ãå ããå°ãèªäœã«ãªã£ããšããŠãããã°ã©ããªãèªåã§ã©ãã«ã察åŠã§ããã§ãããïŒ ã§ãçŽ äººåãã®ããã¹ããšãã£ã¿ã§ããã°ãèªåã§æ¹è¡ãå ¥ãããšãã ãå ¥ãã»ããçŽæçãªåäœãããããŸããããããã Visual Studio Code ã¯ããã©ã«ããçŽ äººåããšå®çŸ©ããããã°ã©ããªãèªåã§èšå®ã倿Žããããšãããã§ããã ãïŒããšããèããªã®ãããããŸããããããã©ã«ãã®èšå®ã¯ããã°ã©ãã«ãšã£ãŠã¯å°ã äžäŸ¿ã§ãããèšå®ã倿Žããã°ããã ãã®ããšã«ç®ããããç«ãŠãæå³ãããããŸãããã¡ãªã¿ã«å人çã«ã¯ãã¹ããŒã¿ã¹ããŒã«æ«å°Ÿã®æ¹è¡ã®ç¶æ ãããããããªè¡šç€ºãå ããä¿åæã«æ¹è¡ãå ãããã®èšå®ãã¹ããŒã¿ã¹ããŒããç°¡åã«å€æŽã§ããããã«ããã°ããã®ã§ã¯ãªãããšèããŠããŸãã
ããã¹ããã¡ã€ã«ã®æ«å°Ÿã«æ¹è¡ãå ¥ããã»ããè¯ããšããçµè«ã«å€ããã¯ãªãã®ã§ããããã®è©±ã« POSIX ãªããŠé¢ä¿ãªãã®ã§ãããå ¥ããã»ããè¯ãçç±ã¯åã«å°ãå¯èœæ§ãé«ãããã§ãã