منبع اصلی نوشتار زیر در این لینک قرار دارد

مستعارها

ادامه یادداشت قبل


راهنمای آموزشی  BashGuide   مؤلف  Lhunath

مستعارها

مستعارها در نگاه اول ظاهراً مشابه توابع هستند، اما در بررسی عمیق‌تر، آنها رفتار کاملا متفاوتی دارند.

  • مستعارها به هیچ وجه در اسکریپت‌ها عمل نمی‌کنند. آنها فقط در پوسته محاوره‌ای کار میکنند.
  • مستعارها نمی‌توانند شناسه قبول کنند.
  • مستعارها خودشان را به طور بازگشتی احضار نمی‌کنند.
  • مستعارها نمی‌توانند متغیرهای محلی داشته باشند.

اساساً مستعارها، میانبرهایی برای استفاده درفایلهای ‎.bashrc‎ جهت آسانتر نمودن روند کارهای شما می‌باشند. آنها به طور معمول چنین به نظر می‌آیند:

    $ alias ls=\'ls --color=auto\'

BASH اولین کلمه هر دستور ساده را بررسی می‌کند، که ببیند آیا یک مستعار است، و اگر چنین باشد، یک جایگزینی ساده متن را انجام می‌دهد. بنابراین، اگر شما تایپ کنید

    $ ls /tmp

BASH چنان عمل می‌کند، که گویی تایپ نموده‌اید

    $ ls --color=auto /tmp

اگر خواسته باشید این توانایی را در یک تابع ایجاد کنید، به این شکل خواهد شد:

    $ unalias ls
    $ ls() { command ls --color=auto "$@"; }

همانند یک گروه دستور، اگر بخواهیم تمام آن را در یک سطر بنویسیم، لازم است یک سمی‌کالن (;) قبل از بستن تابع با ‎ }‎ به کار ببریم. دستور داخلی ویژه command به تابع ما می‌گوید خودش را به طور بازگشتی فراخوانی نکند، به جای آن می‌خواهیم آن فرمان ls را فراخوانی کند، که در صورت عدم وجود تابع همنام خودش آن را احضار می‌کرد.

مستعارها تا زمانی که شما از آنها نخواهید همچون توابع کار کنند، مناسب هستند. اگر رفتار پیچیده‌ای مورد انتظار شماست، به جای آن از تابع استفاده کنید.

انهدام ساختارها

برای از بین بردن یک تابع یا متغیراز محیط جاری پوسته خود، دستور unset را به کار ببرید.

    $ unset myfunction

برای از بین بردن مستعار، فرمان unalias را به کار ببرید.

    $ unalias rm



پایان فصل هشتم