Linuxi metamärgid ja nende tähendused

Metamärk on mis tahes märk, millel on eriline tähendus, näiteks karaat (^), dollarimärk ($) või tärn (*). Linuxil on päris palju neid metamärke ja nende tähendused on olenevalt sellest, millised Linuxi käsk või teie kasutatav programm.

Punkt kui metategelane (.)

Täispeatus (.) näitab praegust asukohta selliste käskude käivitamisel nagu cd, leida, või sh. Sellistes rakendustes nagu awk, grep, ja sed on metamärk, mis tähistab mis tahes tähemärgi kindlat arvu.

Näitena leiab järgmine käsk kõik MP3 failid praeguses kaustas ja selle alamkaustades.

leida. -tüüp f -nimi '*.mp3'

Kui käivitate selle käsu praeguses töökataloogis (pwd), näete tulemusi, eeldades, et hoiate MP3-faile oma kodukausta muusikakaustas.

Nüüd vaadake seda käsku:

ps -ef | grep f..fox

Käsk ps loetleb kõik teie arvutis töötavad protsessid. Käsk grep võtab sisestusread ja otsib mustrit.

Linuxi punktimärk

Käsk ps -ef toob välja töötavate protsesside loendi. toru (|) metamärk saadab selle loendi käsule grep, mis otsib loendist mis tahes rida, mis sisaldab f..rebane, kus punktid viitavad kahele mis tahes tähemärgile.

Kui Firefox töötab, saate vaste. Samamoodi, kui töötab programm nimega fonefox või freefox, tagastatakse ka need.

Kui teil on vaja otsida ainult ühte märki, kasutage punkti (.) metamärgi asemel märki? metategelane. Kasutades? metamärk viitab mis tahes üksikule märgile kas mustri alguses või lõpus.

Tärn kui metategelane (*)

tärn (*) on üldtuntud metamärk. See tähendab, et mustri otsimisel on null või rohkem tähemärki. Näiteks:

ls *.flac
Linuxi tärniga loend

The *.flac osa käsust tagastab vaste mis tahes failinimele, mis lõpeb .flac-ga. Samamoodi saate kasutada tärni koos käsuga grep viimases jaotises järgmiselt:

ps -ef | grep f*fox

See erineb veidi, kuna tärn tähendab nulli või enamat, nii et lisaks firefoxi, facefoxi ja fonefoxi leidmisele leiab see ka flutefoxi, ferretfoxi ja fefoxi.

Linuxi tärn

Karaat kui metategelane (^)

karaat (^) kasutatakse rea või stringi alguse tähistamiseks. Niisiis, kuidas seda kasutatakse?

Käsk ls loetleb kaustas olevad failid järgmiselt:

ls -a

Kui soovite loetleda failid kaustas, mis algavad teatud stringiga, näiteks gnome, saab selle stringi määramiseks kasutada karaati. Näiteks:

ls -a | grep ^gnome

See loetleb failid, mis algavad gnome'iga. Kui soovite faile, mille failinimes on gnome, kasutage tärni.

Linuxi karaadi tegelane

Ülaltoodud näites tagastab käsk ls failinimede loendi ja edastab selle loendi käsule grep, mida kasutatakse mustrite sobitamiseks. Grep teab, et karaadi sümbol tähendab leida kõike, mis algab sellele järgnevate tähemärkidega, ja antud juhul on selleks päkapikk.

Dollarisümbol kui metamärk ($)

dollari sümbol ($) omab Linuxis metamärgina mitut tähendust. Kui seda kasutatakse mustrite sobitamiseks, tähendab see karaadi vastandit ja tähistab mis tahes mustrit, mis lõpeb konkreetse stringiga. Näiteks:

ls | grep png$

See loetleb kõik failid, mis lõpevad tähega png.

Dollari sümbolit kasutatakse ka bash-shelli keskkonnamuutujatele juurdepääsuks. Näiteks:

#! /bin/bash
ekspordi koer = molly
kaja $koer
Linuxi dollari märgi märk

Liin ekspordi koer = molly loob keskkonnamuutuja nimega koer ja määrab selle väärtuse molly. Keskkonnamuutujale juurdepääsuks kasutage sümbolit $. $ sümboliga, kaja $koer avaldus kuvab molly. Ilma selleta on kajakoer avalduses kuvatakse sõna koer.

Põgenevad metamärgid (\\)

Mõnikord ei taha sa, et metategelasel oleks eriline tähendus. Näiteks kui faili kutsutakse f.refox ja kutsutakse teine ​​fail firefox.

Nüüd vaadake järgmist käsku:

ls | grep f.refox

Mis teie arvates tagastatakse? Nii f.refox kui ka firefox tagastatakse, kuna mõlemad vastavad mustrile.

Linuxi paomärk

Ainult faili f.refox tagastamiseks vältige punkti, mis tähendab tegelikult punkti järgmiselt:

ls | grep f\\.refox

Sulud kui metamärk ([])

Võite kasutada sulgusid ([ ])mustrite otsimisel. Sulud määravad konkreetsed tähed, mis sobivad kõikjal mustris. Näiteks:

ls | grep [abc]

See loetleb kõik failid, mis sisaldavad tähti a, b või c.

Linuxi sulgmärk

Sulgusid saate kasutada otsingumustri alguses, lõpus või keskel.

Tähtede vahemiku otsimiseks kasutage sidekriipsu (-). Näiteks, ls [a-h]* tagastab failid, mis algavad mis tahes tähega a kuni h.

Aktsenthaua metategelane

Ülaltoodud näidetes saadab toru metamärk ühe käsu (nagu käsk ls) tulemused teisele käsule (näiteks käsk grep).

Alternatiivne viis selleks on kasutada tagumist tsitaati, mida tuntakse ka kui aktsenthauda (`), et sisestada ühe käsu tulemused teise käsku. Selleks salvestage ühe käsu tulemus muutujasse. Näiteks:

käsk=`ls -lah`
kaja $ käsk
Linuxi tagumine märk

Näide on ülimalt väljamõeldud ja tõenäoliselt ei tee te kunagi midagi sellist, kuid näete, kuidas see töötab. Backtick märk käivitab käsu ja salvestab tulemuse. See võib olla kasulik skriptimisel, kuid see on vähem paindlik kui toru kasutamine lihtsate käskude jaoks.

Levinud metategelased ja nende tähendused

Iseloom Tähendus
. Ükskõik milline tegelane.
* Null või rohkem tähemärki.
^ Sobitage mis tahes rida või string, mis algavad mustriga (nt ^gnome).
$ Sobitage mis tahes rida või string, mis lõpeb mustriga (nt gnome$).
\ Põgeneb järgmise tegelase eest, et eemaldada selle eriline tähendus.
[] Sobitage üks loendist või vahemikust (nt ["abc", "def"] või [1...9]).
+ Sobitage üks või mitu eelnevat (nt grep a+).
? Vaste null või üks eelnev.