LINUX
2018.10.01 / 21:44

bash shell

Chitta
Ãßõ ¼ö 120

bash´Â GNU Àç´ÜÀÇ ´ëÇ¥ÀûÀÎ ÀÛÇ°À¸·Î 20³â ÀÌ»óÀÇ ¿ª»ç¸¦ °¡Áø ½©·Î ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇ ¹× Mac OS X°¡ ±âº» ½©·Î äÅÃÇÑ ½©ÀÌ´Ù. ¿¹ÀüºÎÅÍ À¯´Ð½º¿¡¼­ »ç¿ëÇÏ´ø  Bourne shell(sh)À» ´ëÄ¡ÇÏ·Á°í ¸¸µé¾úÀ¸¹Ç·Î sh¿Í ȣȯµÇ¸é¼­ ´Ù¾çÇÏ°í Æí¸®ÇÑ ±â´ÉÀ» Æ÷ÇÔÇÏ°í ÀÖÀ¸¹Ç·Î È¿À²ÀûÀ¸·Î ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¸ç ŸÀÌÇÎÀ» ÃÖ¼ÒÈ­ÇÏ°í ½Ç¼ö¸¦ ¹æÁöÇÒ ¼ö ÀÖ´Ù.

Ư¡

ÅÇ ¿Ï¼º(tab completion)

bash´Â ÅÇ ¿Ï¼ºÀ̶ó´Â ¾ÆÁÖ Æí¸®ÇÑ ±â´ÉÀ» Á¦°øÇÏ°í ÀÖ´Ù. »ç¿ëÇÏ·Á´Â ¸í·ÉÀÇ ÀϺθ¸ ÀÔ·ÂÇÏ°í ¸í·É ¿Ï¼º ´ÜÃàÅ°ÀÎ  ÅÇÅ°¸¦ ´©¸£¸é ÇØ´ç ¸í·ÉÀ» ¿Ï¼ºÇØ ÁØ´Ù.

¸¸¾à ÀÔ·ÂµÈ ¸í·É¾î¿Í Áߺ¹µÇ´Â ¸í·ÉÀÌ ¸¹À» °æ¿ì ÅÇÀ» ÇÑ ¹ø ´õ ´©¸£¸é Áߺ¹µÇ´Â ¸ðµç ¸í·ÉÀ» Ç¥½ÃÇØ ÁØ´Ù. ´ÙÀ½ È­¸éó·³ ssh-copy-id ¸¦ ½ÇÇàÇÒ °æ¿ì ss ¸¸ Ä¡°í ÅÇÅ°¸¦ ´©¸£¸é ss ·Î ½ÃÀ۵Ǵ ¸ðµç ¸í·É¾î¸¦ Ç¥½ÃÇØ ÁØ´Ù.

¸í·É ¿Ï¼º È­¸é

ÀÌÈÄ ssh ¸¦ Ä¡°í ¶Ç ÅÇÀ» Ä¥ °æ¿ì ssh ·Î ½ÃÀÛÇÏ´Â ¸í·É¾î°¡ ¸¹À¸¹Ç·Î ssh ±îÁö¸¸ ¿Ï¼ºÇØÁÖ°í Áߺ¹µÇ´Â ¸í·É¾îµéÀ» Ç¥½ÃÇØ ÁØ´Ù. ÀÌ »óÅ¿¡¼­ ssh-c ¸¦ ÀÔ·ÂÈÄ ÅÇ Å°¸¦ ´©¸£¸é ssh-c ·Î ½ÃÀ۵Ǵ ¸í·É¾î´Â ssh-copy-id ¹Û¿¡ ¾øÀ¸¹Ç·Î ssh-copy-id ¸í·ÉÀ» ¿Ï¼ºÇØ ÁØ´Ù.


ÅÇ ¿Ï¼º ±â´ÉÀº ÆÄÀÏ¸í¿¡ ´ëÇؼ­µµ ¾µ ¼ö ÀÖ´Ù. ¸¸¾à vi ·Î bash ÀÇ ¼³Á¤ ÆÄÀÏÀÎ .bash_profile À» ÆíÁýÇÒ °æ¿ì vi .ba ¸¸ Ä¡°í ÅÇ Å°¸¦ ´©¸¦ °æ¿ì ¾Æ·¡¿Í °°ÀÌ vi .bash·Î ¸í·ÉÇàÀ» ¿Ï¼ºÇØ ÁØ´Ù.

ÀÌ »óÅ¿¡¼­ ÅÇÀ» ÇÑ ¹ø ´õ ´©¸£¸é .bash ·Î ½ÃÀÛÇÏ´Â ÆÄÀϸíµéÀ» ¸ðµÎ Ç¥½ÃÇØ ÁØ´Ù. ¿©±â¿¡¼­ vi .bash_p ±îÁö¸¸ ÀÔ·ÂÇÏ°í ÅÇÀ» ´©¸£¸é Áߺ¹µÇ´Â À̸§ÀÌ ¾øÀ¸¹Ç·Î vi .bash_profile ¸í·É¾î°¡ ¿Ï¼ºµÈ´Ù.

ÆÄÀÏ¸í¿¡ ´ëÇØ ¸í·É ¿Ï¼º

ÅÇ ¿Ï¼º ±â´É¿¡ Àͼ÷ÇØ Áö¸é Àüü¸¦ ŸÀÌÇÎÇÒ ÇÊ¿ä¾øÀÌ ºü¸£°í Æí¸®ÇÏ°Ô ÇØ´ç ¸í·É¾î¸¦ ½ÇÇàÇÒ ¼ö ÀÖÀ¸¹Ç·Î ŸÀÌÇÎ ½Ç¼öµµ ÁÙÀÌ°í È¿À²ÀûÀ¸·Î ¾÷¹«¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Ù.

¸í·ÉÇà È÷½ºÅ丮

Ä¿¼­Ç¥ Å°¸¦ ÀÌ¿ëÇÏ¿© È£ÃâÇß´ø ¸í·É¾î¸¦ ´Ù½Ã ºÒ·¯ ³¾ ¼ö ÀÖ´Ù. ÀÌ ±â´ÉÀ» ÀÌ¿ëÇÏ¿© ¿¹Àü¿¡ ÀÔ·ÂÇÑ ¸í·É¾î¸¦ ¹Ù·Î È£ÃâÇÏ¿© Àç»ç¿ëÇÒ ¼ö ÀÖ´Ù.

±ä ¸í·É¾î¸¦ ÀÔ·ÂÇÏ´Ù°¡ Áß°£¿¡ ¿ÀŸ°¡ ³ª¼­ Á¦´ë·Î ½ÇÇàÀÌ ¾È µÇ¾úÀ» °æ¿ì óÀ½ºÎÅÍ ÀÔ·ÂÇÏÁö ¾Ê°í È÷½ºÅ丮·Î È£ÃâÇÏ¿© ¿ÀŸ³­ ºÎºÐ¸¸ ¼öÁ¤ÇÏ¿© »ç¿ëÀÌ °¡´ÉÇÏ´Ù. À­ÂÊ Ä¿¼­Ç¥ ¡è ´Â ÀÌÀü ¸í·É¾î¸¦ È£ÃâÇÏ°í ¾Æ·¡ÂÊ Ä¿¼­Ç¥ ¡é´Â ¿¹Àü ¸í·É¾î ¸ñ·Ï¿¡¼­ ÀÌÈÄ ¸í·É¾î¸¦ È£ÃâÇÒ °æ¿ì¿¡ »ç¿ëÇÑ´Ù.

¸¸¾à ls, last, ps ¼¼ °³ ¸í·É¾î¸¦ ¼ø¼­´ë·Î ½ÇÇàÈÄ ¡è ¸¦ ÇÑ ¹ø ´©¸£¸é ¸¶Áö¸·¿¡ ½ÇÇàÇÑ ps °¡ È£ÃâµÇ¸ç ¡è ¸¦ ¶Ç ´©¸£¸é last °¡ È£ÃâµÈ´Ù. ÀÌ »óÅ¿¡¼­ ¡é¸¦ ´©¸£¸é last ÀÇ ÀÌÈÄ ¸í·É¾îÀÎ ps°¡ È£ÃâµÇ°í ¡è ¸¦ ´©¸¦ °æ¿ì last ÀÇ ÀÌÀü ¸í·É¾îÀÎ ls °¡ È£ÃâµÈ´Ù.


alias

bash¿¡ ³»ÀåµÈ ¸í·É¾î·Î ±ä ¸í·É¾î¸¦ º°¸íÀ» ÁöÁ¤ÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ±â´ÉÀÌ´Ù. name=value Çü½ÄÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½ ¸í·É¾î·Î vi ¸¦ ½ÇÇàÇÒ °æ¿ì vim ÀÌ ±¸µ¿µÇ°Ô ÇÒ ¼ö ÀÖ´Ù.

$ alias vi='vim'


ÁöÁ¤µÈ alias ¸¦ ÇØÁ¦ÇÏ·Á¸é unlias ¸í·É¾î¿¡ alias ¸íÀ» Á־ ½ÇÇàÇÏ¸é µÈ´Ù. ´ÙÀ½ ¸í·ÉÀº vi alias ¸¦ ÇØÁ¦ÇÑ´Ù.

unalias vi


¿É¼Ç¾øÀÌ alias ¸í·ÉÀ» ½ÇÇàÇϸé -p ¿É¼ÇÀ» ºÙÀÎ °Í°ú µ¿ÀÏÇÑ È¿°ú¸¦ ³ªÅ¸³»¸ç ÀÌ °æ¿ì µî·ÏµÈ ¸ðµç alias ¸¦ Ç¥½ÃÇÑ´Ù.

alias alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'


Áß°ýÈ£ È®Àå(brace expansion)

Áß°ýÈ£ È®ÀåÀº bash ¿¡¸¸ ÀÖ´Â µ¶Æ¯ÇÑ ±â´ÉÀ¸·Î ÀÓÀÇÀÇ ¹®ÀÚ¿­À» »ý¼ºÇÏ°í À̸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â ±â´ÉÀ¸·Î °ýÈ£¸¦ ±â¹ÝÀ¸·Î ÇÏ¿© ¸í·É¾î¸¦ È®´ëÇØ ÁֹǷΠµ¿ÀÏÇÑ ¸í·É¾î¸¦ ºñ½ÁÇÑ ÆĶó¹ÌÅÍ·Î ¿©·¯ ¹ø È£ÃâÇØ¾ß ÇÒ °æ¿ì ¸Å¿ì Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¹®¹ýÀº Áß°ýÈ£¾È¿¡ È®ÀåÇÒ ¹®ÀÚ¿­À» ÄÞ¸¶(,) ¸¦ ±¸ºÐÀÚ·Î ÇÏ¿© ±â¼úÇϸç Áß°ýÈ£ ¾Õ µÚ¿¡´Â ġȯµÇÁö ¾Ê´Â ÆÐÅÏÀ» Àû¾îÁØ´Ù. ÀÌÇظ¦ À§ÇØ °£´ÜÇÑ ¿¹Á¦¸¦ »ìÆì º¸ÀÚ.

¸¸¾à abf, acf, adf, aef ¶ó´Â ¹®ÀÚ¸¦ echo ·Î ¿¬¼ÓÀûÀ¸·Î Ãâ·ÂÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¿©±â¿¡¼­ ½ÃÀÛÇÏ´Â 'a' ¹®ÀÚ¿Í ¸¶Áö¸· 'f' ¹®ÀÚ´Â °íÁ¤µÇ¾î ÀÖ°í Áß°£¿¡ ÇÑ °¡Áö ¹®ÀÚ¸¸ ¹Ù²î°Ô µÇ¹Ç·Î Áß°ýÈ£ È®Àå ±â´ÉÀ» »ç¿ëÇÏ¿© °£´ÜÇÏ°Ô ´ÙÀ½°ú °°ÀÌ ±â¼úÇÒ ¼ö ÀÖ´Ù.

$ echo a{b,c,d,e}f  

abf acf adf aef

ÇÑ °æ·Î ¹Ø¿¡ ¿©·¯ °³ÀÇ ÇÏÀ§ µð·ºÅ͸®¸¦ »ý¼ºÇØ¾ß ÇÏ´Â ÀÛ¾÷À» ÇØ¾ß ÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ. (ÈĹݿ¡ ±â¼úÇÏ´Â gitlab À̳ª redmine µî ¼³Ä¡³ª ½Ã½ºÅÛ ¿î¿µ ÀÛ¾÷½Ã ÀÌ·± »óȲÀº ºó¹øÇÏ°Ô ¹ß»ýÇÑ´Ù.)  
¿¹·Î /var/www/ µð·ºÅ͸® ¹Ø¿¡ example.com À̶ó´Â ÇÏÀ§ µð·ºÅ͸®¸¦ ¸¸µé°í ÀÌ ¹Ø¿¡ contents, logs, uploads ¶ó´Â ¼¼ °³ÀÇ ÇÏÀ§ µð·ºÅ͸®¸¦ ¸¸µé¾î¾ß ÇÒ °æ¿ì mkdir À» »ç¿ëÇÑ´Ù¸é ÃÖ¼Ò ´ÙÀ½°ú °°ÀÌ ¼¼ ¹øÀÇ mkdir ¸í·ÉÀ» ¼öÇàÇØ¾ß ÇÑ´Ù.

# mkdir -p /var/www/example.com/contents
# mkdir -p /var/www/example.com/logs
# mkdir -p /var/www/example.com/uploads

¿©·¯ ¹ø mkdir ¸í·É¾î¸¦ ½ÇÇàÇÏÁö ¾Ê°í brace expansion ±â´ÉÀ» È°¿ëÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÇÑ ¹øÀÇ Å¸ÀÌÇÎÀ¸·Î °ýÈ£¿¡ ÀÖ´Â ¼¼ °³ÀÇ ¹®ÀÚ°¡ ġȯµÇ¾î mkdir À» °¢°¢ ¼¼ ¹ø ½ÇÇàÇÑ °Í°ú µ¿ÀÏÇÑ È¿°ú¸¦ °®°Ô µÇ¹Ç·Î ¼¼ °³ÀÇ µð·ºÅ͸®¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù.

# mkdir -p /var/www/example.com/{contents,logs,uploads}

mkdir ½ÇÇà½Ã -p ¿É¼ÇÀ» ÁÖ¸é ºÎ¸ð µð·ºÅ͸®°¡ ¾øÀ» °æ¿ì »ý¼ºÇÏ°Ô µÈ´Ù.

±×·¯¹Ç·Î óÀ½ ¸í·É¾îÀΠmkdir /var/www/example.com/contents ½ÇÇà½Ã example.com µð·ºÅ丮°¡ ¾ø´Ù¸é »ý¼ºÇϹǷΠ¸ÕÀú example.com À» »ý¼ºÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

for loop

¸í·É¾î¸¦ ¿©·¯ ¹ø ½ÇÇàÇÒ ¶§³ª Áõ°¡ÇÏ´Â ÆÐÅÏÀ» ó¸®ÇÒ ¶§ À¯¿ëÇÑ ±â´ÉÀ¸·Î for ±¸¹®µÚ¿¡ °ýÈ£·Î {½ÃÀÛ°ª..Á¾·á°ª..Áõ°¡°ª} À» ½áÁÖ°í ·çÇÁ¸¦ µ¹ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â 1ºÎÅÍ 10±îÁö 2¾¿ Áõ°¡ÇϹǷΠÃÑ ´Ù¼¸ ¹øÀ» ½ÇÇàÇÏ°Ô µÈ´Ù.

for i in {1..10..2};do echo "Hello $i";done

¸¶Áö¸·ÀÇ Áõ°¡°ªÀº »ý·«Çصµ µÇ¹Ç·Î ´ÙÀ½ ¿¹Á¦´Â ¿­ ¹øÀ» ½ÇÇàÇÑ´Ù.

for i in {1..10};do echo "Hello $i";done


°£´ÜÇÑ º¯¼ö export

½© ½ºÅ©¸³Æ®³ª ¼³Á¤ ÆÄÀϵ ¼³Á¤ÇÑ ³»¿ëÀ» Àü¿ªÀûÀ¸·Î ÀÐÀ¸·Á¸é export Å°¿öµå¸¦ »ç¿ëÇÏ¿© Àü¿ª ¼³Á¤ÇØ¾ß ÇÑ´Ù. ±âÁ¸ À¯´Ð½º¿¡¼­ »ç¿ëÇÏ´Â sh ´Â export ½Ã ´ÙÀ½°ú °°ÀÌ µÎ ´Ü°è·Î ³ª´²¼­ ¼³Á¤ÇØ¾ß ÇÑ´Ù.

PATH=$PATH:/usr/local/bin
export PATH

bash ´Â º¯¼ö¸¦ ¼±¾ðÇϸ鼭 ¹Ù·Î export ¸í·ÉÀ» Àû¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î ´ÙÀ½°ú °°ÀÌ °£´ÜÇÏ°Ô ÇÑ ¹®ÀåÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.

export PATH=$PATH:/usr/local/bin


ÁÙ ÆíÁý(line-editing)

¸í·ÉÇà È÷½ºÅ丮³ª ÅÇ ¿Ï¼º°°Àº bash ¸¸ÀÇ Æí¸®ÇÑ command line ´É·ÂÀº readline À̶ó´Â º°µµÀÇ library ·Î 󸮵ȴÙ. ¿ø·¡ readline Àº bash ÀÇ ÀϺο´À¸³ª ¿ö³« À¯¿ëÇÏ°í ¾²ÀÓ»õ°¡ ¸¹¾Æ¼­ º°µµÀÇ ¶óÀ̺귯¸®·Î ºÐ¸®µÇ¾î °ü¸®µÇ°í ÀÖ´Ù.

command ±â¹ÝÀ¸·Î µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥¿¡ È÷½ºÅ丮³ª ÅÇ ¿Ï¼º ±â´ÉÀÌ ÇÊ¿äÇϸé readline library ¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ ÆíÀǼºÀ» ³ôÀϼö ÀÖ´Ù. ´ëÇ¥ÀûÀ¸·Î MySQL DBMS ¿¡ ³»ÀåµÈ ¸í·ÉÇà Ŭ¶óÀ̾ðÆ®ÀÎ mysql ¸í·Éµµ readline À» »ç¿ëÇÏ°í ÀÖ´Ù. 


ÁÙ ÆíÁý ±â´ÉÀº bash ÀÇ ¸í·ÉÁÙÀ» ÆíÁýÇÒ ¼ö ¾µ ¼ö ÀÖ´Â ±â´ÉÀ¸·Î Àͼ÷ÇØÁö¸é ¸Å¿ì È¿À²ÀûÀ¸·Î ÀÛ¾÷ÇÒ ¼ö ÀÖ´Â À¯¿ëÇÑ ±â´ÉÀÌ´Ù. ¸ÕÀú bash ¿¡ ±âº» ¼³Á¤µÈ readline ¸í·É°ú ¸ÅÇÎµÈ Å°º¸µå ´ÜÃàÅ°´Â bind -p ¸í·É¾î·Î º¼ ¼ö ÀÖ´Ù.



$ bind -p
"\C-a": beginning-of-line
"\C-e": end-of-line
"\C-r": reverse-search-history
...
´ÜÃàÅ° È®ÀÎ

ÁÙ ÆíÁýÀº ¸¹Àº ±â´ÉÀ» °®°í ÀÖÁö¸¸ ¸¹ÀÌ ¾²ÀÌ°í À¯¿ëÇÑ ±â´É°ú ´ÜÃàÅ°¸¦ Á¤¸®ÇØ º¸¸é ´ÙÀ½°ú °°´Ù. (Àü±¸) (\C´Â Ctrl key, \e ´Â Esc Key ÀÌ´Ù)

Key
action
ºñ°í
\C-a line ÀÇ Ã³À½À¸·Î °¡±â
\C-e line ÀÇ ³¡À¸·Î °¡±â
\C-p¿¹Àü history·Î °¡±âÅ°º¸µåÀÇ À­ÂÊ Ä¿¼­Ç¥ ¡è µ¿ÀÏ ("\e[A")
\C-n´ÙÀ½ history·Î °¡±âÅ°º¸µåÀÇ ¾Æ·¡ÂÊ Ä¿¼­Ç¥ÀÇ ¡éµ¿ÀÏ("\e[B")
\C-rreverse increment search¿¹Àü¿¡ »ç¿ëÇß´ø ¸í·É¾î¸¦ ÇÑ ±ÛÀÚ¾¿ Ä¡¸é¼­ ãÀ»¼ö ÀÖÀ½. ¸¹Àº ¸í·É¾î¸¦ ¼öÇàÇßÀ»¶§ ¿¹Àü ¸í·É¾î È£Ãâ½Ã À¯¿ë
\e-ulineÀÇ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯°æ
\e-llineÀÇ ¹®ÀÚ¸¦ ¼Ò¹®ÀÚ·Î º¯°æ
readline ÀÇ ÁÖ¿ä ´ÜÃàÅ° ¸ñ·Ï

ÀÌÁ¦ ÁÙ ÆíÁý ±â´ÉÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë¾Æ º¸ÀÚ.  /etc µð·ºÅ͸®¿¡¼­ xml ÆÄÀÏÁß ³»¿ë¿¡ UTF-8 ÀÌ µé¾î°¡´Â °É ã¾Æ¼­ ¸ñ·ÏÀ» Ãâ·ÂÇÏ´Â ´ÙÀ½ ¸í·É¾î°¡ ÀÖ´Ù.

    find /etc -name \*.xml -exec grep UTF-8 /dev/null {} \;

Àú ±æ°í º¹ÀâÇÑ ¸í·É¾î¸¦ Ä¡´Ù°¡ ½Ç¼ö·Î find ´ë½Å fond ¶ó°í Ä¡°í ½ÇÇàÇϸé command not found ¿¡·¯°¡ ³ª°í ½ÇÇàÀÌ µÇÁö ¾ÊÀ» °ÍÀÌ´Ù.

ÀÌÁ¦ sh »ç¿ëÀÚ´Â Àú ±ä ¸í·É¾î¸¦ óÀ½ºÎÅÍ ´Ù½Ã ÃÄ¾ß ÇÑ´Ù.

bash »ç¿ëÀÚ¶ó¸é À§ÂÊ Ä¿¼­Ç¥·Î ¿ÀŸ³½ ¸í·É¾î¸¦ ºÒ·¯³»°í ¿ÞÂÊ Ä¿¼­Å°·Î Ä¿¼­¸¦ ¿ÀŸ³­ ºÎºÐ±îÁö À̵¿½ÃÄÑ ¿ÀŸ¸¦ ¼öÁ¤ÇÏ°í Àç½ÇÇàÇÏ¸é µÈ´Ù.

ÇÏÁö¸¸ ÁÙ ÆíÁý ±â´ÉÀ» »ç¿ëÇÏ¸é ´õ °£´ÜÇØÁø´Ù. Ctrl-a ¸¦ ´©¸£¸é ÁÙÀÇ Ã³À½ ºÎºÐÀ¸·Î À̵¿ÇϹǷΠ¸Ç ¾ÕÀÇ f ¿¡ À§Ä¡ÇÏ°Ô µÇ¸ç ¿ìÃø Ä¿¼­Å°¸¦ Çѹø¸¸ ´©¸£¸é ¹Ù·Î ¿ÀŸ¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ´Ù.

¶Ç À¯¿ëÇÑ ±â´ÉÀº reverse increment search ±â´ÉÀÌ´Ù.


¿ª Á¡Áø Ž»ö(reverse increment search)

bash ÀÇ È÷½ºÅ丮´Â HISTSIZE ȯ°æ º¯¼ö¿¡ ÃÖ´ë ÀúÀåÇÒ ¼ö ÀÖ´Â °¹¼ö°¡ ÁöÁ¤µÇ¾î ÀÖ°í ±âº»°ªÀº 1,000 ÀÌ´Ù. ÀÌÁ¦ º¹ÀâÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´À¶ó ¾ÆÁÖ ¸¹Àº ¸í·É¾î(200°³)¸¦ ½ÇÇàÇß´Ù°í ÇÏÀÚ. ±×Áß¿¡ Çϳª´Â À§ÀÇ find ¸í·É¾îÀε¥ ±× ¸í·É¾î¸¦ ÀçÈ£ÃâÇÒ ÀÏÀÌ »ý°å´Âµ¥ ±× ¸í·É¾î´Â 97¹ø°¿¡ ¾Õ¿¡ ½ÇÇàÇß¾ú´Ù.

±×·³ Ä¿¼­Å°¸¦ 97¹øÀ» ´­·¯¾ß ÇÒ±î? reverse increment search ±â´ÉÀ» »ç¿ëÇÏ¸é ¼øÂ÷ÀûÀ¸·Î ¿øÇÏ´Â ¸í·É¾î¸¦ ¼Õ½±°Ô ãÀ» ¼ö ÀÖ´Ù. 

  1. bash ÇÁ·ÒÇÁÆ®¿¡¼­ Ctrl-r Å°¸¦ ´­·¯¼­ ´ÙÀ½°ú °°ÀÌ Reverse-i-search ¸ðµå·Î µé¾î°£´Ù.
  2. Prompt °¡ ¾ø¾îÁö°í ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂâÀÌ ¶á´Ù.

    (reverse-i-search)`':
  3. ¼øÂ÷ÀûÀ¸·Î ãÀ¸¹Ç·Î ÇÑ ±ÛÀÚ¸¦ ÀÔ·ÂÇÒ¶§ ¸¶´Ù ÇØ´çÇÏ´Â ¸í·É¾î¸¦ º¸¿©ÁØ´Ù. ´ÙÀ½Ã³·³ fi ¸¸ Ãĵµ ¿¹Àü¿¡ ¼öÇàÇß´ø ¸í·ÉÁß fi ÀÖ´Â °É Ç¥½ÃÇÑ´Ù.

    (reverse-i-search)`fi': find . -name \*xml
  4. È£ÃâÇÏ°íÀÚ ÇÏ´Â ¿¹Àü ¸í·É¾î¿Í ÀÏÄ¡ÇÒ ¶§±îÁö ³ª¸ÓÁö ¸í·É¾î¸¦ ÀÔ·ÂÈÄ ¿£Å͸¦ Ãļ­ ¸í·É¾î¸¦ ¼öÇàÇÑ´Ù.

ȯ°æ º¯¼ö¿Í ¼³Á¤

¼³Á¤ ÆÄÀÏ Ã³¸® ¼ø¼­

bash ¸¦ ·Î±×ÀÎ ½©·Î »ç¿ëÇÒ °æ¿ì ¼³Á¤À» ÆÄÀÏ¿¡¼­ ÀÐ°Ô µÈ´Ù. ¼³Á¤ ÆÄÀÏÀº ¸ÕÀú /etc/bashrc ÆÄÀÏÀÇ ¼³Á¤À» ÀÐ°í ¾È¿¡ ¸í·É¾î°¡ ÀÖÀ» °æ¿ì ½ÇÇàÇÏ°í ÀÌÈÄ¿¡ ~/.bashrc, ~/.bash_profile¼ø¼­´ë·Î ó¸®ÇÑ´Ù.

»ç¿ëÀÚ°¡ logout ÇÒ °æ¿ì ~/.bash_logout ±×¸®°í /etc/bash.bash_logout ÆÄÀÏÀÌ ÀÖ´ÂÁö È®ÀÎÇÏ¿© ÀÖÀ» °æ¿ì ó¸®ÇÏ°Ô µÈ´Ù. ÀϹÝÀûÀ¸·Î ~/.bashrc ÆÄÀϺ¸´Ù´Â ~/.bash_profile ¿¡ °³ÀÎÀûÀÎ ³»¿ëÀ» ¼³Á¤ÇÑ´Ù.

¼³Á¤ ÆÄÀÏÀÌ º¯°æµÇ¾ú´Ù¸é source ~/.bash_profile ¶Ç´Â . ~/.bash_profile ¸í·ÉÀ¸·Î ¼³Á¤ ÆÄÀÏÀ» ´Ù½Ã ÀÐ¾î µé¿©¾ß ÇöÀç bash ¿¡ ¹Ý¿µµÈ´Ù. 


ȯ°æ º¯¼ö

bash ´Â ¿©·¯ °¡Áö ȯ°æ º¯¼ö¸¦ ÅëÇØ µ¿ÀÛÀ» Á¦¾îÇÒ ¼ö ÀÖ´Ù.  ±×Áß¿¡ ²À ¾Ë¾ÆµÎ¾î¾ß ÇÒ È¯°æ º¯¼ö¸¦ ¾Ë¾Æ º¸°í .bash_profile ¿¡ ¼³Á¤ÇØ º¸ÀÚ


VISUAL

VISUAL  È¯°æ º¯¼ö´Â »ç¿ëÇÒ ÆíÁý±â¸¦ ÁöÁ¤Çϴ ȯ°æ º¯¼öÀÌ´Ù. ÀÌ º¯¼ö¸¦ ÁöÁ¤Çϸé ÆíÁý±â°¡ ÇÊ¿äÇÑ ÀÛ¾÷ÀÌ ÀÖÀ» °æ¿ì ¼³Á¤µÈ ÆíÁý±â¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿¹·Î crontab À» ÆíÁýÇϰųª Å͹̳ο¡¼­ ¼­ºê¹öÀüÀ̳ª git µîÀÇ ¹öÀü °ü¸® ÇÁ·Î±×·¥¿¡¼­ Ä¿¹Ô ¸Þ½ÃÁö ÀÛ¼ºµîÀÇ ÀÛ¾÷ÀÌ ÀÖ´Ù.

EDITOR º¯¼ö¿Í ¿ëµµ´Â µ¿ÀÏÇϳª EDITOR´Â ed °°Àº ÁÙ ±â¹ÝÀÇ ÆíÁý±â¸¦ ÁöÁ¤ÇÏ°í vim °°Àº ±â´ÉÀÌ ¸¹Àº ÆíÁý±â´Â VISUAL º¯¼ö·Î ÁöÁ¤ÇÏ´Â°Ô ÀϹÝÀûÀÌ´Ù.

cron ÇÁ·Î±×·¥À̳ª svn, git µîÀº VISUAL º¯¼ö¸¦ È®ÀÎÇÏ°í ¾øÀ» °æ¿ì EDITOR º¯¼ö¸¦ ã´Â´Ù.

¼³Á¤ ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÏ¸é µÈ´Ù.

    export VISUAL=/usr/bin/vim


PS1

bashÀÇ ÇÁ·ÒÇÁÆ® ¸ð¾çÀ» ÁöÁ¤ÇÏ´Â º¯¼öÀÌ´Ù. ±âº» ¼³Á¤Àº [\u@\h \W]\$ À̸ç "»ç¿ëÀÚ¸í@È£½ºÆ®¸í ÀÛ¾÷µð·ºÅ͸®" ¸¦ ÇÁ·ÒÇÁÆ®¿¡ Ç¥½ÃÇÏ°Ô µÈ´Ù. ÇÊÀÚÀÇ °æ¿ì ´ÙÀ½ PS1 º¯¼ö¸¦ »ç¿ëÇϴµ¥ ÀÌ·² °æ¿ì Ä÷¯·Î Àüü °æ·Î¸¦ Ç¥½ÃÇϹǷΠ°¡µ¶¼ºÀÌ ÁÁÀº ÀåÁ¡ÀÌ ÀÖ´Ù.

À§¿¡ ÀÖ´Â È­¸éÀº CentOS ±âº» ¼³Á¤ÀÌ¸ç ¾Æ·¡¿¡ ÀÖ´Â È­¸éÀÌ ÇÊÀÚÀÇ PS1 ¼³Á¤Àε¥ ÀÌ°É »ç¿ëÇÒ µ¶ÀÚµéÀº º¹ÀâÇϹǷΠÁ÷Á¢ Ä¡Áö ¸»°í ºÎ·Ï ¼Ò½º¸¦ Âü°íÇÏÀÚ.

ÇÁ·ÒÇÁÆ® ¼³Á¤


PATH

bash °¡ ½ÇÇà ÇÁ·Î±×·¥À» ã´Â °æ·Î¸¦ ÁöÁ¤Çϴ ȯ°æ º¯¼öÀÌ´Ù. ÄÝ·Ð(:) À¸·Î ±¸ºÐÇÏ¿© ¿©·¯ °³¸¦ ¼³Á¤ ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥À» /usr/bin À̳ª /usr/local/bin °°Àº ÀϹÝÀûÀÌÁö ¾ÊÀº °æ·Î¿¡ ¼³Ä¡Çß´Ù¸é ÇØ´ç °æ·Î¸¦ PATH º¯¼ö¿¡ ÁöÁ¤ÇØ ÁÖ¾î¾ß Àý´ë °æ·Î¸¦ ÀÔ·ÂÇÏÁö ¾Ê°í »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¼³Á¤ ÆÄÀÏ¿¡ PATH Ãß°¡½Ã ±âÁ¸ PATH º¯¼ö¸¦ Àû¾îÁÖ°í ±× µÚ¿¡ Ãß°¡ÇÒ PATH ¸¦ Àû¾îÁÖ¸é µÈ´Ù.

    export PATH=$PATH:/opt/myprog/bin


LD_LIBRARY_PATH

Á¤È®È÷´Â bash °¡ »ç¿ëÇÏ´Â º¯¼ö´Â ¾Æ´Ï°í ¸®´ª½ºÀÇ ÇÁ·Î±×·¥ ·Î´õ(loader) ÀÎ ld.so °¡ Âü°íÇÏ´Â º¯¼öÀÌ´Ù. ÇÁ·Î±×·¥ ½ÇÇà¿¡ ÇÊ¿äÇÑ µ¿Àû ¶óÀ̺귯¸®(È®ÀåÀÚ .so) ¸¦ ã´Â °æ·ÎÀ̸ç ÀÌ °æ·Î¿¡ ¶óÀ̺귯¸®°¡ ¾ø´Ù¸é ÇÁ·Î±×·¥ ½ÇÇà¿¡ ½ÇÆÐÇÑ´Ù.

ÇÁ·Î±×·¥ ¼³Ä¡½Ã µ¿Àû ¶óÀ̺귯¸®°¡ °°ÀÌ ¼³Ä¡µÆ´Âµ¥ /lib, /usr/lib, /usr/local/lib °°ÀÌ ÀϹÝÀûÀÎ °æ·Î°¡ ¾Æ´Ò °æ¿ì¿¡´Â ÀÌ È¯°æ º¯¼ö¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù. 


LANG

¾î¶² ·ÎĶ(locale) À» »ç¿ëÇÒ Áö ¼³Á¤ÇÏ´Â º¯¼öÀÌ´Ù. ¼³Ä¡ ¾ð¾î¸¦ Çѱ۷ΠÇßÀ¸¸é ±âº» ·ÎĶÀº ko_KR.UTF-8 °¡ µÈ´Ù. ÀÌ °æ¿ì ÇÁ·Î±×·¥ÀÌ ´Ù°³±¹¾î¸¦ Áö¿øÇÏ°í ÇÑ±Û ¹ø¿ªÀÌ ÀÖÀ» °æ¿ì ¸Þ½ÃÁö°¡ Çѱ۷Πǥ½ÃµÇ¸ç man À¸·Î º¸´Â ½Ã½ºÅÛ ¸Å´º¾ó ÆäÀÌÁö, ±âŸ ¿¡·¯ ¸Þ½ÃÁöµîÀÌ Çѱ۷Πǥ½ÃµÈ´Ù.

Ȥ½Ã Å͹̳Π¼³Á¤ÀÌ À߸ø µÇ¾ú°Å³ª ÇѱÛÀ» Ãâ·ÂÇÒ ¼ö ¾ø´Â Å͹̳ÎÀ̰ųª µîÀÇ ÀÌÀ¯·Î ÇѱÛÀÌ ±úÁö¸é ·ÎĶÀ» ´Ù¸¥ ¾ð¾î·Î ¼³Á¤ÇØ ÁÖ¸é µÈ´Ù.

·ÎĶÀº Ç¥½Ã ¾ð¾î(LC_MESSAGES)¿Ü¿¡ È­Æó Ç¥½Ã(LC_MONETARY), ¼ýÀÚ Ç¥½Ã(LC_NUMERIC), ½Ã°£´ë(LC_TIME) µî °³º° ¼³Á¤ º¯¼ö°¡ °¢°¢ ÀÖÀ¸¹Ç·Î Ç¥½Ã ¾ð¾î¸¸ ´Ù¸¥ ¾ð¾î·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

´ÙÀ½°ú °°ÀÌ ¼³Á¤Çϸé Ç¥½Ã ¾ð¾î¸¸ ¿µ¾î·Î ¼³Á¤µÈ´Ù.

    export LC_MESSAGES=en_US.utf8

LANG º¯¼ö¿¡ ¼³Á¤ÇÏ´Â °ÍÀº ·ÎĶ °ü·Ã °³º° º¯¼ö¸¦ ÇÑ ¹ø¿¡ ¼³Á¤Çϱâ À§ÇÑ º¯¼öÀ̹ǷΠÀüü ·ÎĶÀ» º¯°æÇÒ °æ¿ì ´ÙÀ½Ã³·³ LANG º¯¼ö¸¦ ¼³Á¤ÇÏ¸é µÈ´Ù.

    export LANG=en_US.utf8

ÇöÀç ¼³Á¤µÈ ·ÎĶÀº locale ¸í·ÉÀ» ½ÇÇàÇÏ¸é ¾Ë ¼ö ÀÖ´Ù.