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



  • ۲۰
  • اسفند

جلسه ۲۲ : آشنایی با Redirection ورودی‌ و خروجی‌ در اسکرپیت‌نویسی Shell

  • دسته‌بندی‌ها :
جلسه ۲۲ : آشنایی با Redirection ورودی‌ و خروجی‌ در اسکرپیت‌نویسی Shell
    • جزئیات
    • نوع محتواآموزشی

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

      آشنایی با Redirection ورودی‌ و خروجی در اسکرپیت‌ نویسی Shell

      در این بخش، به طور مفصل در مورد Redirection ورودی / خروجی Shell بحث خواهیم کرد. بیش تر دستورات سیستم یونیکس، ورودی را از ترمینال تان می گیرند و خروجی حاصل را به ترمینال شما می فرستند. یک دستور به طور معمول ورودی خود را از ورودی استاندارد می خواند ، که به طور پیش فرض پایانه شماست. به طور مشابه ، یک فرمان به طور معمول خروجی خود را به خروجی استاندارد می نویسد ، که دوباره به طور پیش فرض پایانه شماست.

      Redirection خروجی

      خروجی یک دستوری که معمولاً برای خروجی استاندارد در نظر گرفته شده است ، به راحتی می تواند به جای آن به یک فایل دیلیور شود. این قابلیت به عنوان output redirection شناخته می شود.

      اگر نماد < فایل به هر دستوری که به طور معمول خروجی آن را به خروجی استاندارد می نویسد ، اضافه شود ، خروجی آن دستور به جای ترمینال شما برای فایل ارسال می شود.

      دستور who بررسی می کند که خروجی دستور در فایل یوزر redirect می شود.

      مثال : 

      توجه کنید که هیچ خروجی در ترمینال ظاهر نمی شود. دلیل آن، این است که خروجی، از دستگاه خروجی استاندارد پیش فرض (ترمینال) به فایل مشخص شده هدایت می شود. می توانید users file را برای محتوای کامل بررسی کنید.

      مثال : 

      اگر یک فرمان، خروجی خود را به یک فایل redirecte کند و فایل از قبل حاوی برخی داده ها باشد ، آن داده ها از بین می روند. مثال زیر را در نظر بگیرید.

      مثال : 

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

      مثال : 

      مبحث Redirection ورودی‌ و خروجی در اسکرپیت‌ نویسی Shell را ادامه می دهیم.

      Redirection ورودی

      دقیقاً همان طور که می توان خروجی یک دستور را به یک فایل redirecte کرد ، همچنین می توان ورودی یک دستور را از یک فایل redirecte کرد. از آن جا که از کاراکتر بزرگ تر از < برای تغییر مسیر خروجی استفاده می شود ، از کاراکتر کم تر از > برای تغییر مسیر ورودی یک دستور استفاده می شود.

      دستوراتی که به طور معمول ورودی خود را از ورودی استاندارد می گیرند می توانند ورودی خود را از یک فایل با این روش هدایت کنند. به عنوان مثال ، برای شمارش تعداد خطوط file users تولید شده در بالا ، می توانید این دستور را به شرح زیر اجرا کنید.

      مثال : 

      پس از اجرا ، خروجی زیر را دریافت خواهید کرد. می توانید با ورودی استاندارد دستور wc از file users ، تعداد خطوط موجود در فایل را شمارش کنید.

      مثال : 

      توجه داشته باشید که در خروجی تولید شده توسط دو فرم دستور wc تفاوت وجود دارد. در حالت اول ، نام file users با تعداد خط ذکر شده است. اما در مورد دوم ، این طور نیست.

      در حالت اول ، wc می داند که ورودی اش را از file users می خواند. در حالت دوم ، فقط می داند که ورودی اش را از ورودی استاندارد می خواند بنابراین نام فایل را نشان نمی دهد.

      Here Document

      یک Here Document برای تغییر مسیر ورودی به یک برنامه یا یک اسکریپت شل تعاملی استفاده می شود.

      ما می توانیم با تهیه ورودی مورد نیاز برای برنامه یا اسکریپت شل تعاملی ، یک برنامه اسکریپت تعاملی را در یک اسکریپت شل بدون user action اجرا کنیم.

      فرم کلی برای یک here document به شکل زیر است.

      مثال : 

      در این جا شل از عملگر >> به عنوان یک دستورالعمل برای خواندن ورودی تعبیر می کند تا زمانی که یک خط حاوی جدا کننده ی (delimiter) مشخص شده را پیدا کند. تمام خطوط ورودی به خط حاوی جداکننده می روند، سپس در ورودی استاندارد فرمان تغذیه می شوند.

      delimiter به پوسته می گوید که here document تکمیل شده است. بدون آن ، شل به خواندن ورودی برای همیشه ادامه می دهد. delimiter باید یک کلمه واحد باشد که فاقد فاصله یا تب باشد.

      در زیر ورودی فرمان wc -l برای شمارش تعداد کل خطوط آورده شده است.

      مثال : 

      می توانید برای چاپ چندین خط با استفاده از اسکریپت خود از این سند استفاده کنید.

      مثال : 

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

      مثال : 

      اسکریپت زیر با ویرایشگر متن vi جلسه ای را اجرا می کند و ورودی را در فایل test.txt ذخیره می کند.

      مثال : 

      اگر این اسکریپت را با عملکرد vim به عنوان  vi اجرا کنید ، احتمالاً خروجی را مانند زیر مشاهده خواهید کرد.

      مثال : 

      بعد از اجرای اسکریپت ، باید موارد اضافه شده به فایل  test.txt را ببینید.

      مثال : 

      Discard the output

      بعضی اوقات شما نیاز به اجرای یک دستور دارید ، اما نمی خواهید که خروجی روی صفحه نمایش داده شود. در چنین مواردی ، می توانید با هدایت مجدد آن به فایل dev / null/، خروجی را discard کنید.

      مثال : 

      در این جا دستور نام فرمانی است که می خواهید آن را اجرا کنید. فایل dev / null / یک فایل ویژه است که به طور خودکار تمام ورودی هایش را discard می کند.

      برای discard خروجی یک فرمان و همچنین خطای خروجی آن ، از redirection استاندارد برای هدایت STDERR به STDOUT استفاده کنید.

      مثال : 

      در این جا ۲ نشان دهنده ی STDERR و ۱ نشان دهنده STDOUT است. با هدایت دوباره ی STDOUT به STDERR می توانید پیامی را به شرح زیر به STDERR نمایش دهید.

      مثال : 

      دستورات Redirection

      در زیر لیست کاملی از دستوراتی که می توانید برای Redirection استفاده کنید، آمده است.

      ردیفدستور و شرح
      ۱pgm > file

      خروجی pgm به file هدایت می شود.

       

      ۲pgm < file

      برنامه pgm ورودی را از file می خواند.

       

      ۳pgm >> file

      خروجی pgm به file پیوست می شود.

       

      ۴n > file

      خروجی از جریان با توصیف گر n به file هدایت می شود.

       

      ۵n >> file

      خروجی از جریان با توصیف گر n به file الحاق می شود.

       

      ۶n >& m

      ادغام خروجی از جریان n با جریان m

       

      ۷n <& m

      ادغام ورودی از جریان n با جریان m

       

      ۸ tag>>

      ورودی استاندارد از ابتدا از طریق تگ بعدی در شروع خط از این جا وارد می شود.

       

      ۹|

      از یک برنامه یا پردازش خروجی را گرفته و آن را به برنامه ی دیگر ارسال می کند.

      توجه داشته باشید که توصیف کننده فایل ۰ به طور معمول (standard input (STDIN است و ۱، (standard output (STDOUT و ۲، (standard error output (STDERR می باشد.

      مبحث Redirection ورودی‌ و خروجی در اسکرپیت‌ نویسی Shell را در این جا به پایان می رسانیم.

      کلام پایانی

      با مبحث Redirection ورودی‌ و خروجی در اسکرپیت‌ نویسی Shell در این بخش از آموزش یونیکس آشنا شدیم. در بخش بعدی وارد مبحث توابع Shell خواهیم شد. با وب سایت پی وی لرن همراه باشید.

      QR:  جلسه ۲۲ : آشنایی با Redirection ورودی‌ و خروجی‌ در اسکرپیت‌نویسی Shell
      به اشتراک بگذارید