بسط (Expansion) در خط فرمان لینوکس
زمانی که شما یک خط فرمان در ترمینال مینویسید و کلید Enter را فشار میدهید، Bash چندین پروسه را قبل از اجرای فرمان، انجام میدهد. مواردی را دیدهایم که چگونه یک کاراکتر کوچک مثل * معانی زیادی میتواند در Shell داشته باشد. پروسهای که باعث انجام این کار میشود را بسط (Expansion) مینامند.
بسط (Expansion)
با بسط (Expansion) شما چیزی را وارد خط فرمان میکنید و قبل از اجرا و انجام، آن به چیز دیگری در Shell تبدیل میشود. در ادامه نگاهی به فرمان echo خواهیم انداخت.
echo فرمانی درونساخت در Shell بوده که وظیفه بسیار سادهای دارد. فرمان echo آرگومان متنی را که به آن میدهیم در خروجی استاندارد چاپ میکند:
[me@linuxbox ~]$ echo this is a test this is a test
پس هر آرگومانی که به echo بدهیم برای ما نشان داده میشود. مثالی دیگر را امتحان میکنیم:
[me@linuxbox ~]$ echo * Desktop Documents ls-output.txt Music Pictures Public Templates Videos
پس چرا فرمان echo کاراکتر * را برای ما چاپ نکرد؟ اگر خاطرتان باشد در مبحث Wildcardها کاراکتر * چنین معنایی داشت: «هر کاراکتری را در نام فایل تطبیق بده.» حال Shell قرار است این کار را چگونه انجام دهد.
پاسخ اینجاست که Shell عملگر * را قبل از اجرای فرمان echo به چیز دیگری (در این مثال نام فایل در دایرکتوری جاری) بسط میدهد. زمانی که شما کلید Enter را میفشارید، Shell بهصورت خودکار هر کاراکتر دارای صلاحیت را در خط فرمان بسط میدهد و به همین دلیل است که هیچگاه خود عملگر * در خروجی دیده نخواهد شد؛ بلکه نتیجه عمل آن مشاهده میشود. البته توجه داشته باشید که روشهایی برای نادیده گرفتن بسط وجود دارد که فعلاً به این موضوع نخواهیم پرداخت.
منبع: لینوکسسیزن نوشته فرشید نوتاش حقیقتدرباره فرشید نوتاش حقیقت
همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرمافزارهای آزاد/ متنباز و سیستمعامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.
نوشتههای بیشتر از فرشید نوتاش حقیقتاین سایت از اکیسمت برای کاهش جفنگ استفاده میکند. درباره چگونگی پردازش دادههای دیدگاه خود بیشتر بدانید.
دیدگاهتان را بنویسید