3.20. º°Äª(Aliases)

bashÀÇ º°Äª(alias)Àº º»·¡ Űº¸µå ´ÜÃàŰ³ª »ý·«ÀÌ»óÀÇ Àǹ̵µ °®Áö ¾Ê½À´Ï´Ù. Áï, ±ä ¸í·É¾îµéÀÇ Á¶ÇÕÀ» ª°Ô ¸¸µé¾î ÁÖ´Â ¿ªÇÒ»ÓÀ̶õ ¸»ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î¼­ ~/.bashrc(3.23절 Âü°í) ÆÄÀÏ¿¡ alias lm="ls -l | more"¶ó°í Àû¾îÁÖ¸é ¸í·É¾îÇà¿¡¼­ lmÀ̶ó°í Ä¥ ¶§¸¶´Ù ÀÚµ¿À¸·Î ls -l | more¶ó°í ¹Ù²ò´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¸í·É¾îÇà»ó¿¡¼­ ŸÀÌÇÎÀ» ¾öû³ª°Ô ÁÙÀÏ ¼ö°¡ ÀÖ°Å´Ï¿Í ¾ÆÁÖ º¹ÀâÇÑ ¸í·É¾î³ª ¿É¼ÇÀÇ Á¶ÇÕµéÀ» ÀÏÀÏÀÌ ´Ù ±â¾ïÇϰí ÀÖÁö ¾Ê¾Æµµ µË´Ï´Ù.

½ºÅ©¸³Æ®¿¡¼­´Â ÀÌ º°Äª(alias)ÀÌ ¾ÆÁÖ Á¦ÇÑµÇ¾î ¾²ÀÔ´Ï´Ù. ¸¸¾à¿¡ º°Äª¿¡ ¸ÅÅ©·Î È®Àå°°Àº C Àü󸮱â(preprocessor) ±â´ÉÀÌ ÀÖ¾ú´Ù¸é ¾ÆÁÖ ÁÁ¾ÒÀ» ÅÙµ¥, ¾Æ½±°Ôµµ º°Äª¿¡ ¼ÓÇÑ ÀÎÀÚµéÀº È®ÀåµÇÁö ¾Ê½À´Ï´Ù. °Ô´Ù°¡, if/then¹®, ·çÇÁ, ÇÔ¼ö °°Àº "º¹ÇÕ¹®" ¾È¿¡¼­´Â º°Äª ÀÚüÀÇ È®ÀåÀÌ µÇÁú ¾Ê½À´Ï´Ù. ¾Æ¸¶ °ÅÀÇ Ç×»ó ±×·²Å×Áö¸¸, º°ÄªÀ¸·Î ¹«¾ùÀ» ÇÏ·Á°í ÇϵçÁö°£¿¡ ÇÔ¼ö¿¡¼­ ±¸ÇöÇÏ´Â °ÍÀÌ ´õ È¿°úÀûÀÏ °ÍÀÔ´Ï´Ù.

예 3-85. ½ºÅ©¸³Æ®¿¡¼­ ¾²ÀÌ´Â º°Äª(alias)

#!/bin/bash2

shopt -s expand_aliases
# ÀÌ ¿É¼ÇÀ» ²À ½á¾ß º°Äª(alias)À» È®Àå½Ãų ¼ö ÀÖ½À´Ï´Ù.


# ¸ÕÀú Àç¹Ì·Î Çϳª ÇØº¸ÁÒ.
alias Jesse_James='echo "\"Alias Jesse James\" was a 1959 comedy starring Bob Hope."'
Jesse_James


echo; echo; echo;

alias ll="ls -l"
# º°ÄªÀ» Á¤ÀÇÇÏ·Á¸é ÀÛÀº µû¿ÈÇ¥(')³ª Å« µû¿ÈÇ¥(")Áß Çϳª¸¦ ½á¾ß ÇÕ´Ï´Ù.

echo "Trying aliased \"ll\":"
ll /usr/X11R6/bin/mk*   # Àß µË´Ï´Ù.

echo

directory=/usr/X11R6/bin/
prefix=mk*  # ¿ÍÀϵå Ä«µå°¡ ¹®Á¦¸¦ ÀÏÀ¸Å°´ÂÁö ÇÑ ¹ø º¾½Ã´Ù.
echo "Variables \"directory\" + \"prefix\" = $directory$prefix"
echo

alias lll="ls -l $directory$prefix"

echo "Trying aliased \"lll\":"
lll  # /usr/X11R6/bin¿¡¼­ mk·Î ½ÃÀÛÇÏ´Â ¸ðµç ÆÄÀϵéÀÇ ¸ðµç(long) Á¤º¸¸¦ º¸¿©ÁÝ´Ï´Ù.
# º°ÄªÀº ¿ÍÀϵå Ä«µå¸¦ Æ÷ÇÔÇÑ º¯¼öÀÇ ¿¬°áÀ» Àß Ã³¸®ÇÕ´Ï´Ù.




TRUE=1

echo

if [ TRUE ]
then
  alias rr="ls -l"
  echo "Trying aliased \"rr\" within if/then statement:"
  rr /usr/X11R6/bin/mk*   # ¿¡·¯ ¸Þ¼¼Áö°¡ ³ª¿ÀÁÒ!
  # º¹ÇÕ¹® ¾È¿¡¼­´Â È®ÀåµÇÁö ¾Ê½À´Ï´Ù.
  echo "However, previously expanded alias still recognized:"
  ll /usr/X11R6/bin/mk*
fi  

echo

count=0
while [ $count -lt 3 ]
do
  alias rrr="ls -l"
  echo "Trying aliased \"rrr\" within \"while\" loop:"
  rrr /usr/X11R6/bin/mk*   # ¿ª½Ã È®ÀåµÇÁö ¾Ê½À´Ï´Ù.
  let count+=1
done 


exit 0