دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۰
  • اسفند

جلسه ۲۱ : مکانیسم های نقل قول Shell در یونیکس (UNIX)

  • دسته‌بندی‌ها :
جلسه ۲۱ : مکانیسم های نقل قول Shell در یونیکس (UNIX)
    • جزئیات
    • نوع محتواآموزشی

      دوستان و علاقمندان به مباحث آموزش یونیکس (UNIX) ، این آموزش را از سایت پی وی لرن دنبال خواهیم نمود. در این بخش با مکانیسم های نقل قول Shell در یونیکس (UNIX) آشنا خواهیم شد. با ما همراه باشید.

      مکانیسم های نقل قول Shell در یونیکس (UNIX)

      در این بخش با جزئیاتی در مورد مکانیسم های نقل قول Shell صحبت خواهیم کرد. مبحث را در مورد ویژگی های متاکاراکترها شروع خواهیم کرد.

      متاکاراکترها (metacharacter)

      یونیکس شل متاکاراکاری متنوعی را ارائه می دهد که در ضمن استفاده از آن ها در هر Shell Script معنای خاصی دارند و باعث خاتمه یک کلمه می شوند ، مگر این که نقل قول شوند.

      مثلا، ? با یک کاراکتر واحد زمانی که فایل ها در یک دایرکتوری لیست می شوند، مطابقت پیدا می کند و * با بیش از یک کاراکتر مطابقت پیدا می کند. در این جا لیستی از اکثر کاراکترهای ویژه شل(که به آن ها متاکاراکتار نیز می گویند) آمده است.

      مثال : 

      یک کاراکتر ممکن است به وسیله ی \ نقل قول باشد.

      مثال

      مثال زیر نحوه چاپ * یا ? را نشان می دهد.

      مثال : 

      پس از اجرا، نتیجه زیر را دریافت خواهید کرد.

      مثال : 

      بگذارید اکنون سعی کنیم از یک کاراکتر نقل استفاده کنیم.

      مثال : 

      پس از اجرا، نتیجه زیر را دریافت خواهید کرد.

      مثال : 

      علامت $ یکی از متاکاراکترها است ، بنابراین برای جلوگیری از استفاده ویژه توسط شل باید نقل قول باشد.

      مثال : 

      پس از اجرا، نتیجه زیر را دریافت خواهید کرد.

      مثال : 

      در جدول زیر چهار شکل نقل قول آمده است.

      ردیفنقل قول و شرح
      ۱Single quote

      تمام کاراکترهای خاص بین این نقل قول ها معنای ویژه خود را از دست می دهند.

       

      ۲Double quote

      بیشتر کاراکترهای خاص بین این نقل قول ها با این استثنائات معنای ویژه خود را از دست می دهند.

      • $
      • $\
      • '\
      • "\
      • \\
      ۳Backslash

      هر کاراکتری که بلافاصله به دنبال backslash باشد، معنی خاص خود را از دست می دهد.

       

      ۴Back quote

      هر چیزی که بین نقل قول های برگشت باشد به عنوان یک دستورالعمل رفتار می کند و اجرا می شود.

      مکانیسم های نقل قول Shell در یونیکس (UNIX) را با نقل قول های واحد ادامه می دهیم.

      نقل قول های واحد (Single Quotes)

      دستور echo را در نظر بگیرید که حاوی بسیاری از کاراکترهای شل ویژه است.

      مثال : 

      قرار دادن backslash در مقابل هر کاراکتر ویژه خسته کننده است و خواندن خط را دشوار می کند.

      مثال : 

      روشی آسان برای نقل قول گروه بزرگی از کاراکترها وجود دارد. یک نقل قول واحد (') را در ابتدا و انتهای رشته قرار دهید.

      مثال : 

      کاراکترهای موجود در نقل قول های واحد دقیقاً به صورتی نقل قول می شوند که ظاهراً یک backslash در جلوی هر کاراکتر قرار دارد. با این کار ، فرمان echo به روشی مناسب نمایش داده می شود.

      به نمونه ی زیر توجه کنید، در این جا نباید کل رشته را داخل نقل واحدها بگذارید بلکه باید از یک backslash (\) به شرح زیر استفاده کنید.

      مثال : 

      نقل قول های دوتایی

      سعی کنید اسکریپت شل زیر را اجرا کنید. این اسکریپت شل باعث می شود از نقل قول منفرد استفاده شود.

      مثال : 

      پس از اجرا، نتیجه زیر را دریافت خواهید کرد.

      مثال : 

      این چیزی نیست که باید نمایش داده شود. بدیهی است که نقل قول های واحد از جایگزینی متغیر جلوگیری می کنند. اگر می خواهید مقادیر متغیر را جایگزین کنید و کاری کنید که کامای وارونه (نقل قول) همان طور که پیش بینی می شود ، کار کند ، بنابراین باید دستورات خود را به صورت زیر قرار دهید.

      مثال : 

      پس از اجرا، نتیجه زیر را دریافت خواهید کرد.

      مثال : 

      نقل قول های دوتایی معنای ویژه ی همه کاراکترها به جز موارد زیر را حذف می کند.

      • $ برای پارامتر substitution
      • Backquotes برای دستور substitution
      •  $\ برای فعال کردن علائم تحت اللفظی دلار
      • \ برای فعال کردن backquotes های تحت اللفظی
      •  “\ برای فعال کردن نقل قول های دوتایی جاسازی شده
      • \\ برای فعال کردن backslash های تعبیه شده
      • همه کاراکترهای \ دیگر تحت اللفظی هستند (خاص نیستند)

      کاراکترهای موجود در نقل قول های واحد دقیقاً به صورتی نقل قول می شوند که ظاهراً یک backslash در جلوی هر کاراکتر قرار دارد. با این کار ، فرمان echo به روشی مناسب نمایش داده می شود.

      به نمونه ی زیر توجه کنید، در این جا نباید کل رشته را داخل نقل واحدها بگذارید بلکه باید از یک backslash (\) به شرح زیر استفاده کنید.

      مثال : 

      Backquotes

      قرار دادن هر دستور Shell بین backquotes ، این دستور را اجرا می کند.

      سینتکس

      در این جا سینتکس ساده ای برای قرار دادن هر دستور Shell بین backquotes آمده است.

      مثال : 

      مثال

      دستور date در مثال زیر اجرا می شود و نتیجه تولید شده در متغیر DATA ذخیره می شود.

      مثال : 

      پس از اجرا، نتیجه زیر را دریافت خواهید کرد.

      مثال : 

      کلام پایانی

      در این بخش از آموزش یونیکس، با مکانیسم های نقل قول Shell در یونیکس (UNIX) آشنا شدیم. در بخش بعد به بررسی Redirection ورودی‌ها و خروجی‌ها در اسکرپیت‌نویسی Shell خواهیم پرداخت.

      QR:  جلسه ۲۱ : مکانیسم های نقل قول Shell در یونیکس (UNIX)
      به اشتراک بگذارید