یک مستعار اجازه میدهد، وقتی یک کلمه به عنوان اولین کلمه یک دستور ساده به کار میرود، یک رشته جایگزین آن بشود. پوسته لیستی از مستعارها را نگهداری میکند، که میتوانند با دستورات داخلی alias و unalias نصب و عزل بشوند. دستور alias بدون گزینه، مستعارهای شناخته شده پوسته جاری را لیست میکند.
franky: ~>
alias alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias PAGER='less -r' alias Txterm='export TERM=xterm' alias XARGS='xargs -r' alias cdrecord='cdrecord -dev 0,0,0 -speed=8' alias e='vi' alias egrep='grep -E' alias ewformat='fdformat -n /dev/fd0u1743; ewfsck' alias fgrep='grep -F' alias ftp='ncftp -d15' alias h='history 10' alias fformat='fdformat /dev/fd0H1440' alias j='jobs -l' alias ksane='setterm -reset' alias ls='ls -F --color=auto' alias m='less' alias md='mkdir' alias od='od -Ax -ta -txC' alias p='pstree -p' alias ping='ping -vc1' alias sb='ssh blubber' alias sl='ls' alias ss='ssh octarine' alias tar='gtar' alias tmp='cd /tmp' alias unaliasall='unalias -a' alias vi='eval `resize`;vi' alias vt100='export TERM=vt100' alias which='type' alias xt='xterm -bg black -fg white &'franky ~>
مستعارها برای تعیین نگرش پیشفرض یک فرمان، که چند نسخه از آن در سیستم شما موجود است، یا برایبرای تعیین گزینههای پیشفرض یک فرمان، سودمند میباشد. استفاده دیگر مستعارها برای اصلاح املای ناصحیح است .
اگر اولین کلمه هر دستور ساده، غیر نقلقولی باشد، برای مستعار بودن کنترل میشود. اگر مستعار باشد کلوه با متن مستعار تعویض میگردد. نامهای مستعار و متن جایگزین میتوانند شامل هر ورودی معتبر برای شل،از جمله کاراکترهای عام باشند، با این استثناء که نام مستعار نمیتواند شامل“=” باشد. اولین کلمه متن جایگزین از جهت مستعار بودن بررسی میشود، اماکلمهای که به عنوان مستعار تشخیص داده شده و بسط یافته، برای دومین بار بسط نمییابد. این به آن معنا میباشد که ممکن است کسی به عنوان نمونه ls را مستعارls -F
نماید، در آن صورت Bash برای بسط متن به صورت بازگشتی سعی نخواهد نمود. اگر آخرین کاراکتر محتوای یک مستعار کاراکتر فاصله یا tab باشد، کلمه بعدی دستور نیز برای بسط مستعار بررسی میشود.
وقتی پوسته، محاورهای باشد مستعارها بسط نمییابند، مگر این که گزینه expand_aliases
با استفاده از دستور داخلی shopt پوسته تنظیم شده باشد.
مستعارها با دستور داخلی alias پوسته تولید میشوند. برای استفاده دائمی alias را در یکی از فایلهای مقداردهی اولیه پوسته قرار دهید، اگر فقط مستعار را در خط فرمان وارد کنید، فقط در شل جاری تشخیص داده میشود.
franky ~>
aliasdh='df -h'
franky ~>
dh Filesystem Size Used Avail Use% Mounted on /dev/hda7 1.3G 272M 1018M 22% / /dev/hda1 121M 9.4M 105M 9% /boot /dev/hda2 13G 8.7G 3.7G 70% /home /dev/hda3 13G 5.3G 7.1G 43% /opt none 243M 0 243M 0% /dev/shm /dev/hda6 3.9G 3.2G 572M 85% /usr /dev/hda5 5.2G 4.3G 725M 86% /varfranky ~>
unaliasdh
franky ~>
dh bash: dh: command not foundfranky ~>
Bash همیشه حداقل یک سطر کامل ورودی را قبل از اجرای هر فرمانی از آن سطر، ، میخواند. مستعارها وقتی بسط داده میشوند که یک دستور خوانذه میشود، نه موقعی که اجرا میشود. بنابراین، یک تعریف مستعار که در سطری با دستور دیگر قرار دارد ، تا موقع خواندن سطر بعدی مؤثر نخواهد بود. دستوراتی که در یک سطر بعد ازتعریف مستعار قرار دارند، از این مستعار تآثیر نمیپذیرند. همچنین موقعی که توابع اجرا شدهاند، این رفتار مطرح میباشد. موقعی که تعریف یک تابع خوانده میشود، مستعارها بسط داده میشوند، نه وقتی که تابع اجرا میشود، زیرا یک تعریف تابع خودش، یک دستور مرکب است. درنتیجه، مستعارهای تعریف شده در یک تابع، تا وقتی که آن تابع اجرا نشده است، در دسترس نیستند. همیشه مراقب باشید، که تعریف مستعار را در یک سطر جداگانه قراردهید، و از alias در دستورات مرکب به کار نبرید.
پردازشهای فرزند مستعارها را به ارث نمیبرند. پوسته بورن (sh) مستعارها را شناسایی نمیکند.
مطالب بیشتر در باره توابع در فصل 11، توابع.
توابع سریعتر هستند | |
---|---|
مستعارها بعد از توابع مراجعه میشوند، بنابراین از توابع کندتر هستند. در حالیکه مستعارها برای فهمیدن، آسانتر میباشند، توابع پوسته تقریباً برای تمام مقاصد بر مستعارها ارجحیت دارند. |