شما در لینوکس میتوانید دو دستور رو با استفاده از روش pipe به همدیگه مرتبط کنید و از دو دستور یک خروجی واحد بگیرید. این کار رو شما میتونید نه تنها با دو دستور بلکه با تعداد زیادی از دستور ها همراه کنید و از همه اون ها یک خروجی بگیرید. این کار خیلی برای نوشتن اسکریپت های مختلف به کار میاد.
دستور grep
این دستور از خط به خط درون فایل یا فایل هایی را به جستجو برای الگویی که به آن داده میشود می پردازد که قاعده آن به صورت زیر است:
1 |
blog@Arshatech:~$ grep pattern file(s) |
عبارت زیر بعنوان خروجی استخراج شده است:
1 |
globally search for a regular expression and print all lines containing it. |
ساده ترین راه این استفاده از ان دستور آن است که له آن یک کلمه برای جستجو داده شود. به عنوان مثال به دستور زیر نگاه کنید که خروجی دستور اول به دستور دوم pipe شده است:
1 2 3 4 5 |
blog@Arshatech:~$ 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 رو دید اون خط رو چاپ کنه:
1 2 |
blog@Arshatech:~$ ls -l | grep -i "carol.*aug" -rw-rw-r-- 1 carol doc 1605 Aug 23 07:35 macros |
دستور sort
این دستور خروجی فایل یا دستور pipe شده را به ترتیب حروف الفبا میچیند. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
blog@Arshatech:~$ 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 فیلد ها را نادیده میگیره و فیلد مشخص شده رو به نظم در میاره
مثال زیر میتونه ی مثال خوب باشه:
1 2 3 4 5 |
blog@Arshatech:~$ 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 هست.
به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 |
blog@Arshatech:~$ 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%) |