Linux Metacharacters деген не және оларды қалай қолданасыз?

Википедияның пікірінше, метакаркер - бұл карат (^), доллар белгісі ($) немесе жұлдызша (*) сияқты ерекше мағынасы бар кез келген таңба.

Linux тұрғысынан, осы метакарактерлердің әділ саны бар және олардың мағыналары қандай команда немесе бағдарлама жұмыс істейтініне қарай әр түрлі болады.

Metacharacter ретінде толық тоқтату (.)

Кішігірім толық аялдама cd , find or sh сияқты пәрмендерді орындау кезінде ағымдағы орынды беру үшін пайдаланылады, бірақ awk , grep және sed сияқты қосымшаларда кез келген таңбаны белгілеу үшін қолданылады.

Мысал ретінде келесі пәрмен ағымдағы mp3 және барлық файлдардағы барлық mp3 файлдарды табады.

табу. - есім * .mp3

Егер сізде осы пәрменді сіз жұмыс істеп тұрған жұмыс каталогын (pwd) іске қоссаңыз, онда сіз өзіңіздің қалтаңыздағы музыкалық қалтаға mp3 файлдарыңызды сақтап қалсаңыз, нәтижені қайтаруыңыз мүмкін.

Енді мына команданы қараңыз:

ps -ef | grep f..efox

PS командасы сіздің компьютеріңіздегі барлық іске қосылған процестерді тізімдейді. Grep пәрмені кірістіру жолдарын және үлгіні іздейді.

Сондықтан, ps -ef командасы іске қосылған процестердің тізімін алады және оны f.efox бар тізімде кез келген жолды іздейтін grep-ге береді. кез келген таңба болуы мүмкін.

Егер сізде өрт соққы бар болса, онда сіз матчты аласыз. Сол сияқты, fonefox немесе freefox деп аталатын бағдарлама болса, олар қайтарылады.

Жұлдызша метакарактер ретінде (*)

Жұлдызша - әйгілі метахарактер және әдеттегідей іздегенде 0 немесе одан да көп дегенді білдіреді.

Мысалға:

табу. - есім * .mp3

* .mp3, .mp3 файлында аяқталатын кез келген файл атауына сәйкестікті қайтарады. Сол сияқты, жұлдызшамды grep пәрменімен төмендегідей көрсеткендей пайдалана аламын:

ps -ef | grep F * efox

Айта кету керек, бұл аздап ерекшеленеді, өйткені жұлдызша нөлге тең немесе одан да көп, сондай-ақ, firefox, facefox және fonefox табуға мүмкіндік береді, ол сондай-ақ флейтфоксты, ферретфоксты және тіпті фефоксты табады.

Metacharacter ретінде карат (^)

Карат (^) жолдың немесе жолдың басталуын белгілеу үшін қолданылады. Ол қалай пайдаланылады?

Ls пәрмені қалтадағы барлық файлдарды төмендегідей тізімдеу үшін пайдаланылады:

лс

Егер сіз «gnome» сияқты белгілі бір жолмен басталатын қалтадағы барлық файлдарды білгіңіз келсе, онда бұл жолды көрсету үшін карат пайдалануға болады.

Мысалға:

ls | grep ^ gnome

Назар аударыңыз, бұл тек файлдар тізімін бастайтын gnome. Егер сіз кез-келген жерде файл атауында gnome бар файлдарды қаласаңыз, сіз қайтадан жұлдызшаға қайта ораласыз.

Жоғарыда келтірілген мысалда, ls файл атауларының тізімін қайтарады және осы тізімді үлгі сәйкестігі үшін пайдаланылатын grep-ге жібереді. grep карат символы кейін келетін кейіпкерлермен басталатын кез келген нәрсені табуды білдіреді және бұл жағдайда бұл гнома.

Метакаркер ретінде доллар символы ($)

Доллар символы Linux ішіндегі метакарактер ретінде бірнеше мағынаға ие болуы мүмкін.

Үлгілерге сай болған кезде бұл каратқа қарама-қарсы және белгілі бір жолмен аяқталатын кез келген үлгіді білдіреді.

Мысалға:

ls | grep png $

Бұл png көмегімен аяқталатын барлық файлдарды тізімдейді.

Доллар символы bash қабығындағы қоршаған айнымалыларға қол жеткізу үшін де қолданылады.

Мысалға:

экспорттық ит = мольли
echo $ dog

Шеткі экспорттаушы иттер = molly ит деп аталатын ортаны айнымалыны жасайды және оның мәнін моллиге орнатады. Қоршаған ортаға айнымалы мәнге қол жеткізу үшін $ белгісі пайдаланылады. $ Белгісімен echo $ dog мәлімдемесі моллиді көрсетеді, бірақ онсыз, эхо ит мәлімдемесі тек иттің сөзін көрсетеді.

Метакарактерлерден қашу

Кейде сіз метакарактердің ерекше мағынасына ие болуын қаламайсыз. F.refox деп аталатын файл және firefox деп аталатын файл бар болса.

Енді келесі команданы қараңыз:

ls | grep f.refox

Сіз қалай ойлайсыз? F.refox және firefox екеуі де үлгіге сай болғандықтан қайтарылады.

F.refox-ді ғана қайтару үшін толық тоқтаудан қашу керек еді, демек, толық тоқтайды:

ls | grep f \ ref

Жалпы метакарактерлер және олардың мағыналары

Linux Metacharacters тізімі
Таңба Мағынасы
. Кез келген таңба
* Нөл немесе одан көп таңба
^ Үлгіден басталатын кез келген жолды немесе жолды сәйкестендіру (яғни, ^ gnome)
$ Үлгімен аяқталатын кез келген жолды немесе жолды салыңыз (яғни, gnome $)
\ Оның ерекше мағынасын жою үшін келесі таңбаны аулақ ұстаңыз
[] Тізімнің немесе ауқымдардың біреуін салыңыз (яғни [«abc», «def»] немесе [1..9]
+ Бір немесе одан көп алдыңғы (яғни, grep a +)
? Нөлге немесе алдыңғы алдындағыға сәйкес келтіріңіз