آموزش‌های خط فرمانی

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

آموزش‌های خط فرمانی

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

به پایان آمد این دفتر

سرانجام ترجمه بخش BashFAQ از ویکی Greg's Wiki شامل ۱۱۰ پرسش و پاسخ به پایان رسید. این مجموعه را به قالب pdf تبدیل نموده‌ام و برای دریافت در اینجا قرار داده‌ام.


حکایت همچنان باقیست

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

پرسش و پاسخ شماره ۱۱۰


آیا می‌توانم چیزی مشابه الگوها(templates) را با bash به کار ببرم؟

Bashهیچ روش درونی برای استفاده از قالب ها( templates) ندارد. اگر چه، نسبت به اهداف واقعی خود، ممکن است فقط بتوانید شگرد ارزیابی فایل با یک bash جدید یا پوسته نمونه را به کار ببرید.

به هر حال، این مطلب در صفحه TemplateFiles بحث شده است.





پرسش و پاسخ 110 (آخرین ویرایش ‎2013-03-18 18:07:40‎ توسط 12)


پرسش و پاسخ شماره ۱۰۹


چگونه می‌توانم بگویم که آیا اسکریپت من منبع شده(به طور نقطه‌ای) یا اجرا گردیده است؟

به طور معمول موقعی که اشخاص این پرسش را مطرح می‌کنند، به دلیل آنست که می‌خواهند خطاهای کاربر را تشخیص داده و پیغام مناسبی برای آن تهیه کنند. یک نظریه‌ای هست که می‌گوید نباید کاربر یونیکس را به این طریق نازپرورده نمود، و اگر کاربری حقیقتاً بخواهد در عوض منبع کردن اسکریپت شما، آن را اجرا کند،شما نباید برای این کار او را نکوهش کنید. حال از این که بگذریم، ما می‌توانیم پرسش را به نحو دیگری که در واقع باید پرسیده شود، بیان کنیم:

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

کلید در اینجا، و دلیل آنکه من پرسش را به این طریق جمله‌بندی مجدد نموده‌ام، آنست که شما عملاً نمی‌توانید آنچه را کاربر تایپ نموده است تعیین کنید، اما می‌توانید تعیین کنید آیا کُد در حال تفسیر شدن با یک پوسته محاوره‌ای است. این کار را باکنترل یک i در محتوای متغیر ‎$-‎ انجام بدهید:

# POSIX(?)
case $- in
  *i*) : ;; 
    *) echo "You should dot me in" >&2; exit 1;;
esac

یا با استفاده از ترکیب دستوری غیر-POSIX:

# Bash/Ksh
if [[ $- != *i* ]]; then
  echo "You should dot me in" >&2; exit 1
fi

البته، این مورد در حالت‌های ترفندآمیزی مانند «من می‌خواهم فایل من از یک اسکریپت غیرمحاوره‌ای نقطه‌ای بشود...» کار نمی‌کند. برای آن حالت‌ها، پاراگراف اول این صفحه را ببینید.


CategoryShell

پرسش و پاسخ 109 (آخرین ویرایش ‎2012-09-11 07:43:44‎ توسط dslb-088-072-055-065)