وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش استفاده از Stdin، Stderr، و Stdout Streams در Bash

0 6
زمان لازم برای مطالعه: 4 دقیقه


با شروع سیستم عامل لینوکس، سه جریان باز می شود. اینها stdin، stdout و stderr هستند. شکل کامل stdin یک ورودی استاندارد است که برای گرفتن ورودی از کاربر استفاده می شود. شکل کامل stdout خروجی استانداردی است که برای ذخیره خروجی دستور در جریان stdout استفاده می شود. شکل کامل stderr خطای استانداردی است که برای ذخیره پیام خطای تولید شده از هر دستوری در جریان داده استفاده می شود. موارد استفاده از این جریان ها در این آموزش نشان داده شده است. مقادیر شناسه عددی مربوط به stdin، stdout و stderr 0، 1 و 2 هستند.

اپراتورهای تغییر مسیر Stdin، Stdout و Stderr

    • “<" یا "0<" برای جریان stdin استفاده می شود.
    • “>” یا “1>” برای جریان stdout استفاده می شود.
    • “2” برای جریان stderr استفاده می شود.

موارد استفاده از Stdin، Stdout و Stderr

کاربردهای stdin، stdout و stderr در این قسمت از آموزش با استفاده از چندین مثال نشان داده شده است.

مثال 1: استفاده از Stdin

روش گرفتن محتوای یک فایل و چاپ آن در terminal در این مثال نشان داده شده است.

دستور «cat» زیر را برای ایجاد یک فایل متنی به نام testdata.txt با مقداری محتوا اجرا کنید:

$ گربه > testdata.txt

دستور «cat» زیر را برای اضافه کردن مقداری محتوا به فایل testdata.txt اجرا کنید:

$ گربه >> testdata.txt

دستور «cat» زیر را اجرا کنید تا یک ورودی از فایل testdata.txt گرفته و آن را در فایل چاپ کنید. terminal:

$ گربه < testdata.txt

خروجی:

خروجی زیر پس از اجرای دستورات قبلی پس از افزودن رشته، “linuzhint.com” و “Scripting Language” به فایل testdata.txt ظاهر می شود:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bash
مثال 2: استفاده از Stdout

روش ایجاد فایل با استفاده از لوله (|) و عملگر تغییر مسیر در این مثال نشان داده شده است.

دستور زیر را اجرا کنید تا یک داده رشته ای در فایل متنی به نام testdata2.txt با لوله گذاری بنویسید. خروجی دستور “echo” با استفاده از عملگر pipe (|) به ورودی دستور “cat” ارسال می شود:

$ اکو “آموزش برنامه نویسی Bash” | گربه > testdata2.txt

دستور cat زیر را برای بررسی محتوای فایل testdata2.txt اجرا کنید:

$ گربه testdata2.txt

خروجی:

پیشنهاد می‌کنیم بخوانید:  کپی کردن فایل ها و دایرکتوری ها در لینوکس

خروجی زیر پس از اجرای دستورات قبلی ظاهر می شود. با توجه به خروجی، خروجی دستور “echo” در فایل testdata2.txt نوشته می شود:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bashروش استفاده از Stdin، Stderr، و Stdout Streams در Bash

دستور زیر را اجرا کنید تا با استفاده از عملگر تغییر مسیر (‘>’) خروجی دستور “ls –l” را در یک فایل متنی به نام list.txt بنویسید:

$ ls > list.txt

برای بررسی محتوای فایل list.txt دستور «cat» زیر را اجرا کنید:

$ گربه list.txt

خروجی:

خروجی زیر پس از اجرای دستورات قبلی ظاهر می شود. با توجه به خروجی، خروجی دستور “ls –l” در فایل list.txt نوشته می شود:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bashروش استفاده از Stdin، Stderr، و Stdout Streams در Bash
مثال 3: استفاده از Stdin و Stdout

روش استفاده از stdin و stdout برای گرفتن ورودی از یک فایل و نوشتن آن در یک فایل در این مثال نشان داده شده است.

دستور «cat» زیر را اجرا کنید تا محتوای فایل testdata.txt را گرفته و در فایل testfile.txt بنویسید. terminal:

$ گربه < testdata.txt > testfile.txt

دستور Cat زیر را برای چاپ محتوای فایل testdata.txt اجرا کنید:

$ گربه testdata.txt

دستور cat زیر را برای چاپ محتوای فایل testfile.txt اجرا کنید:

$ گربه testfile.txt

خروجی:

خروجی زیر پس از اجرای دستورات قبلی ظاهر می شود. با توجه به خروجی، محتوای فایل testdata.txt در فایل testfile.txt نوشته شده و در terminal:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bashروش استفاده از Stdin، Stderr، و Stdout Streams در Bash
مثال 4: استفاده از Stderr

محتوای خطای استاندارد را می توان در آن چاپ کرد terminal یا به یک فایل هدایت می شود یا به /dev/null که مانند سطل بازیافت کار می کند ارسال می شود. راه های مختلف برای عبور از خطای استاندارد در این مثال نشان داده شده است.

دستور زیر معتبر است و رشته “Hello” را با خط جدید چاپ می کند. بنابراین، هیچ خطای استانداردی برای دستور زیر ایجاد نمی شود:

$ printf “%s\n “سلام”

دستور زیر نامعتبر است زیرا دستوری با نام “pirntf” وجود ندارد. بنابراین، یک خطای استاندارد ایجاد می شود و خطا در آن چاپ می شود terminal:

$ pirntf “%s\n “سلام”

خروجی:

پیشنهاد می‌کنیم بخوانید:  روش حذف خطوط خالی با استفاده از sed

خروجی زیر پس از اجرای دستور قبلی ظاهر می شود. با توجه به خروجی، خطای استاندارد در چاپ شده است terminal:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bashروش استفاده از Stdin، Stderr، و Stdout Streams در Bash

گاهی اوقات، نیاز به چاپ خطای سفارشی با پنهان کردن خطای استاندارد دارد تا خطا برای کاربران قابل درک تر شود. این کار را می توان با تغییر مسیر خطا به /dev/null انجام داد. “2>” در اینجا برای تغییر مسیر خطا به /dev/null استفاده می شود.

دستور زیر را اجرا کنید تا خطا را به /dev/null هدایت کنید که در صورت وجود خطایی هیچ خطایی نمایش داده نمی شود:

$ pirntf “%s\n “سلام” 2> /توسعه دهنده/خالی

خروجی:

خروجی زیر پس از اجرای دستور قبلی ظاهر می شود. با توجه به خروجی، خطای استاندارد در چاپ نشده است terminal برای تغییر مسیر به /dev/null:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bashروش استفاده از Stdin، Stderr، و Stdout Streams در Bash

گاهی اوقات، خطای استاندارد نیاز به ذخیره در یک فایل برای استفاده در آینده دارد. این کار را می توان با هدایت کردن خطا به یک فایل با استفاده از عملگر “2>” انجام داد.

دستور زیر را برای تغییر مسیر خطای استاندارد به فایلی به نام errorfile.txt اجرا کنید:

$ pirntf “%s\n “سلام” 2> errorfile.txt

برای بررسی محتوای فایل errorfile.txt دستور زیر را اجرا کنید:

$ گربه errorfile.txt

خروجی:

خروجی زیر پس از اجرای دستورات قبلی ظاهر می شود. با توجه به خروجی، خطای استاندارد به درستی در فایل errorfile.txt نوشته می شود:

روش استفاده از Stdin، Stderr، و Stdout Streams در Bashروش استفاده از Stdin، Stderr، و Stdout Streams در Bash

خطای استاندارد را می توان با استفاده از دستور زیر به هر دو /dev/null و فایل errorfile.txt هدایت کرد:

$ pirntf “%s\n “سلام” 2> /توسعه دهنده/خالی > errorfile.txt

نتیجه

کاربردهای stdin، stdout و stderr در این آموزش با استفاده از مثال‌های متعدد توضیح داده شده است که به کاربران لینوکس کمک می‌کند تا مفهوم این جریان‌ها را درک کنند و در صورت لزوم از آنها به درستی استفاده کنند.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-29 10:32:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید