· 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]½Å¼º±¹)




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.0094 sec