ایستگاه های کاری آنلاین OnWorks Linux و Windows

لوگو

میزبانی آنلاین رایگان برای ایستگاه های کاری

<قبلی | فهرست | بعدی>

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

تغییر مسیر ورودی/خروجی به ما اجازه می دهد تا جایی که خروجی استاندارد می رود را دوباره تعریف کنیم. برای تغییر مسیر خروجی استاندارد به فایل دیگری به جای صفحه نمایش، از عملگر تغییر مسیر “>” و به دنبال آن نام فایل استفاده می کنیم. چرا ما می خواهیم این کار را انجام دهیم؟ ذخیره خروجی یک فرمان در یک فایل اغلب مفید است. برای مثال، می‌توانیم به پوسته بگوییم که خروجی را ارسال کند ls دستور به فایل ls-output.txt به جای صفحه نمایش:


[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt

[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt


در اینجا، ما یک لیست طولانی از آن ایجاد کردیم / usr / bin دایرکتوری و نتایج را به فایل ارسال کرد

ls-output.txt. اجازه دهید خروجی تغییر مسیر فرمان را بررسی کنیم:


[me@linuxbox ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 me me 167878 2016-02-01 15:07 ls-output.txt

[me@linuxbox ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 me me 167878 2016-02-01 15:07 ls-output.txt


خوب؛ یک فایل متنی زیبا، بزرگ اگر به فایل با نگاه کنیم کمتر، خواهیم دید که فایل

ls-output.txt در واقع حاوی نتایج دستور ls ما است:


[me@linuxbox ~]$ کمتر ls-output.txt

[me@linuxbox ~]$ کمتر ls-output.txt


اکنون، بیایید تست تغییر مسیر خود را تکرار کنیم، اما این بار با پیچ و تاب. نام دایرکتوری را به نامی که وجود ندارد تغییر می دهیم:



[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt

ls: نمی تواند به /bin/usr دسترسی پیدا کند: چنین فایل یا دایرکتوری وجود ندارد

[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt

ls: نمی تواند به /bin/usr دسترسی پیدا کند: چنین فایل یا دایرکتوری وجود ندارد


یک پیام خطا دریافت کردیم. این منطقی است زیرا ما دایرکتوری ناموجود را مشخص کردیم /bin/usr، اما چرا پیام خطا به جای هدایت شدن به فایل روی صفحه نمایش داده می شود ls-output.txt؟ پاسخ این است که ls برنامه پیغام خطای خود را به خروجی استاندارد ارسال نمی کند. در عوض، مانند بسیاری از برنامه‌های یونیکس که به خوبی نوشته شده‌اند، پیام‌های خطای خود را به خطای استاندارد ارسال می‌کند. از آنجایی که ما فقط خروجی استاندارد و نه خطای استاندارد را تغییر مسیر دادیم، پیام خطا همچنان به صفحه نمایش ارسال می شد. خواهیم دید که چگونه

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


برای تغییر مسیر خطای استاندارد تنها در یک دقیقه، اما ابتدا، بیایید ببینیم چه اتفاقی برای فایل خروجی ما افتاده است:



[me@linuxbox ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 me me 0 2016-02-01 15:08 ls-output.txt

[me@linuxbox ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 me me 0 2016-02-01 15:08 ls-output.txt


طول فایل اکنون صفر است! این به این دلیل است که وقتی خروجی را با عملگر تغییر مسیر ">" هدایت می کنیم، فایل مقصد همیشه از ابتدا بازنویسی می شود. از آنجایی که ما ls دستور هیچ نتیجه ای ایجاد نکرد و فقط یک پیغام خطا داشت، عملیات تغییر مسیر شروع به بازنویسی فایل کرد و سپس به دلیل خطا متوقف شد و در نتیجه کوتاه شد. در واقع، اگر زمانی نیاز به کوتاه کردن یک فایل (یا ایجاد یک فایل جدید و خالی) داشته باشیم، می‌توانیم از ترفندی مانند این استفاده کنیم:



[me@linuxbox ~]$ > ls-output.txt

[me@linuxbox ~]$ > ls-output.txt


صرفاً استفاده از عملگر تغییر مسیر بدون هیچ دستوری قبل از آن، یک فایل موجود را کوتاه می کند یا یک فایل جدید و خالی ایجاد می کند.

بنابراین، چگونه می توانیم به جای بازنویسی فایل از ابتدا، خروجی هدایت شده را به یک فایل اضافه کنیم؟ برای آن، ما از عملگر تغییر مسیر ">>" استفاده می کنیم، مانند:



[me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt

[me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt


استفاده از عملگر ">>" باعث می شود که خروجی به فایل اضافه شود. اگر فایل از قبل وجود نداشته باشد، درست مثل اینکه از عملگر ">" استفاده شده است ایجاد می شود. بیایید آن را آزمایش کنیم:



[me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [me@linuxbox ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 me me 503634 2016-02-01 15:45 ls-output.txt

[me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [me@linuxbox ~]$ ls -l /usr/bin >> ls-output.txt [me@linuxbox ~]$ ls -l ls-output.txt

-rw-rw-r-- 1 me me 503634 2016-02-01 15:45 ls-output.txt


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


برترین سیستم عامل Cloud Computing در OnWorks: