توسعه
هر بار که دستوری را تایپ می کنیم و کلید enter را فشار می دهیم، بر هم زدن قبل از اینکه متن دستور ما را انجام دهد چندین فرآیند را روی متن انجام می دهد. ما چند مورد را دیدهایم که نشان میدهد چگونه یک دنباله کاراکتر ساده، به عنوان مثال "*" میتواند معنای زیادی برای پوسته داشته باشد. فرآیندی که باعث می شود این اتفاق بیفتد نامیده می شود توسعه. با انبساط وارد چیزی میشویم و قبل از اینکه پوسته روی آن اثر بگذارد به چیز دیگری منبسط میشود. برای نشان دادن منظور ما از این، اجازه دهید نگاهی به آن بیندازیم از دست فرمان از دست یک پوسته ساخته شده است که کار بسیار ساده ای را انجام می دهد. آرگومان های متنی خود را روی خروجی استاندارد چاپ می کند:
[me@linuxbox ~]$ اکو این یک تست است
این یک امتحان است
[me@linuxbox ~]$ اکو این یک تست است
این یک امتحان است
این خیلی ساده است. هر استدلالی به از دست نمایش داده می شود. بیایید یک مثال دیگر را امتحان کنیم:
[me@linuxbox ~]$ پژواک *
اسناد رومیزی ls-output.txt تصاویر موسیقی الگوهای عمومی ویدئوها
[me@linuxbox ~]$ پژواک *
اسناد رومیزی ls-output.txt تصاویر موسیقی الگوهای عمومی ویدئوها
پس چه اتفاقی افتاد؟ چرا نشد از دست چاپ "*"؟ همانطور که از کار خود با حروف عام به یاد می آوریم، کاراکتر "*" به معنای مطابقت با هر کاراکتر در نام فایل است، اما چیزی که ما در بحث اصلی خود ندیدیم این بود که پوسته چگونه این کار را انجام می دهد. پاسخ ساده این است که پوسته "*" را قبل از از دست فرمان اجرا می شود. وقتی کلید اینتر باشد
با فشار دادن، پوسته به طور خودکار هر کاراکتر واجد شرایط را در خط فرمان قبل از اجرای دستور گسترش می دهد، بنابراین از دست فرمان هرگز "*" را ندید، فقط نتیجه گسترش یافته آن بود. با دانستن این، می توانیم آن را ببینیم از دست مطابق انتظار رفتار کرد