لینوکس مقدماتی/تغییر جهت ورودی و خروجی

تغییر جهت ورودی و خروجی یا Input/ Output Redirection قابلیتی است در پوستهٔ لینوکس که طبق آن خروجی بسیاری از دستورات لینوکس را به جای نمایش در ترمینال می‌توان در فایل(با استفاده از > >> ) ذخیره کرد یا اینکه آن خروجی را به عنوان ورودی به دستور و برنامهٔ دیگری(با استفاده از |) داد.

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

pipe یا | ویرایش

توضیح

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

مثال

مثال۱

ls -l | less

توضیح: در مثال۱ خروجی دستور ls که لیستی از فایل‌های دیکتوری‌ فعلی است به عنوان ورودی به برنامهٔ less داده می‌شود که برنامه‌ای است با قابلیت جستجو برای مشاهدهٔ فایل‌های متنی. مثال۲

ifconfig | gerp "inet"

خروجی دستور ifocnfig که برنامه‌ای است برای مشاهدهٔ مشخصات network interface ها (مثلا مشاهدهٔ IP داخلی اختصاص داده شده به network interface) به عنوان ورودی به دستوری grep داده می‌شود (که یک برنامه برای جستجو در فایل متنی است) و همانطور که مشخص است به دنبال خط‌هایی از خروجی ifconfig‌ می‌گردیم که حاوی رشتهٔ inet باشند.

> و >> ویرایش

توضیح ویرایش

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

مثال ویرایش

مثال۱ ویرایش

ls > fl.txt

توضیح: همانطور که در مثال۱ می‌بینید. خروجی دستور ls که لیستی از تمامی فایل‌ها و دیرکتوری‌ها در دیرکتوری‌ فعلی است به فایل fl.txt ریدیرکت می‌شود. در صورتی که در دیرکتوری فعلی فایلی با نام fl.txt وجود نداشته باشد یک فایل با نام مذکور ایجاد می‌شود و اگر فایل از قبل وجود داشت، محتویاتش پاک می‌شود و محتویات جدید در آن گذاشته می‌شود.

مثال۲ ویرایش

ls >> fl.txt

توضیح: در مثال۲ مثل مثال۱ خروجی دستور ls به فایل fl.txt ریدیرکت می‌شود و در فایل fl.txt ذخیره می‌شود. در صورتی که در دیرکتوری فعلی فایلی با نام fl.txt وجود نداشته باشد یک فایل با نام مذکور ایجاد می‌شود و اگر فایل از قبل وجود داشت، محتویات جدید یعنی خروجی دستور ls به محتویات قبلی فایل ضمیمه می‌شود.

نکته تفاوت > و >> در این است که این >> متن را به صورت ضمیمه به فایل اضافه می‌کند ولی این > متن قبلی را به کلی پاک می‌کند.