در این درس، ما یک ویژگی قدرتمند استفاده شده با بسیاری از برنامههای خط فرمان به نام
اکثر برنامههای خط فرمان که نتایجشان را نمایش میدهند، با فرستادن نتایج به وسیلهای به نام
[me@linuxbox me]$ ls > file_list.txt
در این مثال، فرمان ls اجرا میشود و نتایج در یک فایل به نام file_list.txt نوشته میشوند. چون خروجی ls به فایل تغییر مسیر یافته بود، نتایجی در نمایشگر ظاهر نمیگردد.
هر بار که فرمان فوق تکرار بشود، فایل file_list.txt از ابتدا با خروجی فرمان ls رونویسی میگردد (مترجم: در حقیقت ابتدا محتویات فایل پاک میشود و
[me@linuxbox me]$ ls >> file_list.txt
وقتی نتایج پیوست میگردند، نتایج جدید به انتهای فایل افزوده میشوند، بدین ترتیب هر نوبت که فرمان تکرار میشود فایل را طویلتر میسازد. اگر موقعی که سعی میکنید خروجی تغییر مسیر یافته را به فایل پیوست کنید، فایل موجود نباشد، ایجاد خواهد شد.
بسیاری از فرمانها میتوانند ورودی را از وسیلهای به نام
[me@linuxbox me]$ sort < file_list.txt
در مثال فوق، ما از فرمان sort برای پردازش محتویات فایل file_list.txt استفاده کردیم. نتایج در نمایشگر خارج میشوند چون خروجی استاندارد تغییر مسیر نیافته بود. میتوانستیم خروجی استاندارد را به فایل دیگری تغییر مسیر بدهیم، مانند این:
[me@linuxbox me]$ sort < file_list.txt > sorted_file_list.txt
به طوری که میتوانید ببینید، هر دو خروجی استاندارد و ورودی استاندارد یک فرمان میتوانند تغییر مسیر داده شوند. آگاه باشید که ترتیب تغییر مسیر اهمیت ندارد. تنها التزام آن است که عملگرهای تغییر مسیر («<» و «>») باید بعد از سایر گزینهها و شناسهها در فرمان ظاهر شوند.
(مترجم: یعنی میتوانستیم فرمان فوق را به این شکل نیز بنویسیم مفیدترین و قدرتمندترین موردی که میتوانید با تغییر مسیر ورودی-خروجی برای اتصال چندین فرمان با یکدیگر انجام بدهید به وسیله چیزی است که
[me@linuxbox me]$ ls -l | less
در این مثال، خروجی فرمان ls به برنامه less خورانده میشود. با استفاده از این شگردِ "| less"، شما میتوانید خروجی هر فرمانی را قابل مرور کردن نمایید. من این روش را همیشه به کار میبرم.
با متصل کردن فرمانها به یکدیگر، میتوانیدکارهای برجسته شگفتانگیزی انجام بدهید. در اینجا چند مثال که شما برای امتحان کردن لازم دارید، آمده است:
فرمان | آنچه انجام میدهد |
---|---|
ls -lt | head |
نمایش 10 فایل جدیدتر در دایرکتوری جاری. |
du | sort -nr |
نمایش فهرستی از دایرکتوریهای فرعی و اندازه فضای مصرفی آنها،به صورت مرتب شده از بزرگترین به کوچکترین فایل. |
نمایش تعداد کل فایلها در دایرکتوری کاری جاری و تمام دایرکتوریهای فرعی آن. |
یک نوع برنامه که بارها در خط لولهها به کار میرود
برنامه | کاری که انجام میدهد |
---|---|
ورودی استاندارد را مرتب میکنند و سپس نتیجه مرتب شده را به خروجی استاندارد میفرستد. |
|
از یک جریان مرتب شده دادههای دریافت شده از ورودی استاندارد سطرهای تکراری دادهها را حذف میکند (یعنی اطمینان ایجاد میکند که هر یک از سطرها منحصر بفرد است). |
|
هر سطر داده را که از ورودی استاندارد دریافت میکند، معاینه کرده و هر سطری را که شامل الگوی تعیین شدهای از کاراکترها باشد خارج میکند. |
|
متن را از ورودی استاندارد میخواند، سپس متن قالببندی شده را درخروجی استاندارد بیرون میدهد. |
|
ورودی متن را از ورودی استاندارد دریافت میکند و دادهها را با نشانههای صفحه، سرآیند و پانویس به صفحههای آماده برای چاپ شدن، تفکیک میکند. |
|
چند سطر ابتدای ورودیاش را بیرون میدهد. مناسب برای به دست آوردن سرآیند یک فایل. |
|
چند سطر انتهای ورودیاش را بیرون میدهد. مناسب برای مواردی مانند به دست آوردن آخرین ورودیهای یک فایل ثبت رخداد. |
|
کاراکترها را ترجمه میکند. میتواند برای انجام وظایفی از قبیل تغییر و تبدیلهای حالت کوچک و بزرگ حروف یا برگرداندن کاراکترهای خاتمه دهنده سطر از یک نوع به نوع دیگر (برای مثال، تبدیل فالهای متن DOS به فایلهای متن سَبکِ Unix) به کار برود. |
|
ویرایشگر جریانی. میتواند ترجمههای متن پیچیدهتر از tr انجام بدهد. |
|
یک زبان برنامهنویسی کامل طراحی شده برای ساختن فیلترها. فوقالعاده قدرتمند. |