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

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

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

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

جایگزینی فرمان


جایگزینی فرمان

جایگزینی فرمان یک راهکار بسیار نیرومند پوسته یونیکس است. برای درج خروجی یک فرمان در فرمان دیگر به کار می‌رود. به عنوان مثال، با یک تخصیص:

  $ today=$(date)        #  شروع می‌شود و خروجی‌اش  ضبط می‌شود "date" فرمان‎
  $ echo "$today"
  Mon Jul 26 13:16:02 MEST 2004

این مورد همچنین می‌تواند با فرمانهایی علاوه بر تخصیص‌ها، استفاده شود:

  $ echo "Today is $(date +%A), it's $(date +%H:%M)"
  Today is Monday, it's 13:21

این سطر فرمان، برنامه date را دو بار فراخوانی می‌کند، دفعه اول برای چاپ روز هفته، دفعه دوم برای زمان فعلی.

ادامه مطلب

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. جریانها

متغیرها

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

ادامه مطلب