LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

این وبلاگ به بحث پیرامون لینوکس و امنیت و زبان برنامه نویسی تحت لینوکس می پردازد.

طبقه بندی موضوعی

دستور pipe و filter در لینوکس

پنجشنبه, ۲۲ خرداد ۱۳۹۳، ۰۸:۲۴ ب.ظ

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


دستور grep

این دستور از خط به خط درون فایل یا فایل هایی را به جستجو برای الگویی که به آن داده میشود می پردازد که قاعده آن به صورت زیر است:

$ grep pattern file(s)


جمله زیر گرفته شده است:

globally search for a regular expression and print all lines containing it.


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

$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

مثالی که در بالا آورده شد خروجی دستور اول را به ازای کلمه Aug به شما میدهد. بعنی هر جا از خروجی دستور اول که کلمه Aug دیده شد آن را نمایش میدهد.


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

- v- : همه خطهایی رو که با الگوی شما سازگار نیست رو چاپ میکنه

- n- : خطهایی که با الگوی شما سازگار هست رو همراه با شماره خطشون چاپ میکنه

- c- :  فقط شماره خطهایی که با الگوی شما سازگار هست رو نشون میده

- i- : الگوی داده شده شما اگر حاوی حروف کوچک و بزرگ باشد, grep آن را نادیده میگیرد و تفاوتی بی آن دو قائل نمیشه


حالا به یک مثال دیگه دقت کنید. مثالی که در پایین اومده به grep میگه تمام خطهایی که در اون carol  و در فاصله ای  برابر یک حرف یا بیش از یک حرف کلمه Aug رو دید اون خط رو چاپ کنه:

$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$


دستور sort

این دستور خروجی فایل یا دستور pipe شده را به ترتیب حروف الفبا میچیند. به مثال زیر توجه کنید:

$sort food
Air
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$


این دستور نیز همراه با option هایی هست که به تعدادی از اون ها اشاره میکنم:

- n- : بر اساس اعداد مرتب میکند

- r- : نظم چینش را برعکس چاپ میکند

- f- : هنگام sort کردن حروف کوچک و بزرگ را با هم در نظر میگیرد

- x+ : به تعداد x فیلد ها را نادیده میگیره  و فیلد مشخص شده رو به نظم در میاره


مثال زیر ی مثال خوبه:

$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$


دستور more و pg

اگر شما دستوری رو اجرا کردید که خروجی آن بیشتر از اندازه معمول screen شماست شما میتونید با استفاده از دستور more اون رو صفحه بندی کنید و پایین برید که البته شبیه اون ولی با یک کاربرد دیگه دستور less هست که بعدا بهش میپردازم. دستور pg هم چیزی مشابه more هست.


به مثال زیر توجه کنید:

$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
.
.
.
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)






موافقین ۰ مخالفین ۰ ۹۳/۰۳/۲۲

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی