خبر

  • تک بورد - خط فرمان لینوکس/BSD 101: استفاده از awk ، sed و grep در ترمینال

    خط فرمان لینوکس/BSD 101: استفاده از awk ، sed و grep در ترمینال
    27 روز و 18 ساعت قبل

    "آیا مردم واقعاً این دستورات طولانی و پیچیده را می نویسند؟" در یک کلام: بله. نویسندگان و مفسران ممکن است 10 فرمان را با لوله ها و براکت های زنجیره ای زنجیره ای کنند-کاری که من هرگز در مدیریت سیستم روزانه انجام ندادم. راستش ، من در ارزش واقعی آن تردید داشتم. مطمئناً این فقط یک تمرین در e-braggadocio بود ، درست است؟

    تلاش برای خواندن صفحات مردانه برای ابزارهایی که بیشتر در این زنجیره فرمان گسترده مشاهده می شوند ، باعث نمی شود که آنها نیز دسترسی بیشتری داشته باشند. برای مثال ، صفحه sed sed به تنهایی حدود 1800 کلمه وزن دارد بدون اینکه واقعا نحوه عملکرد عبارات معمولی یا رایج ترین کاربردهای sed را توضیح دهد.

    اگر خود را در یک قایق دیدید ، یک نوشیدنی بگیرید. به جای ارائه لیست دائره المعارفی هر استدلال احتمالی و مورد استفاده برای هر یک از این دستورات در همه جا ، ما قصد داریم به شما بیاموزیم که چگونه در مورد آنها فکر کنید - و چگونه آنها را به راحتی و به طور مivelyثر در دستورات روزانه خود وارد کنید استفاده از خط.

    تغییر مسیر 101

    قبل از اینکه بتوانیم در مورد sed، awk و grep صحبت کنیم ، باید در مورد چیزی کمی اساسی تر صحبت کنیم-تغییر مسیر خط فرمان. باز هم ، ما این را بسیار ساده می دانیم:

    عملگر عملکرد مثال ؛ پس از اتمام پردازش دستور در سمت چپ ، فرمان سمت راست را پردازش کنید. echo one ؛ echo two> خروجی مورد را در سمت چپ در پرونده نامگذاری شده در سمت راست قرار دهید. ls /home /me> myfilesonce.txt؛ ls/home/me > myfilesonce.txt >> خروجی مورد را در سمت چپ تا انتهای فایل موجود در درست. ls /home /me> myfilestwice.txt؛ ls/home/me >> myfilestwice.txt netstat.txt.

    اما گزینه بهتری وجود دارد. در عوض ، می توانیم از grep برای بازگشت فقط خطوطی که واقعاً می خواهیم استفاده کنیم. در این مورد ، آنچه ما می خواهیم در مورد آن بدانیم سرور وب apache است. بنابراین:

    me@banshee: ~ $ sudo netstat -anp | head -n5 اتصالات اینترنتی فعال (سرورها و برقرار شده) Proto Recv-Q Send-Q آدرس محلی آدرس خارجی PID/نام برنامه tcp 0 0 192.168.188.1:53 0.0.0.0:* LISTEN 5128/dnsmasq tcp 0 0 192.168.254.1 : 53 0.0.0.0:* LISTEN 5057/dnsmasq tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 4893/dnsmasq me@banshee: ~ $ sudo netstat -anp | wc -l 1694 me@banshee: su $ sudo netstat -anp | grep apache tcp6 0 0 ::: 80 :::* LISTEN 4011/apache2 me@banshee: ~ $ sudo netstat -anp | سر -n2 ؛ sudo netstat -anp | grep apache اتصالات اینترنتی فعال (سرورها و برقرار شده) Proto Recv-Q Send-Q آدرس محلی آدرس خارجی PID/نام برنامه tcp6 0 0 ::: 80 :::* LISTEN 4011/apache2

    دستورات جدیدی را در بالا معرفی کردیم : head ، که خروجی را به اولین خط n محدود می کند و سپس آن را کوتاه می کند. همچنین wc وجود دارد که با استدلال -l به شما می گوید که چند خط متن وارد ورودی استاندارد آن شده است.

    بنابراین ما می توانیم چهار دستور بالا را به انگلیسی ساده ترجمه کنیم:

    sudo netstat - anp | head -n5: "همه سوکت های شبکه باز را پیدا کنید ، اما خروجی را به پنج خط اول محدود کنید." sudo netstat -anp | wc -l: "همه سوکت های شبکه باز را پیدا کنید ، سپس به من بگویید که چند خط متن برای گفتن به من استفاده کرده اید." sudo netstat -anp | grep apache: "همه سوکت های شبکه باز را پیدا کنید ، اما فقط نتایجی را که شامل کلمه apache است به من نشان دهید." sudo netstat -anp | سر -n2 ؛ sudo netstat -anp | grep apache: "همه سوکت های شبکه باز را پیدا کنید ، اما فقط دو خط هدر را به من نشان دهید - سپس دوباره این کار را انجام دهید ، اما فقط نتایج" apache "را به من نشان دهید."

    با در نظر گرفتن grep به عنوان چیزی بسیار ساده تر از آنچه در واقعیت است ، می توانیم بلافاصله به سراغ یافتن راه های مفید برای استفاده از آن برویم - و می توانیم این کاربردهای ساده را با هم زنجیره ای کنیم تا به راحتی کارهای پیچیده تر را توصیف کنیم!

    هنگامی که با استفاده از grep برای پیدا کردن رشته های ساده مطابق تصویر بالا راحت شدید ، می توانید کارهای پیچیده تری را انجام دهید. این موارد شامل موارد محدود می شوند: اما نگران این موضوع نباشید تا زمانی که با کاربردهای ساده grep آشنا شدید. هنگامی که شروع می کنید ، تصور زندگی بدون grep دیگر واقعاً دشوار است!





خبرهای دیگر از ابزارها