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

shopt چیست

shopt (مخفف shell options) دستوری built-in در پوسته های bash و sh برای نمایش و تغییر خصوصیات پوسته های bash و sh است. پارامتر های آن مقادیر on و off می گیرند. برای فعال کردن یک پاامتر (خصوصیت) از سوئیچ s- (مخفف set) و برای غیر فعال کردن خصوصیت از سوئچ u- (مخفف unset) استفاده می کنیم. برای نمایش تمامی خصوصیات خط فرمان از دستور های زیر استفاده کنید.

shopt | less

shopt -p | less

دومین دستور در خروجی وضعیت فعلی را به صورت u- و s- به ترتیب معرف غیر فعال و فعال بودن آن خصوصیت نشان می دهد. همچنین اولین دستور وضعیت را به صورت on و off نشان می دهد. برای فعال (on یا set) کردن خصوصیت از دستور زیر استفاده کنید.

shopt -s PROPERTY

و برای غیر فعال (off یا unset) کردن خصوصیت از دستور زیر استفاده کنید. در هر دو دستور بجای PROPERTY نام خصوصیت مورد نظر را بیاورید.

shopt -u PROPERTY

دو مثال کاربردی

  • cdspell : فرض کنید می خواهید با دستور cd به دایرکتوری etc/ بروید اما به اشتباه دستور cd /ect را اجرا می کنید. اگر چنین دایرکتوری وجود نداشته باشد (که قطعن وجود ندارد) باید خطای زیر مبنی بر عدم وجود دایرکتوری نشان داده شود.

-bash: cd: /ect: No such file or directory

با فعال کردن cdspell خود bash اگر شما اشتباهی نام دایرکتوری را بنویسید، به دایرکتوری با نزدیکترین Spell به دایرکتوری ect/ تغییر مکان می دهد.

shopt -s cdspell

  • xpg_echo : بطور پیش فرض دستور echo عکس العملی درباره کاراکتر های خاص مانند n\ یا t\ یا r\ و … ندارد. بطور مثال فرض کنید دستور زیر را اجرا کردیم. هدف ما چاپ رشته های بعد n\ در زیر رشته های قبل از n\ است. اما اینطور نیست.

“echo “this is line 1 \nthis is line 2

دو راه برای رفع این مشکل وجود دارد:

  • استفاده از سوئیچ e- در دستور echo بصورت زیر.

“echo -e “this is line 1 \nthis is line 2

  • دومین روش فعال کردن خصوصیت xpg_echo. با فعال کردن آن دیگر نیازی به استفاده از سوئیچ e- نسیت.

shopt -s xpg_echo

برای اطلاع بیشتر و کاربرد هر کدام از خصوصیات اینجا را بخوانید.



برچسب ها : , , , , ,