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

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

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

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

Brace Expansion


بسط ابرو یکی از جایگزینی‌هایی است که Bash روی فرمانها انجام می‌دهد. این بسط در ماهیت کاملاً مطابق قواعد دستور زبان است(درکی از مضمون ندارد). در اصل، به عنوان یک میانبر نوشتاری، برای فشرده سازی بیشتر فرمانها به کار می‌رود:

mv foobar.{o,exe} obj

# :معادل است با
mv foobar.o foobar.exe obj

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

ادامه مطلب

Sub Shell


یکی از مفاهیم اساسی برنامه‌نویسی پوسته پوسته فرعی می‌باشد.

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

این مطلب موقع نوشتن اسکریپت‌ها اهمیت می‌یابد، زیرا مقدار بسیاری از کار توسط پردازشهای فرزندِ اسکریپت انجام می‌شود. موقعیت‌های آشکاری وجود دارد، مانند این:

ادامه مطلب

Environment


متغیرهای محیط

متغیرهای محیط باعث سردرگمی بسیاری هستند. عموماً اشخاص تصور می‌کنند «محیط» یک مخزن سراسری از تنظیمات برای سیستم گسترده است که پردازش‌ها در آن غوطه‌ور می‌شوند. این صحیح نیست.

به طور خلاصه:

متغیرهای محیط(نشان داده شده توسط env) همان پارامترهای Bash (نشان داده شده با set) نیستند. آنها سراسری نیستند (هر پردازش مجموعه خودش را دارد)، و آنها تنها وقتی پردازش فرزند تولید می‌شود از والد کپی می‌شوند. شما نمی‌توانید متغیرهای یک پردازش دیگر را تجدید نمایید. Bash به شما اجازه می‌دهد، رشته‌ها را به وسیله پیوند زدن یک پارامتر با همان نام به آن، با استفاده از فرمان export به متغیرهای محیط خودش تخصیص بدهید.

ادامه مطلب

Replacing Strings


محتویات       

  1. متغیرها
  2. جریانها

متغیرها

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

ادامه مطلب

چرا سطرهای فایل را با "for" نخوانید؟


چرا سطرهای فایل را با "for" نخوانید

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

اول، روش درست:

    $ cat afile
    ef gh
    
    *
    $ while IFS= read -r aline; do echo "$aline" ; done < afile
    ef gh
    
    *

حال، سعی در استفاده از for:

ادامه مطلب