· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Devel Filter Skeleton

Developing Filter Programs


UNIXÀÇ ´ëºÎºÐ À¯Æ¿¸®Æ¼µéÀº filter(ÇÊÅÍ) Çü½ÄÀ¸·Î µÇ¾î ÀÖ½À´Ï´Ù. Áï, Ç¥ÁØ ÀÔ·Â(stdin)À¸·Î µ¥ÀÌÅ͸¦ ¹Þ¾Æ¼­ °¡°øÇÑ ´ÙÀ½, ÀÌ °¡°øµÈ µ¥ÀÌÅ͸¦ Ç¥ÁØ Ãâ·Â(stdout)À¸·Î Ãâ·ÂÇÕ´Ï´Ù. ¶ÇÇÑ Ã³¸® µµÁß ¹ß»ýÇÑ ¿¡·¯´Â Ç¥ÁØ ¿¡·¯ Ãâ·Â(stderr)À¸·Î Ãâ·ÂÇÕ´Ï´Ù. ¶ÇÇÑ ´ëºÎºÐÀÇ À¯Æ¿¸®Æ¼µéÀº ó¸® ¹æ½Ä¿¡ ¿µÇâÀ» ÁÖ´Â ¿©·¯ °¡Áö ¿É¼ÇÀ» ¹Þ¾Æ¼­ ó¸®ÇÒ ¼ö ÀÖÀ¸¸ç, Ç¥ÁØ ÀÔ·Â ´ë½Å, command-line argument(¸í·É ÀÎÀÚ)·Î, Çϳª ¶Ç´Â ¿©·¯ °³ÀÇ ÆÄÀÏ À̸§À» ÀÔ·Â ¹Þ¾Æ ÀÛ¾÷Çϱ⵵ ÇÕ´Ï´Ù. ÀÌ·± À¯Æ¿¸®Æ¼¿¡´Â ´ëÇ¥ÀûÀÎ UNIX À¯Æ¿¸®Æ¼ÀÎ, cat(1), wc(1), cut(1), paste(1) µîµî ¿©·¯ °¡Áö°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.

¿©·¯ºÐÀÌ Æ¯º°ÇÑ ÇÊÅÍ ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÒ °æ¿ì, ÀÌ·¯ÇÑ UNIX À¯Æ¿¸®Æ¼µéÀÇ ¹æ½ÄÀ» ±×´ë·Î µû¿Í¼­ µ¿ÀÛ ¹æ½ÄÀ» ºñ½ÁÇÏ°Ô ¸¸µé¾î µÎ¸é, ³ªÁß¿¡ shell script¸¦ ¸¸µé ¶§¿¡µµ Æí¸®Çϸç, ¹èÆ÷½Ã¿¡µµ »ó´çÈ÷ È¿°ú¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù.

1.1. Options

1.1.1. Conventional Options


UNIXÀÇ ´ëºÎºÐ ÇÊÅÍ ÇÁ·Î±×·¥µéÀº ó¸®ÇÒ µ¥ÀÌÅÍ°¡ ´ã±ä ÆÄÀϵéÀ» (command-line argument·Î) ¹Þ±â Àü¿¡, '-'·Î ½ÃÀÛÇÏ´Â ¿É¼ÇµéÀ» ¹Þ½À´Ï´Ù. ¿É¼ÇµéÀº º¸Åë ÇÑ ±ÛÀÚ·Î µÇ¾î ÀÖÀ¸¸ç, ¿©·¯ °³ÀÇ ¿É¼ÇÀ» Çϳª·Î ¹Þ±âµµ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ¾î¶² ÇÊÅÍ ÇÁ·Î±×·¥ÀÌ '-v'¿Í '-r'À̶ó´Â ¿É¼ÇÀ» ¹Þ¾Æ ó¸®ÇÒ ¼ö ÀÖ´Ù°í ÇØ º¾½Ã´Ù. ÀÌ ÇÁ·Î±×·¥ À̸§Àº ÆíÀÇ»ó foo¶ó°í ÇÏ°Ú½À´Ï´Ù. ÀÌ °æ¿ì, foo¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýÀº ´ÙÀ½ ³× °¡Áö·Î º¼ ¼ö ÀÖ½À´Ï´Ù:

$ foo -v -r data.file
$ foo -r -v data.file
$ foo -vr data.file
$ foo -rv data.file

¿É¼Ç¿¡ µû¶ó Ãß°¡·Î argument¸¦ ¹Þ¾Æ¼­ ó¸®ÇÏ´Â ¿É¼Çµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ¿É¼Ç ¹Ù·Î µÚ¿¡ ÀÌ ¿É¼ÇÀ» À§ÇÑ ÀÎÀÚ°¡ ºÙ½À´Ï´Ù. ¿¹¸¦ µé¾î foo ¸í·ÉÀº ¿ø·¡ ó¸® °á°ú¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î Ãâ·ÂÇÏÁö¸¸ '-o filename'À» ¾µ °æ¿ì, ÁÖ¾îÁø ÆÄÀÏ, filename¿¡ ±× °á°ú¸¦ ÀúÀåÇÑ´Ù°í ÇսôÙ. ÀÌ °æ¿ì, '-v'¿Í '-r'À» ÇÔ²² ¾²±â À§ÇØ, ´ÙÀ½ Áß Çϳª¸¦ ¼±ÅÃÇÏ¸é µË´Ï´Ù.

$ foo -v -r -o out.file data.file
$ foo -v -o out.file -r data.file
$ foo -rv -o out.file data.file
$ foo -o out.file -vr data.file
$ foo -rvo out.file data.file

¹°·Ð À§¿¡¼­ ³ª¿­ÇÑ ¹æ¹ý ÀÌ¿Ü¿¡µµ ¿©·¯ °¡Áö Á¶ÇÕÀÌ °¡´ÉÇÕ´Ï´Ù.

´ëºÎºÐÀÇ ÇÊÅÍ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§, ó¸®ÇÒ ÆÄÀÏ À̸§À» ÁÖÁö ¾ÊÀ¸¸é, ´ë°³ Ç¥ÁØ ÀԷ¿¡¼­ µ¥ÀÌÅ͸¦ ¹Þ½À´Ï´Ù. cat(1)ó·³ ÀÔ·Â µ¥ÀÌÅ͸¦ ¹Ù·Î Ãâ·ÂÇÏ´Â ÇÊÅÍÀÇ °æ¿ì ´ÙÀ½°ú °°ÀÌ µ¿ÀÛÇÕ´Ï´Ù.

$ cat data.file
hello, world
greetings, folks.
$ cat
hello, world
^d      # press control-D to acknowledge EOF.
hello, world
$ _

Áï, À§ °á°úÀ» º¸¸é, cat(1)ÀÇ ÀÔ·ÂÀ¸·Î data.fileÀ̶õ ÆÄÀÏÀ» ÁÖ¸é ¹Ù·Î ±× ÆÄÀÏÀÇ ³»¿ëÀ» Ãâ·ÂÇÕ´Ï´Ù. ¶Ç ¾Æ¹«·± ÆÄÀÏ À̸§¾øÀÌ ¹Ù·Î ½ÇÇàÇϸé, cat(1)Àº »ç¿ëÀÚ°¡ Ç¥ÁØ ÀԷ¿¡¼­ ÀÔ·ÂÀ» ¹Þ±â À§ÇØ ´ë±âÇÕ´Ï´Ù. ÀÌ ¶§ "hello, world\n"¸¦ ÀÔ·ÂÇÏ°í control-d Å°¸¦ ´©¸£¸é EOF(end-of-file)À» Àü´ÞÇؼ­, ÀÔ·ÂÀÌ ³¡³µ´Ù´Â °ÍÀ» ¾Ë·ÁÁÝ´Ï´Ù. ±×·¯¸é cat(1)ÀÌ ±× ÀÔ·ÂÀ» ¹Þ¾Æ¼­ Ãâ·ÂÇÏ°Ô µË´Ï´Ù.

¶§¿¡ µû¶ó¼­ ¿©·¯ °³ÀÇ ÆÄÀÏ°ú Ç¥ÁØ ÀԷ¿¡¼­ µé¾î¿À´Â ÀÔ·ÂÀ» µ¿½Ã¿¡ ó¸®ÇØ¾ß ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î¼­ Ãâ·ÂÇÏ°íÀÚ ÇÏ´Â ³»¿ëÀÌ 1.txt, 2.txt, 3.txt¶ó´Â ÆÄÀÏ¿¡ µé¾î ÀÖ´Â ³»¿ëÀÌ°í, ¶ÇÇÑ Ç¥ÁØ ÀԷ¿¡¼­ ¹ÞÀº ³»¿ëµµ Ãâ·ÂÇϱ⸦ ¿øÇÑ´Ù°í °¡Á¤ÇØ º¾½Ã´Ù. Ãâ·ÂÇÏ´Â ¼ø¼­´Â 1.txt ±×¸®°í Ç¥ÁØ ÀԷ¿¡¼­ ¹ÞÀº ³»¿ë, ±×¸®°í 2.txt¿Í 3.txt ¼ø¼­·Î Ãâ·ÂÇÏ·Á ÇÕ´Ï´Ù. ±×·¯¸é ¾î¶»°Ô cat(1)À» ½ÇÇàÇØ¾ß ÇÒ±î¿ä? ºÐ¸í 1.txt, 2.txt, 3.txt¸¦ ¼ø¼­´ë·Î Ãâ·ÂÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ÇØ¾ß ÇÕ´Ï´Ù:

$ cat 1.txt 2.txt 3.txt

±×·¯³ª ¿ì¸®°¡ ¿øÇÏ´Â °ÍÀº 1.txt¿Í 2.txt »çÀÌ¿¡ Ç¥ÁØ ÀԷ¿¡¼­ µ¥ÀÌÅÍ°¡ µé¾î¿À´Â °ÍÀ̱⠶§¹®¿¡ À§¿Í °°ÀÌ ÇÒ ¼ö ¾ø½À´Ï´Ù. °Ô´Ù°¡ cat(1)À» ºñ·ÔÇÑ ´ëºÎºÐÀÇ ÇÊÅÍ ÇÁ·Î±×·¥Àº, ÆÄÀÏ À̸§À» Çϳª ÀÌ»ó ÁÖ¾úÀ» °æ¿ì, Ç¥ÁØ ÀԷ¿¡¼­ µ¥ÀÌÅ͸¦ ¹ÞÁö ¾Ê½À´Ï´Ù.

ÇØ°áÃ¥Àº ÀÇ¿Ü·Î °£´ÜÇÕ´Ï´Ù. ÆÄÀÏ À̸§ÀÌ ¿Ã ÀÚ¸®¿¡ "-"¸¦ ÁÖ°Ô µÇ¸é, cat(1)À» ºñ·Ô, ´ëºÎºÐÀÇ ÇÊÅÍ ÇÁ·Î±×·¥ÀÌ Ç¥ÁØ ÀԷ¿¡¼­ ÀÔ·ÂÀ» ¹Þ½À´Ï´Ù. µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ ½ÇÇàÇÏ¸é ¹®Á¦°¡ ÇØ°áµË´Ï´Ù:

$ cat 1.txt - 2.txt 3.txt

'-' ¹®ÀÚ°¡ (À§¿Í °°ÀÌ) ´Üµ¶À¸·Î ¾²ÀÏ °æ¿ì, ´ëºÎºÐÀÇ ÇÊÅÍ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°ÀÌ ÀνÄÇÕ´Ï´Ù.

ù°. ÀÔ·Â µ¥ÀÌÅÍ ÆÄÀÏ À̸§ÀÌ ¿Ã ÀÚ¸®¿¡ '-'¸¦ ¾´ °æ¿ì, Ç¥ÁØ ÀԷ¿¡¼­ µ¥ÀÌÅ͸¦ ¹Þ°Ô µË´Ï´Ù.

µÑ°, Ãâ·Â µ¥ÀÌÅÍ ÆÄÀÏ À̸§ÀÌ ¿Ã ÀÚ¸®¿¡ '-'¸¦ ¾´ °æ¿ì, Ç¥ÁØ Ãâ·ÂÀ¸·Î µ¥ÀÌÅ͸¦ Ãâ·ÂÇÕ´Ï´Ù.

ÇÑ°¡Áö ´õ, ¸ðµç ÇÊÅÍ ÇÁ·Î±×·¥ÀÌ '-'¸¦ ÀÌ·¯ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ƯÁ¤ ÇÁ·Î±×·¥ÀÌ '-'¸¦ Ưº°ÇÑ ÆÄÀÏ À̸§À¸·Î Ãë±ÞÇÏ´ÂÁö ¸ÕÀú Å×½ºÆ®ÇØ º¸°í »ç¿ëÇϱ⠹ٶø´Ï´Ù.

ƯÁ¤ ¿É¼Ç ±ÛÀÚ°¡ ¾î¶² ¶æÀ» °¡Áö°í ÀÖ´ÂÁö ¿Ü¿ö µÎ±â¶õ ½¬¿î ÀÏÀÌ ¾Æ´ÏÁö¸¸, ¾Æ·¡ Ç¥¸¦ º¸¸é ´ëºÎºÐ ¸í·ÉµéÀÌ °¢ ¿É¼ÇÀ» ¾î¶°ÇÑ ¶æÀ¸·Î ¾²´Â Áö ¾Ë ¼ö ÀÖ½À´Ï´Ù:

-o filename Ãâ·Â ÆÄÀÏ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. º¸Åë ÀÌ ¿É¼ÇÀ» ¾²¸é ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀÌ Ç¥ÁØ Ãâ·ÂÀ̳ª ±âŸ ´Ù¸¥ °÷À¸·Î °¡Áö ¾Ê°í ÁöÁ¤ÇÑ filenameÀ¸·Î °¡°Ô µË´Ï´Ù.
-v ¶Ç´Â -V »óȲ¿¡ µû¶ó¼­ ÇÁ·Î±×·¥ÀÇ versionÀ» Ãâ·ÂÇÏ°í Á¾·áÇϰųª, ÇÁ·Î±×·¥ÀÌ ÀÛ¾÷ µµÁß ÀÚ¼¼ÇÑ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°Ô ÇÏ´Â, verbose mode¸¦ ¾²µµ·Ï ÇÕ´Ï´Ù.
-h ¶Ç´Â -? ÀÌ ÇÁ·Î±×·¥À» ¾²´Â ¹æ¹ýÀ» ¾Ë·ÁÁÖ°í ³¡³À´Ï´Ù.
-f º¸Åë ÀÛ¾÷ °á°ú°¡ ±âÁ¸ ÆÄÀÏÀ» µ¤¾î¾²°Ô µÇ´Â °æ¿ì, ÇÊÅÍ ÇÁ·Î±×·¥Àº µ¤¾î ¾²Áö ¾Ê°í °æ°í ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ³¡³»Áö¸¸, ÀÌ -f (force¸¦ ¶æÇÔ)¸¦ ¾²¸é, ¹«½ÃÇÏ°í ±âÁ¸ ÆÄÀÏÀ» µ¤¾î ¾²°Ô µË´Ï´Ù.
-t arg ¶Ç´Â -T arg ƯÁ¤ ŸÀÔ, ¿¹¸¦ µé¾î ÀÔ·Â µ¥ÀÌÅÍ Çü½ÄÀ̳ª, Ãâ·Â ÆäÀÌÁö Á¾·ù µîÀÇ ¾î¶² ŸÀÔÀ» ÀԷ¹޴µ¥¿¡ ¾²ÀÔ´Ï´Ù.
-q ´ë°³ quiet mode, Áï, ÀÛ¾÷ µµÁß ¾î¶² ¸Þ½ÃÁöµµ Ãâ·ÂÇÏÁö ¾Ê°Ô ÇÕ´Ï´Ù.
-r ¶Ç´Â -R ´ë°³ recursive mode, Áï, ÀÔ·Â ÀÎÀÚ Áß µð·ºÅ丮°¡ ÀÖÀ» °æ¿ì, ±× µð·ºÅ丮 ¾Æ·¡ÀÇ ¸ðµç ÆÄÀϵ鵵 Æ÷ÇÔÇؼ­ ÀÛ¾÷ÇÕ´Ï´Ù.
-b ¶Ç´Â -r bare ¶Ç´Â binary ¶Ç´Â raw, ÀÔ·Â ÆÄÀÏ¿¡ Ưº°ÇÑ Ã³¸®¸¦ ÇÏÁö ¾Ê°í ±×´ë·Î ¾µ °ÍÀ» Áö½ÃÇÕ´Ï´Ù.
-i ÀÔ·Â ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â µ¥¿¡ ¾²°Å³ª (input), ¿©·¯ °¡Áö ÀÏÀ» ¼öÇàÇÒ ¶§ ÀÏÀÏÈ÷ »ç¿ëÀÚ¿¡°Ô ¹°¾îº¸°Ô ÇÕ´Ï´Ù (interactive).

¹°·Ð, ÇÁ·Î±×·¥¿¡ µû¶ó À§¿¡ ¾²ÀÎ ¿É¼Ç ÀÌ¿ÜÀÇ ´Ù¸¥ ¿É¼ÇÀ» ¾²´Â °æ¿ìµµ ÀÖ°í, À§ÀÇ Çؼ®°ú´Â ÀüÇô ´Ù¸¥ ¶æÀ» °¡Áø °ÍÀ¸·Î Çؼ®Çϱ⵵ ÇÕ´Ï´Ù. ÀÌ´Â ¼øÀüÈ÷, ÇÊÅÍ ÇÁ·Î±×·¥À» ¸¸µå´Â °³¹ßÀÚ ¸¶À½´ë·ÎÁö¸¸, ¿©·¯ºÐÀÌ »õ ÇÊÅÍ ÇÁ·Î±×·¥À» ¸¸µç´Ù¸é, À§ÀÇ Ç¥¸¦ Âü°íÇؼ­ °³¹ßÇϸé, ´Ù¸¥ »ç¿ëÀÚµéÀÌ ½±°Ô ÀûÀÀÇÒ ¼ö ÀÖ½À´Ï´Ù.

1.1.2. Long Options


´ëºÎºÐ ¿É¼ÇÀÌ ÇÑ ±ÛÀÚ·Î ÀÌ·ç¾îÁ® Àֱ⠶§¹®¿¡, ÀÚÁÖ ¾²´Â ÇÊÅÍ ÇÁ·Î±×·¥ÀÌ ¾Æ´Ñ ÀÌ»ó, °¢ ¿É¼ÇÀÌ ¾î¶² ±â´ÉÀ» ÇÏ´ÂÁö ¿Ü¿öµÎ±â¶õ ½¬¿î ÀÏÀÌ ¾Æ´Õ´Ï´Ù. µû¶ó¼­ GNU¿¡¼­ Á¦°øÇÏ´Â ´ëºÎºÐÀÇ ÇÊÅÍ ÇÁ·Î±×·¥Àº '-'·Î ½ÃÀÛÇÏ´Â ÇÑ ±ÛÀÚ ¿É¼Ç ÀÌ¿Ü¿¡µµ '--'·Î ½ÃÀÛÇÏ°í ¿©·¯ ±ÛÀÚ·Î ÀÌ·ç¾îÁø ¿É¼Çµéµµ Á¦°øÇÕ´Ï´Ù. º¸Åë '--'·Î ½ÃÀÛÇÏ´Â ¿É¼ÇµéÀ» long optionÀ̶ó°í ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, µµ¿ò¸»À» Ãâ·ÂÇϱâ À§ÇØ º¸Åë '-h'³ª '-?'¸¦ ¾²Áö¸¸, 'help'¸¦ ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ¶Ç, ÇÑ ±ÛÀÚ ¿É¼ÇÀ¸·Î verbose mode¸¦ ÁöÁ¤Çϱâ À§ÇØ '-v'¸¦ ½á¾ß ÇÏ´ÂÁö '-V'¸¦ ½á¾ß ÇÏ´ÂÁö Çò°¥¸®±â ½±Áö¸¸, 'verbose'¸¦ ¾µ ¼ö ÀÖ´Ù¸é ±ÄÀÌ ½Å°æ½á¼­ ¿Ü¿öµÑ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

--help µµ¿ò¸»À» Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù.
--version ÇÁ·Î±×·¥ ¹öÀüÀ» Ãâ·ÂÇÏ°í ³¡³À´Ï´Ù.
--quiet Á¶¿ëÇÏ°Ô Ã³¸®ÇÕ´Ï´Ù. Áï, µû·Î ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù.
--verbose ó¸® µµÁß ¸Þ½ÃÁö¸¦ ÀÚ¼¼ÇÏ°Ô Ãâ·ÂÇÕ´Ï´Ù.
--recursive ÀÎÀÚ·Î µð·ºÅ丮°¡ µé¾î ¿Ã °æ¿ì, ±× µð·ºÅ丮 ÇÏÀ§ ¸ðµç ÆÄÀϵµ °°ÀÌ Æ÷ÇÔÇÕ´Ï´Ù.
--interactive »ç¿ëÀÚ¿¡°Ô ÀÏÀÏÈ÷ ¹°¾îº¸°í ÀÛ¾÷ÇÏ°Ô ÇÕ´Ï´Ù.
--input ÀÔ·Â ÆÄÀÏÀ» ÁöÁ¤ÇÕ´Ï´Ù.
--output Ãâ·Â ÆÄÀÏÀ» ÁöÁ¤ÇÕ´Ï´Ù.

¶ÇÇÑ ÇÑ ±ÛÀÚ ¿É¼Ç°ú ±ä ¿É¼ÇÀÌ ´Ù¸¥ Á¡ Áß Çϳª´Â, ¿É¼ÇÀÌ ÀÎÀÚ¸¦ ¹ÞÀ» ¶§ÀÔ´Ï´Ù. ÇÑ ±ÛÀÚ ¿É¼ÇÀÎ °æ¿ì, '-o filename'°ú °°ÀÌ ¿É¼Ç ±ÛÀÚ µÚ¿¡ °ø¹éÀ» µÎ°í ÆÄÀÏ À̸§À» ¹ÞÁö¸¸, ±ä ¿É¼ÇÀÎ °æ¿ì, ¿É¼Ç µÚ¿¡ '='¸¦ ºÙÀÌ°í °ø¹é ¾øÀÌ ÀÔ·ÂÇÕ´Ï´Ù. Áï, '--output=filename'°ú °°ÀÌ ¾¹´Ï´Ù.

1.2. Messages

ÇÁ·Î±×·¥ÀÌ ÀÛ¾÷À» ó¸®ÇÏ´Â µµÁß, °æ°í³ª ¶æÇÏÁö ¾ÊÀº »óȲÀ» ¸¸³ª°Ô µÇ°Å³ª, ±âŸ »ç¿ëÀÚ¿¡°Ô ¾Ë¸± ³»¿ëÀÌ ÀÖÀ» °æ¿ì, ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°Ô µË´Ï´Ù. º¸Åë ÀÛ¾÷ °á°ú¿Í °ãÄ¡Áö ¾Ê°Ô Çϱâ À§ÇØ, ÀÌ·¯ÇÑ ¸Þ½ÃÁöµéÀº Ç¥ÁØ Ãâ·ÂÀ¸·Î ³ª°¡Áö ¾Ê°í, Ç¥ÁØ ¿¡·¯ Ãâ·ÂÀ¸·Î ³ª°¡°Ô µË´Ï´Ù.

¶ÇÇÑ ÀÔ·Â ÆÄÀÏÀ» ó¸®ÇÏ´Â µµÁß, ¿øÄ¡ ¾Ê´Â ÀÔ·ÂÀ» ¸¸³ª°Ô µÉ °æ¿ì, ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°Ô µÇ´Âµ¥, ÀÌ °æ¿ì, ¿¡·¯ ¸Þ½ÃÁö°¡ ´ÙÀ½°ú °°Àº Çü½ÄÀ» ¶ç°Ô ÇØ¾ß ÇÕ´Ï´Ù. ¾Æ·¡¿¡¼­ (*)·Î Ç¥½ÃÇÑ °ÍÀÌ ÀÚÁÖ ¾²´Â Çü½ÄÀÔ´Ï´Ù:

  • file-name: line-number: error-message (*)
  • file-name: line-number: column-number: error-message

  • program-name: error-message (*)
  • program-name: file-name: error-message
  • program-name: file-name: line-number: error-message

1.3. Exit Status


ÇÁ·Î±×·¥ÀÌ Á¤»ó Á¾·áÇßÀ» °æ¿ì, exit status¸¦ 0À¸·Î ÇÏ°í, ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì, 1-255 »çÀÌÀÇ ¼ýÀÚ¸¦ ¾²µµ·Ï ÇÕ´Ï´Ù. º¸Åë, ¼º°øÇßÀ» °æ¿ì 0À», ½ÇÆÐÇßÀ» °æ¿ì 1À» ¾²´Â °ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù.

1.4. Helper Files


ÇÁ·Î±×·¥À» ½ÃÀÛÇÒ ¶§, º¸Åë ¼ö ¸¹Àº ¿É¼ÇÀÌ ÇÊ¿äÇϰųª, ¸¹Àº ¾çÀÇ ¼³Á¤ÀÌ ÇÊ¿äÇÒ °æ¿ì, ¿É¼Ç ÇüÅ·ΠÁ¦°øÇÏ´Â °ÍÀº »ç¿ëÀÚ¿¡°Ô ¸¹Àº ºÒÆíÀ» ÁÝ´Ï´Ù. ÀÌ °æ¿ì, ¹Ì¸® ¼³Á¤ ÆÄÀÏÀ» ¸¸µé¾î µÎ°í, »ç¿ëÀÚ°¡ ÇÊ¿äÇÑ ¼³Á¤À» °íÄ¡°Ô ÇÑ ´ÙÀ½, ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ ¶§, ÀÌ ¼³Á¤ ÆÄÀÏÀ» Àо µ¿ÀÛÇÏ°Ô Çϸé ÁÁ½À´Ï´Ù. (¸¸¾à ¼³Á¤ ÆÄÀÏÀ» ÀÐÀ» ¶§ ¿¡·¯°¡ ¹ß»ýÇÒ °æ¿ì ¾Õ¿¡¼­ ¼³¸íÇÑ ¹æ½ÄÀ¸·Î ¿¡·¯¸¦ Ãâ·ÂÇÏ°Ô ÇÏ¸é ´õ¿í ÁÁ½À´Ï´Ù.)

¼³Á¤ ÆÄÀÏÀº º¸Åë Àüü »ç¿ëÀڵ鿡°Ô ¿µÇâÀ» ÁÖ´Â ¼³Á¤ ÆÄÀÏ°ú, ÇöÀç »ç¿ëÀÚ¿¡°Ô¸¸ ¿µÇâÀ» ÁÖ´Â ¼³Á¤ ÆÄÀÏ·Î ³ª´­ ¼ö ÀÖ½À´Ï´Ù. ÀüÀÚ¸¦ system-wide init fileÀ̶ó°í ÇÏ°í, ÈÄÀÚ¸¦ user init fileÀ̶ó°í ºÎ¸£°Ú½À´Ï´Ù.

system-wide init fileÀÇ °æ¿ì, º¸Åë /etc ¾Æ·¡¿¡ À§Ä¡ÇÕ´Ï´Ù. ¸¸¾à ÇÁ·Î±×·¥ÀÇ À̸§ÀÌ foo¶ó°í ÇÒ °æ¿ì, system-wide init fileÀº º¸Åë ´ÙÀ½°ú °°ÀÌ ¸¸µì´Ï´Ù. (*) Ç¥½Ã°¡ ÀÖ´Â °ÍÀÌ ÀÚÁÖ ¾²ÀÔ´Ï´Ù.

  • /etc/foorc (*)
  • /etc/foo/foorc ¶Ç´Â /etc/foo/*
  • /etc/foo.d/foorc ¶Ç´Â /etc/foo.d/*

user init fileÀÇ °æ¿ì, »ç¿ëÀÚ È¨ µð·ºÅ丮 (ȯ°æ º¯¼ö $HOME¿¡ ÀúÀåµÇ¾î ÀÖÀ½)¿¡ ´ÙÀ½°ú °°Àº ÆÄÀÏ À̸§À» ¾¹´Ï´Ù. (*) Ç¥½Ã°¡ ÀÖ´Â °ÍÀÌ ÀÚÁÖ ¾²ÀÔ´Ï´Ù.

  • $HOME/.foorc (*)
  • $HOME/.foo/foorc ¶Ç´Â $HOME/.foo/*

ÀÚÁÖ ¾²ÀÌÁö´Â ¾ÊÁö¸¸ ¸¸¾à, ½á¾ß ÇÒ ¼³Á¤ ÆÄÀÏÀÌ ¿©·¯ ¹ú ÀÖ¾î¾ß ÇÏ´Â °æ¿ì, ÀÌ ¿Ü¿¡ µÎ °¡Áö¸¦ ´õ »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ù°, ÇÁ·Î±×·¥¿¡¼­ ¿É¼ÇÀ» ½á¼­, init fileÀ» ÀԷ¹ÞÀ» ¼ö ÀÖ°Ô Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. µÑ°, ȯ°æ º¯¼ö¸¦ ½á¼­ init fileÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÏ°Ô ÇÏ°í, ÇÁ·Î±×·¥¿¡¼­ ÀÌ È¯°æ º¯¼ö°¡ °¡¸®Å°´Â ÆÄÀÏÀ» init file·Î ¾²´Â °ÍÀÔ´Ï´Ù. ÈÄÀÚÀÇ °æ¿ì, ÇÁ·Î±×·¥ À̸§ µÚ¿¡ DIR¸¦ ºÙÀÎ À̸§À» ȯ°æ º¯¼ö À̸§À¸·Î ¾¹´Ï´Ù. ¿¹¸¦ µé¾î ÇÁ·Î±×·¥ À̸§ÀÌ fooÀÎ °æ¿ì, FOODIR ȯ°æ º¯¼ö¸¦ ¾¹´Ï´Ù.

2. ¾ð¾îº° Filter Skeleton ¸¸µé±â


2.1. DevelFilterCSkeleton

C ¾ð¾î·Î ÇÊÅÍ ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇÑ ¹æ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù.

2.2. DevelFilterBashSkeleton

Bash shell script·Î ÇÊÅÍ ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇÑ ¹æ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù.

2.3. DevelFilterPythonSkeleton

PythonÀ¸·Î ÇÊÅÍ ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇÑ ¹æ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù.


³¡ - ([http]½Å¼º±¹)


ID
Password
Join
Try to divide your time evenly to keep others happy.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-07-11 09:47:17
Processing time 0.0079 sec