آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

راهنمای آموزش شل و اسکریپت‌نویسی

اگر در جستجوی کتابی در باره خط‌فرمان لینوکس بوده‌اید به طور حتم به این کتاب برخورد کرده‌اید.

book cover


The Linux Command Line توسط William Shotts

در معرفی کتاب می‌خوانیم:
«این کتاب در ۵۳۷ صفحه همان مطالب LinuxCommand.org را پوشش می‌دهد، اما با جزییات بیشتر»
به علت اینکه نویسنده کتاب درحال حاضر با ترجمه کتاب موافق نیست، من به ترجمه سایت LinuxCommand.org که شامل دو راهنمای آموزشی «یادگیری پوسته» و «نوشتن اسکریپت‌های پوسته» است اقدام نمودم و یک مکان اختصاصی در اینجا برای آن در نظر گرفتم. امیدوارم برای علاقمندان مفید واقع گردد.


پایان یک طرح

این وبلاگ را به ترجمه فارسی Greg's Wiki که یکی از بهترین منابع موجود در سطح شبکه در باره Bash است و دارای مباحث متنوعی می‌باشد اختصاص داده‌ام. ترجمه شامل BashGuide‏، BashFAQ‏، BashPitfalls، و BashSheet و بسیاری موارد دیگر می‌گردد. من در حد توان و بنا به تشخیص شخصی نزدیک به ۸۰ تا ۹۰ درصد محتوای آن را به فارسی برگردانیده‌ام، و این طرح از طرف من پایان‌یافته تلقی می‌شود. امیدوارم جویندگان آن را بیابند و استفاده کنند و برایشان مفید باشد. محمود پهلوانی

فهرست صفحه‌ها

کلیه صفحه‌های ترجمه شده از Greg's Wiki به سه دسته تقسیم می‌شوند.

  • صفحه‌های راهنمای BashGuide
  • صفحه‌های تکمیلی در باره مفاهیم مهم
  • پرسش و پاسخ‌های رایج

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

صفحات راهنمای آموزشی

صفحه‌های تکمیلی در باره مفاهیم مهم



پرسش و پاسخ‌های رایج
  1. پرسش و پاسخ 001
  2. پرسش و پاسخ 002
  3. پرسش و پاسخ 003
  4. پرسش و پاسخ 004
  5. پرسش و پاسخ 005
  6. پرسش و پاسخ 006
  7. پرسش و پاسخ 007
  8. پرسش و پاسخ 008
  9. پرسش و پاسخ 009
  10. پرسش و پاسخ 010
  11. پرسش و پاسخ 011
  12. پرسش و پاسخ 012
  13. پرسش و پاسخ 013
  14. پرسش و پاسخ 014
  15. پرسش و پاسخ 015
  16. پرسش و پاسخ 016
  17. پرسش و پاسخ 017
  18. پرسش و پاسخ 018
  19. پرسش و پاسخ 019
  20. پرسش و پاسخ 020
  21. پرسش و پاسخ 021
  22. پرسش و پاسخ 022
  23. پرسش و پاسخ 023
  24. پرسش و پاسخ 024
  25. پرسش و پاسخ 025
  26. پرسش و پاسخ 026
  27. پرسش و پاسخ 027
  28. پرسش و پاسخ 028

  1. پرسش و پاسخ 029
  2. پرسش و پاسخ 030
  3. پرسش و پاسخ 031
  4. پرسش و پاسخ 032
  5. پرسش و پاسخ 033
  6. پرسش و پاسخ 034
  7. پرسش و پاسخ 035
  8. پرسش و پاسخ 036
  9. پرسش و پاسخ 037
  10. پرسش و پاسخ 038
  11. پرسش و پاسخ 039
  12. پرسش و پاسخ 040
  13. پرسش و پاسخ 041
  14. پرسش و پاسخ 042
  15. پرسش و پاسخ 043
  16. پرسش و پاسخ 044
  17. پرسش و پاسخ 045
  18. پرسش و پاسخ 046
  19. پرسش و پاسخ 047
  20. پرسش و پاسخ 048
  21. پرسش و پاسخ 049
  22. پرسش و پاسخ 050
  23. پرسش و پاسخ 051
  24. پرسش و پاسخ 052
  25. پرسش و پاسخ 053
  26. پرسش و پاسخ 054
  27. پرسش و پاسخ 055
  28. پرسش و پاسخ 056

  1. پرسش و پاسخ 057
  2. پرسش و پاسخ 058
  3. پرسش و پاسخ 059
  4. پرسش و پاسخ 060
  5. پرسش و پاسخ 061
  6. پرسش و پاسخ 062
  7. پرسش و پاسخ 063
  8. پرسش و پاسخ 064
  9. پرسش و پاسخ 065
  10. پرسش و پاسخ 066
  11. پرسش و پاسخ 067
  12. پرسش و پاسخ 068
  13. پرسش و پاسخ 069
  14. پرسش و پاسخ 070
  15. پرسش و پاسخ 071
  16. پرسش و پاسخ 072
  17. پرسش و پاسخ 073
  18. پرسش و پاسخ 074
  19. پرسش و پاسخ 075
  20. پرسش و پاسخ 076
  21. پرسش و پاسخ 077
  22. پرسش و پاسخ 078
  23. پرسش و پاسخ 079
  24. پرسش و پاسخ 080
  25. پرسش و پاسخ 081
  26. پرسش و پاسخ 082
  27. پرسش و پاسخ 083
  28. پرسش و پاسخ 084

  1. پرسش و پاسخ 085
  2. پرسش و پاسخ 086
  3. پرسش و پاسخ 087
  4. پرسش و پاسخ 088
  5. پرسش و پاسخ 089
  6. پرسش و پاسخ 090
  7. پرسش و پاسخ 091
  8. پرسش و پاسخ 092
  9. پرسش و پاسخ 093
  10. پرسش و پاسخ 094
  11. پرسش و پاسخ 095
  12. پرسش و پاسخ 096
  13. پرسش و پاسخ 097
  14. پرسش و پاسخ 098
  15. پرسش و پاسخ 099
  16. پرسش و پاسخ 100
  17. پرسش و پاسخ 101
  18. پرسش و پاسخ 102
  19. پرسش و پاسخ 103
  20. پرسش و پاسخ 104
  21. پرسش و پاسخ 105
  22. پرسش و پاسخ 106
  23. پرسش و پاسخ 107
  24. پرسش و پاسخ 108
  25. پرسش و پاسخ 109
  26. پرسش و پاسخ 110



  • راهنمای آموزشی BashGuide

    من در حال ترجمه راهنمای آموزشی  می‌باشم، با نام BashGuide که به صورت مشترک ایجاد و نگهداری می‌شود، اما مؤلف اصلی آن Lhunath می‌باشد. این راهنمای آموزشی، بخشی از Greg's Wiki می‌باشد که گسترده‌تر از این راهنماست، و شامل چند بخش قابل توجه از جمله BashFAQ که در برگیرنده بیش از یک‌صد پرسش و پاسخ رایج است، و BashPitfalls در برگیرنده بیش از چهل مورد اشتباهات رایج در Bash و BashSheet و چندین فایل جداگانه در تشریح گسترده‌تر مباحث این راهنما می‌باشد، که در این راهنما به آن‌ها لینک داده شده است.

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


    من در ترجمه این راهنما برای درج اشارات تلویحی و افزودن قابلیت تشخیص بیشتر به خط فرمانها، یک رنگ آمیزی خاص به شرح زیر را به کار برده‌ام:
    برای فرمانها(اعم از دستورات داخلی، خارجی و برنامه‌های کاربردی) از این رنگ مانند cd
    برای کلید واژه‌های bash از این رنگ مانند]] یا do
    برای کاراکترهای ویژه از این رنگ مانند && اما نه در تمام موارد
    برای متغیرها از این رنگ مانند PATH
    برای گزینه‌های دستور از این رنگمانند ‎-f
    برای توابع از این رنگ مانند ‎ function()
    برای داده‌ها از این رنگ مانند story
    خروجی در ترمینال و برای لینک‌های خارج از راهنمااز این رنگ مانندBashGuide
    برای لینک‌ به بخش دیگری از این مجموعه از این رنگ مانند نقل‌قول‌ها که در حال حاضر تا تکمیل شدن ترجمه کار نمی‌کنند.
    برای خطا در خط فرمان از این رنگ

    و از این رنگ برای شناسه‌ها و بعضاً نمایان کردن برخی از قسمت‌ها و همچنین تاکید در متن استفاده شده است، سعی کرده‌ام تا آنجا که ممکن است آن را رعایت نمایم ولی امکان دارد که گاهی از نظر دور مانده باشد.
    همچنین تلاش بسیاری شده که از بهم ریختگی و دگرگون شدن خط دستورها که در میان متن فارسی(متن چپ به راست در میان متن راست به چپ) درج شده‌اند و در نوشته‌های وبلاگها بسیار با آن برخورد نموده‌ام به طور جدی پرهیز نمایم. لطفاً اگر با موردی در این راهنما یا ترجمه‌های قبلی برخورد نمودید، اطلاع بدهید. ممنون خواهم شد.

    محمود پهلوانی



    راهنمای bash


    Bash FAQ


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

    فهرست پرسش و پاسخ‌های bash

    فهرست پرسش و پاسخ‌ها

  • ◯ فهرست

    1. چطور می‌توانم یک فایل(جریان داده، متغیر) را سطر به سطر بخوانم(و یا فیلد به فیلد)؟
    2. چگونه می‌توانم مقدار برگشتی یا خروجی دستوری را در یک متغیر ذخیره نمایم؟
    3. چطور می‌توانم آخرین(جدیدترین، قدیمی‌ترین، مسن‌ترین) فایل در یک دایرکتوری را پیدا کنم؟
    4. چگونه بررسی نمایم که آیا یک شاخه، خالی است یا خیر؟ چطور هر فایل ‎*.mpg‎ را بررسی کنم، یا تعداد آنها را شمارش کنم؟
    5. چگونه می توانم از متغیرهای آرایه‌ای استفاده کنم؟
    6. چطور می‌توانم از متغیرهای بی‌ثبات(متغیرهای غیر مستقیم، اشاره‌گرها، مرجع‌ها) یا آرایه‌های شرکت‌پذیر استفاده کنم؟
    7. آیا تابعی وجود دارد که طول یک رشته را بازگرداند؟
    8. چگونه می‌توانم تمام فایلها را به طور بازگشتی برای یک رشته جستجو نمایم؟
    9. میانگیری(buffering) چیست؟ یا، چرا این سطر فرمان من خروجی ندارد:    ‎ tail -f logfile | grep 'foo bar' | awk ...‎
    10. چطور می‌توانم یک ساختار دایرکتوری سلسله مراتبی بدون فایل ایجاد نمایم؟
    11. چگونه می‌توانم سطر شماره n از یک فایل را چاپ کنم؟
    12. به چه طریق می‌توانم یک فرمان شل را از یک برنامه غیرپوسته‌ای فراخوانی نمایم؟
    13. چگونه می‌توانم دو متغیر را به هم الحاق کنم؟ چگونه یک رشته را در یک متغیر اضافه(پیوست) کنم؟
    14. چطور می‌توانم چند دستور را در یک مرحله تغییر مسیر بدهم؟
    15. چگونه می‌توانم یک دستور را با تمام فایل‌های دارای پسوند ‎ .gz‎ اجرا کنم؟
    16. چگونه می‌توانم از AND/OR/NOT منطقی در الگو(جانشین) پوسته استفاده کنم؟
    17. چگونه می‌توانم عبارت‌ها را گروه‌بندی کنم، مثل ‎ (a AND b) OR c‎؟
    18. چگونه می‌توانم از اعدادی که با صفر شروع می‌شوند مثل 01 و 02 در یک حلقه استفاده کنم؟
    19. به کدام طریقه می‌توانم یک فایل را به محدوده‌هایی از سطرها، مانند سطرهای 1-10، 11-20، 21-30 تجزیه کنم؟
    20. چطور می‌توانم نام فایل‌های شامل کاراکتر فاصله یا سطر جدید یا هر دو را پیدا کرده وبا آنها کار کنم؟
    21. چگونه می‌توانم یک رشته را با رشته دیگری در یک متغیر، جریان داده، یک فایل، یاتمام فایلهای یک شاخه، تعویض نمایم؟
    22. چگونه می‌توانم به جای فقط اعداد صحیح، اعداد با ممیز شناور را در محاسبه استفاده کنم؟
    23. من می‌خواهم به پوسته محاوره‌ای که مستعارها و توابع ویژه‌ای دارد، نه آنها که در ‎ ~/.bashrc‎ کاربر هست، متصل شوم.
    24. من متغیرهایی را در حلقه تنظیم می‌کنم. چرا به طور ناگهانی پس از اتمام حلقه آنها ناپدید می‌شوند؟ یا، چرا نمی‌توانم داده را برای خواندن لوله‌کشی کنم؟
    25. چطور می‌توانم پارامترهای موضعی(مکانی) بعد از ‎ $9‎ را دستیابی کنم
    26. از چه طریق می‌توانم ترتیب سطرهای فایلی را تصادفی نمایم(بُر زدن)؟(یا یک سطر اتفاقی از فایل را انتخاب کنم، یا انتخاب یک فایل به طور تصادفی از یک شاخه.)
    27. چطور می‌توان دو پردازش جداگانه را به هم ارتباط داد؟
    28. چگونه می‌توانم محل اسکریپت خود را تعیین کنم؟ می‌خواهم فایلهای پیکربندی را از همان محل بخوانم.
    29. به چه طریق می‌توانم مقصد یک پیوند نمادین را نمایش بدهم؟
    30. چگونه می‌توانم تمام فایل‌های ‎ *.foo‎ را به ‎*.bar‎ تبدیل نمایم، یا فاصله‌ها را به خط زیر تبدیل کنم، و یا حروف بزرگ نام فایلها را به حروف کوچک تبدیل کنم؟
    31. تفاوت بین test و ‎[‎ و ‎ [[‎ چیست؟
    32. چطور می‌توانم خروجی 'time' را به یک متغیر یا فایل تغییر مسیر بدهم؟
    33. چگونه می‌توانم شماره شناسایی پردازشی با دادن نام آن پردازش به دست آورم؟
    34. آیا می‌توانم در Bash یک چرخنده اجرا کنم؟
    35. چگونه می‌توانم شناسه‌های( گزینه‌های ) خط‌فرمان را به آسانی مدیریت کنم؟
    36. چطور می‌توانم تمام سطرهایی را به دست آورم که: در هر دو فایل هستند(فصل مشترک) یا فقط در یکی از دوفایل می‌باشند(تفاوتها).
    37. چطور می‌توانم متن را با رنگهای مختلف چاپ کنم؟
    38. مجوزهای فایل در یونیکس چگونه کار می‌کنند؟
    39. تمام فایلهای نقطه‌ای که bash می‌خواند کدام هستند؟
    40. چگونه می‌توانم از dialog برای دریافت ورودی کاربر استفاده کنم؟
    41. چطور می‌توانم تعیین نمایم که آیا یک متغیر شامل یک زیر رشته هست؟
    42. چگونه می‌توانم دریابم که یک پردازش هنوز در حال اجرا است؟
    43. چرا job من در crontab ناموفق است؟‎ 0 0 * * * some command > /var/log/mylog.`date +%Y%m%d`‎
    44. چطور می‌توانم نوار پیشروی ایجاد کنم؟ چگونه می‌توانم موقع کپی یا انتقال فایلها، نمایشگر پیشروی را ببینم؟
    45. به چه طریق می‌توانم مطمئن شوم که فقط یک نمونه از اسکریپت در یک زمان معین در حال اجرا است(ممانعت دوطرفه)؟
    46. می‌خواهم بررسی کنم که آیایک کلمه در یک لیست وجود دارد( یایک عنصر عضوی از یک مجموعه هست).
    47. چطور می‌توانم stderr را به یک لوله تغییر مسیر بدهم؟
    48. فرمان eval و مسائل امنیت
    49. چگونه می‌توانم به روزرسانی‌های دوره‌ای یا پیوست کردن‌ها به یک فایل راببینم؟(مثل: رشد فایل log )
    50. من سعی دارم دستوری را در یک متغیر قرار بدهم، اما موارد پیچیده همیشه ناموفق است!
    51. من جستجوی تاریخچه درست مانند آن در tcsh می‌خواهم. چطور می‌توانم آن را به کلیدهای up و down مربوط کنم؟
    52. چطور می‌توانم یک فایل را از فرمت DOS به فرمت UNIX تبدیل کنم( CRها را از CR-LF خاتمه دهنده سطرها حذف کنم)؟
    53. من یک اعلان فرمان تفننی رنگی دارم، اما حالا به نظر نمی‌رسد bash بداند پهنای ترمینال من چقدر است. سطرها به طور نادرستی شکسته می‌شوند.
    54. چگونه می‌توانم بگویم که یک متغیر آیا محتوی یک عدد معتبر هست؟
    55. به طور کلی در باره ‎2>&1‎ بگویید -- تفاوت بین ‎2>&1 >foo‎ و ‎>foo 2>&1‎ چیست، و چه‌وقت می‌توانم از هرکدام استفاده کنم؟
    56. چطور می‌توانم چند فایل را به طور یکجا untar (یا unzip) نمایم؟
    57. چطور می‌توانم اقلام را گروه‌بندی نمایم(در یک فایل با پیشوندهای مشترک)؟
    58. آیا bash می‌تواند داده‌های باینری را اداره کند؟
    59. من این دستور را در جایی دیدم: ‎:(){ :|:& }‎ (بمب خوشه‌ای). این چطور کار می‌کند؟
    60. من سعی می‌کنم اسکریپتی بنویسم که دایرکتوری جاری را تغییر دهد( یا یک متغیر را تنظیم کند)، اما بعد از به پایان رسیدن اسکریپت، در همان جایی هستم که از آنجا شروع کرده بودم(یا متغیر من نیست)!
    61. آیا لیستی از ویژگی‌های اضافه شده به یک نگارش معین Bash وجود دارد؟
    62. چطور می‌توانم در یک حالت ایمِن، یک فایل موقتی ایجاد کنم؟
    63. وقتی من می‌خواهم بعد از اجرای یک job پس‌زمینه‌ای راه دور قطع ارتباط کنم، سرویس‌گیرنده ssh من هنگ می‌کند !
    64. چرا دریافت پاسخ پرسشی که من در ‎ #bash‎ پرسیدم، تا این اندازه دشوار است؟
    65. آیا یک دستور "PAUSE" مانند آن که در اسکریپتهای MSDOS هست، در bash وجود دارد؟ که به کاربر اعلام نماید جهت ادامه کلیدی را بزند؟
    66. می‌خواهم عبارت ‎if  [[ $var == foo || $var == bar || $var == more ... ]]‎ را بدون n مرتبه تکرار ‎$var‎، بررسی کنم.
    67. چطور می‌توانم فضای سفید قبل یا بعد یکی از متغیرهایم را پاک کنم؟
    68. چگونه می‌توانم فرمانی را اجرا کنم و انصراف از آن پس از N ثانیه را داشته باشم(timeout)؟
    69. می‌خواهم یک ارتباط ssh (یا scp، یا sftp) را خودکار نمایم، اما نمی‌دانم چطور کلمه عبور را ارسال کنم
    70. چطور می‌توانم زمان یونیکس(epoch) را به مقادیر قابل خوندن انسانی تبدیل نمایم؟
    71. چطور می‌توانم یک کاراکتر اسکی را به مقدار دسیمال(یا هگزادسیمال) آن و برعکس تبدیل نمایم؟
    72. چگونه می‌توانم مطمئن شوم که محیط من برای برنامه‌های cron، batch، و jobs پیکربندی شده است؟
    73. چگونه می‌توانم از بسط پارامتر استفاده کنم؟ چطور زیر رشته‌ها را ایجاد کنم؟ چگونه می‌توانم نام فایل را بدون پسوند کنم، یا فقط پسوند فایل‌ها را به دست آورم؟
    74. چگونه می‌توانم اثرات بسط پارامترهای جالب Bash را درپوسته‌های قدیمی‌تر داشته باشم؟
    75. چطور می‌توانم از فرمان find استفاده کنم؟ من به هیچ وجه نمی‌توانم صفحه man را درک کنم!
    76. چگونه می‌توانم حاصل جمع تمام اعداد در یک ستون را به دست آورم؟
    77. از چه طریق می‌توانم تاریخچه را در فایل log ثبت کنم یا bash را در برابر پاک کردن آن ایمن نمایم؟
    78. من می‌خواهم یک کلمه عبور کاربر را با استفاده ازفرمان passwd یونیکس ایجاد کنم، اما چطور آن را در اسکریپت قرار بدهم؟ ورودی استاندارد را نمی‌خواند!
    79. چطور می‌توانم grep را برای یافتن سطرهای شاملfoo و bar همچنین foo یا bar به کار ببرم؟ یا برای فایل‌های شامل foo و bar، شاید در سطرهای جداگانه؟
    80. چگونه می‌توانم مستعاری ایجاد کنم که یک شناسه دریافت کند؟
    81. چگونه می‌توانم تعیین کنم که یک فرمان آیا در جایی از PATH من وجود دارد؟
    82. چرا‎ $(...) ‎نسبت به ‎ `...` ‎  (نقل‌قول برعکس) ارجحیت دارد؟
    83. چگونه می توانم تعیین کنم که یک متغیر آیا قبلاً تعریف شده است؟
    84. چگونه یک رشته (یا عدد بلند، یا عدد منفی) از یک تابع باز گردانم؟ return فقط استفاده از اعداد 0 تا 255 را اجازه می‌دهد.
    85. چگونه می‌توان چند مرتبه در فایل fifo بدون باز کردن مجدد آن، نوشت؟
    86. چگونه می‌توان هنگام اجرای یک فرمان از مستعارها یا توابع صرفنظر کرد؟
    87. از چه طریقی بدون استفاده از تفکیک خروجی ‎ ls -l‎ می‌توانم مجوزها(یا سایراطلاعات) فایلی را دریافت کنم؟
    88. چطور می‌شود از فقدان هر یک از سطرهای تاریخچه اجتناب نمود؟
    89. من در حال خواندن سطر به سطر یک فایل, و اجرای ssh یا ffmpeg هستم، اما فقط سطر اول پردازش می‌شود!
    90. چگونه می‌توانم متنی را در ابتدای یک فایل درج کنم(برعکس ‎>>‎
    91. من تلاش می‌کنم تعداد سطرها و ستونهای ترمینال خود را دریافت کنم، اما متغیرهای COLUMNS و LINES همیشه تهی هستند
    92. چگونه یک اسکریپت CGI بنویسم که پارامترها را بپذیرد؟
    93. چطور می‌توانم محتویات نوار عنوان ترمینال خود را تنظیم نمایم؟
    94. می‌خواهم وقتی دیسک پُر می‌شود یک هشدار دریافت کنم(با تجزیه خروجی df ).
    95. میخواهم لیست خیلی بلند شناسه‌ها را دریافت کنم. چطور می‌توانم یک لیست بزرگ قابل توجه را پردازش نمایم؟
    96. ssh کرانه‌های کلمات مرا می‌خورد! نمی‌توانم ‎ ssh remotehost make CFLAGS="-g -O"‎ را انجام بدهم!
    97. چطور می‌توانم تعیین کنم که یک پیوند نمادین آیا منفصل (شکسته) است؟
    98. چگونه پشتیبانی محلی را به اسکریپت‌های bash اضافه می‌کنید؟
    99. چطور می‌توانم جدیدترین(یا قدیمی‌ترین) فایل یک شاخه را به دست آورم؟
    100. در bash چگونه می‌توانم رشته‌ها را دستکاری کنم؟
    101. توابع سودمند عمومی(warn و die)
    102. چگونه اختلاف بین دو تاریخ را به دست آورم؟
    103. چطور بررسی نمایم که فایل دریک ماه معین یا در یک محدوده تاریخی ویرایش شده است؟
    104. چرا ‎ foo=bar echo "$foo"‎ رشته bar را چاپ نمی‌کند؟
    105. چرا ‎ set -e‎(یا ‎ set -o errexit‎ یا‎ trap ERR‎) آنچه را انتظار دارم انجام نمی‌دهد؟
    106. می‌خواهم از داخل اسکریپت stdout را به یک فایل ثبت وقایع tee نمایم. و شاید stderr را به همچنین.
    107. چگونه به هر سطر یک جریان مُهرتاریخ بزنم؟
    108. چطور در انتظار انجام چند پردازش فرزند بمانم؟
    109. چگونه می‌توانم بگویم که اسکریپت من آیا منبع شده(به طور نقطه‌ای) یا اجرا گردیده است؟
    110. آیا می‌توانم چیزی مشابه قالب‌ها(templates) را با bash به کار ببرم؟