متا ویروسهای لینوکس چیست و چگونه از آنها استفاده میکنید

بر طبق ویکی پدیا، metacharacter هر شخصیتی است که معنای خاصی دارد، مانند یک قلم (^)، علامت دلار ($) یا ستاره (*).

از لحاظ لینوکس تعداد قابل توجهی از این متاکارهای وجود دارد و معانی آنها بسته به کدام دستور یا برنامه اجرا می شود.

توقف کامل به عنوان یک متاکاراکتر (.)

توقف کامل پایین برای استفاده از موقعیت فعلی هنگام اجرای دستورات مانند cd ، find یا sh استفاده می شود اما در برنامه هایی مانند awk ، grep و sed استفاده از آن برای نشان دادن هر کاراکتر استفاده می شود.

به عنوان مثال، فرمان زیر تمام فایل های mp3 در پوشه فعلی و زیر را پیدا خواهد کرد.

پیدا کردن . نام * .mp3

اگر این فرمان را در دایرکتوری کاری خود اجرا کنید (pwd)، احتمالا نتایج به دست می آید، فرض کنید شما فایل های mp3 خود را در یک پوشه موسیقی درون پوشه خانه خود نگه دارید.

حالا به این دستور نگاه کنید:

ps -ef | grep f..efox

دستور ps همه پروسه های در حال اجرا در رایانه شما را لیست می کند. دستور grep خطوط ورودی را جستجو می کند و برای یک الگوی جستجو می کند.

بنابراین دستور ps -ef لیستی از فرآیندهای در حال اجرا را می دهد و آن را به grep می دهد که هر خطی را که لیست آن f..efox است، جستجو می کند. می تواند هر کاراکتر باشد

اگر فایرفاکس را اجرا می کنید، یک بازی را دریافت خواهید کرد. به طور مشابه، اگر شما برنامه ای با نام fonefox یا freefox اجرا می کنید، آنها نیز بازگردانده می شوند.

ستاره به عنوان یک مشخصه (*)

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

مثلا:

پیدا کردن . نام * .mp3

* .mp3 یک بازی برای هر نام فایل ایفا می کند که در .mp3 به پایان می رسد. به طور مشابه، می توانستم ستاره را با دستور grep بکار ببرم به شرح زیر است:

ps -ef | grep F * efox

شایان ذکر است که این موضوع کمی متفاوت است زیرا ستاره به معنای صفر یا بیشتر است و همچنین پیدا کردن فایرفاکس، فیس بوک و فون فاکس می تواند فلوت فاکس، ferretfox و حتی فاکسکس را نیز پیدا کند.

Carat به عنوان Metacharacter (^)

قاتل (^) برای نشان دادن شروع خط یا رشته استفاده می شود. پس چگونه استفاده می شود؟

دستور ls برای لیست تمام فایل ها در یک پوشه به صورت زیر استفاده می شود:

لس

اگر می خواهید همه فایل ها را در یک پوشه که با یک رشته خاص از قبیل "gnome" آغاز می شود، بدست آورید، سپس می توان از karat برای تعیین رشته استفاده کرد.

مثلا:

ls | grep ^ gnome

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

در مثال بالا، ls لیستی از نامهای فایل را باز می کند و این لیست را به grep منتقل می کند که برای تطابق الگو استفاده می شود. گرپ می داند که نماد کارات بدین معنی پیدا کردن هر چیزی است که با شخصیت هایی که بعد از آن شروع می شوند پیدا می کنند و در این مورد، این یک گنوم است.

نماد دلار به عنوان یک متاشت ($)

نماد دلار می تواند معنای چندگانه را به عنوان یک مشخصه درون لینوکس داشته باشد.

هنگامی که برای مطابقت با الگوهای استفاده می شود، به معنای مخالفت با کاراته است و نشان دهنده هر الگو است که با یک رشته خاص به پایان می رسد.

مثلا:

ls | grep png $

این لیست تمام فایل هایی است که با PNG پایان می یابد.

نماد دلار نیز برای دسترسی به متغیرهای محیط در پوسته bash استفاده می شود.

مثلا:

صادرات سگ = molly
echo $ سگ

خط صادرات سگ = molly یک متغیر محیطی به نام سگ ایجاد می کند و ارزش آن را به molly تعریف می کند. برای دسترسی به متغیر محیطی، نماد $ استفاده می شود. با نماد $ نماد echo $ سگ نمایش ملا، اما بدون آن، اظهارنامه سگ فقط نمایش کلمه سگ.

فرار از متاکاراکترها

گاهی اوقات شما نمی خواهید که metacharacter معنای خاصی داشته باشد. اگر فایلی با نام f.refox و یک فایرفاکس به نام فایرفاکس دارید، چه؟

حالا به دستور زیر نگاه کنید:

ls | grep f.refox

شما فکر می کنید بازگشتی است؟ هر دو f.refox و فایرفاکس به دلیل اینکه هر دو الگوی مشابه را دارند، بازگشته اند.

برای بازگشت به f.refox فقط باید از توقف کامل فرار کنید تا در واقع به معنای توقف کامل به صورت زیر باشد:

ls | grep f \\ refox

متاکارهای معمولی و معانی آنها

فهرست متاشتهای لینوکس
شخصیت معنای
. هر کاراکتر
* صفر یا چند کاراکتر
^ هر خط یا رشته ای که با یک الگوی شروع می شود (یعنی ^ gnome)
$ هر خط یا رشته با یک الگوریتم منطبق باشد (یعنی gnome $)
\ شخصیت بعدی را فراموش کرده و معنای خاص خود را حذف می کند
[] یکی از لیست یا محدوده را انتخاب کنید (به عنوان مثال [abc، def،] یا [1..9]
+ مطابقت با یک یا چند قبل (یعنی grep a +)
؟ مطابقت با صفر یا یک قبل