هدایت ورودی و خروجی (I/O) در لینوکس

هدایت ورودی و خروجی (I/O) در لینوکس
هدایت ورودی و خروجی (I/O) در لینوکس
6 ماه پیش

هدایت ورودی در لینوکس که در اصطلاح به آن Input می‌گویند یکی از قابلیت‌های کاربردی این سیستم عامل است. هدایت ورودی و خروجی (Input/Output) در سیستم‌ عامل لینوکس به مدیریت جریان داده‌ها بین دستگاه‌ها و برنامه‌های کاربردی مختلف اشاره دارد. به طور پیش فرض در لینوکس دستگاه ورودی استاندارد صفحه کلید شما و دستگاه خروجی استاندارد صفحه نمایش شما است. در لینوکس دستگاه‌های ورودی و خروجی به عنوان فایل‌ مدل ‌سازی شده و توسط سیستم‌ عامل مدیریت می‌شوند. در ادامه قصد داریم انواع هدایت ورودی و هدایت خروجی در لینوکس را شرح دهیم و کاربرد هریک را با شما در میان بگذاریم، اگر قصد استفاده از "سیستم عامل لینوکس" را دارید، حتما این مقاله را تا انتها دنبال نمایید.

 

هدایت ورودی و هدایت خروجی در Linux

به صورت کلی سه نوع جریان داده در Linux وجود دارد که از این جریان‌ها در لینوکس برای هدایت فرمان‌های مختلف ورودی و خروجی استفاده می‌شود. در واقع هدایت ورودی و هدایت خروجی در لینوکس با این سه نوع جریان انجام می‌شود، این جریان‌ها به شرح زیر است:

کد استاندارد جریان‌ها

شماره جریان

نوع جریان

< - ورودی استاندارد

stdin (0)

ورودی استاندارد

standard input (stdin)

> - خروجی استاندارد

stdout (1)

خروجی استاندارد

standard output (stdout)

2> - خطای استاندارد

stderr (2)

خطای استاندارد

standard error (stderr)

 

I/O چیست؟

منظور از I/O  در لینوکس دستگاه‌هایی همچون موس، صفحه کلید، مانیتور، پرینتر، دیسک‌ها و سایر دستگاه‌هایی هستند که اطلاعات به سیستم می‌دهند یا از آن اطلاعات دریافت می‌کنند. در واقع اصطلاح I/O مخفف دو کلمه ورودی /خروجی یعنی input/output است. در واقع ورودی / خروجی را می‌توان در لینوکس communication between an information processing system and the outside world بیان کرد.

 

هدایت خروجی در Linux چطور انجام می‌ شود؟

خروجی استاندارد یا همان هدایت خروجی در لینوکس توسط یک برنامه تولید می‌شود، برای هدایت خروجی در لینوکس باید از کاراکتر “<”استفاده کنیم تا هدایت خروجی در لینوکس یا همان Output به درستی انجام شود. در زیر یک مثال از هدایت خروجی در لینوکس را می‌توانید مشاهده نمایید:

ls -al > listings

 

همان طور که در کد زیر می‌توان مشاهده کرد با استفاده از این کد خروجی صفحه نمایش شما به فایل "listings" سیستم عامل Linux هدایت می‌شود. حتما در زمان تایپ این فرمان از نام صحیح فایل استفاده کنید، چون ممکن است فایل دیگری به اشتباه فراخوانی شود.

هدایت خروجی در لینوکس

اگر نمی خواهید فایلی مجددا در خروجی نوشته شود باید از عملگر " >> " استفاده کنید و همانند تصویر زیر کد را به سیستم بدهید:

هدایت خروجی در لینوکس

همچنین شما می‌توانید خروجی استاندارد را علاوه بر فایل‌ها به دستگاه‌ها هم به شکل صحیح هدایت کنید. با استفاده از کد خروجی زیر می‌توانید به سیستم لینوکس فرمان خواندن فایل را بدهید. در کد زیر دستور cat فایل music.mp3 را می‌خواند و خروجی را به /dev/audio می‌فرستند که دستگاه صوتی است. اگر تنظیمات صدا در رایانه شخصی شما صحیح باشد، این دستور فایل music.mp3 را پخش می‌کند.

$ cat music.mp3 > /dev/audio

هدایت ورودی در لینوکس چطور انجام می‌ شود؟

ورودی استاندارد یا همان هدایت ورودی درLinux توسط یک برنامه تولید می‌شود، برای هدایت ورودی در لینوکس باید از کاراکتر “>”استفاده کرد تا هدایت ورودی در لینوکس یا همان Input به درستی انجام شود. ورودی استاندارد یا I/O اصطلاحی برای ورودی یا ورودی‌هایی است که یک برنامه مبتنی بر دستور خط فرمان دریافت می‌کند. در فرآیند استفاده تعاملی، این ورودی معمولا از صفحه کلید بدست می‌آید. بسیاری از دستورات می‌توانند از مرکزی به نام ورودی استاندارد، ورودی مورد نظر شما را بپذیرند. به طور مثال با استفاده از کد زیر می‌توانید از برنامه ایمیل در لینوکس استفاده کنید و از طریق یک ترمینال ایمیل مورد نظر را ارسال نمایید.

Mail -s "Subject" to-address < Filename

همانند تصویر زیر و با استفاده از این کد در لینوکس فایل را با ایمیل می‌توان به پیوست و برای گیرنده ارسال کرد.

توجه داشته باشید که ترتیب هدایت ورودی یا خروجی مهم نیست تنها ضروری است که از عملگرهای هدایت یعنی “>” و “<”  بعد از سایر آپشن‌ها و آرگومان های دستور مورد نظر استفاده کنیم.

 

تغییر مسیر استاندارد خطاها در لینوکس

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

$ ls -l /root/

شما می‌توانید خطای استاندارد را به یک فایل به صورت زیر تغییر دهید:

$ ls -l /root/ 2&gt;ls-error.log

$ cat ls-error.log

تغییر مسیر استاندارد خطاها در لینوکس

برای اضافه کردن خطای استاندارد، از دستور زیر استفاده کنید:

$ ls -l /root/ 2&gt;&gt;ls-error.log

خط لوله (Pipeline) در لینوکس چیست؟

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

 

چطور از فیلترها در هدایت ورودی و خروجی (I/O) در لینوکس استفاده کنیم؟

از خط لوله یا Pipeline ها برای وصل کردن دستورات ورودی و خروجی به هم استفاده می‌شود، فیلترها هم نوعی خط لوله هستند که ورودی استاندارد را دریافت کرده و عملی را روی آن انجام داده و نتیجه حاصل را به خروجی استاندارد ارسال می‌کنند. برای ارسال یک دستور خاص در لینوکس می‌توانید به راحتی فیلترها را باهم ترکیب کنید و پردازش‌های قدرتمندی روی اطلاعات مورد نظر خود انجام دهید، در جدول زیر تمامی دستورات فیلترها در لینوکس با جزئیات ذکر شده است.

دستورات فیلتر

توضیح

sort

مرتب کردن ورودی استاندارد و ارسال حاصل مرتب شده به خروجی استاندارد

uniq

دریافت یک رشته مرتب‌شده و حذف خطوط تکراری از ورودی

grep

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

fmt

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

pr

تقسیم ورودی به صفحات با اضافه کردن header و footer جهت آماده‌سازی برای چاپ

head

ارسال چند خط ابتدایی از ورودی به خروجی (مفید برای بدست آوردن عنوان فایل)

tail

ارسال چند خط از انتهای ورودی به خروجی (مفید برای مشاهده محتوای اخیر فایل‌های لاگ)

tr

ترجمه کاراکترها (مثلاً تبدیل حروف بزرگ به کوچک یا برعکس و تغییر کاراکتر پایان خط)

sed

ویرایش جریان ورودی را انجام می‌دهد، از آن برای ترجمه‌های پیچیده‌ تر از tr استفاده می‌کنند

awk

زبان برنامه‌نویسی قوی برای طراحی فیلترها

 

سخن پایانی 

در این مقاله در مورد نحوه هدایت ورودی و خروجی (I/O) در لینوکس به تفصیل صحبت کردیم تا کسانی که از این سیستم عامل قدرتمند استفاده می‌کنند به راحتی بتوانند با استفاده از نکات گفته شده هدایت ورودی و خروجی در لینوکس را انجام دهند.

سوالات متداول

هدایت ورودی و هدایت خروجی در لینوکس چیست؟

I/O Redirection مخفف عبارت Input Output Redirection به معنی هدایت ورودی خروجی در لینوکس است و با استفاده از این امکان می‌توان ورودی و خروجی فرمان‌های لینوکس را به فایل‌ها و از فایل‌ها هدایت نمود و همچنین چندین فرمان قدرتمند ترکیبی ایجاد کرد.

کاربران در سیستم عامل لینوکس می‌توانند چه دسترسی‌هایی را داشته باشند؟

خواندن یا read : مجوز خواندن محتویات یک فایل است. نوشتن یا write : مجوز ذخیره کردن اطلاعات بر روی فایل مورد نظر و قرار دادن آن بر روی دیسک است. اجرا کردن یا Execute : مجوز اجرا کردن یک فایل یا وارد شدن به یک دایرکتوری است.

فیلترها در هدایت ورودی و خروجی (I/O) در لینوکس چه نقشی دارند؟

فیلترها در واقع نوعی خط لوله هستند که ورودی استاندارد را دریافت کرده و عملی را روی آن انجام داده و نتیجه حاصل را به خروجی استاندارد ارسال می‌کنند.

آیا می‌توان جریان استاندارد ورودی و خروجی را در لینوکس ترکیب کرد؟

بله، با استفاده از دستورات خط لوله (Pipeline) می‌توان به راحتی جریان استاندارد ورودی و خروجی را در لینوکس با هم ترکیب کرد.

author
Mina seyfollahzadeh- نویسنده

5555
A
A