Bash Globbingi õpetus

Bash Globbing Tutorial



Bash ei toeta natiivseid regulaaravaldisi nagu mõned teised standardsed programmeerimiskeeled. Bash -shelli funktsiooni, mida kasutatakse teatud tüüpi mustrite sobitamiseks või laiendamiseks, nimetatakse globimiseks. Globimist kasutatakse peamiselt failinimede sobitamiseks või failist sisu otsimiseks. Globbing kasutab mustri loomiseks metamärke. Allpool on kirjeldatud kõige levinumaid metamärke, mida kasutatakse haaramismustrite loomiseks.

'?' kasutatakse mis tahes tähemärgi sobitamiseks. Sa võid kasutada '?' mitu korda mitme märgi sobitamiseks.







Näide-1:



Oletame, et soovite otsida neid tekstifailinimesid, mille nimed on 4 tähemärki ja laiendid .txt . Kleepuvat mustrit saate rakendada, kasutades ? Selle ülesande täitmiseks neli korda.



Uurige praeguse kataloogi kõigi failide ja kaustade loendit.





$ls-neid

Käivitage järgmine käsk ja otsige neid faile, mille nimed on nelja tähemärgi pikkused ja tundmatud.

$ ls -l ????. txt



Näide-2:

Oletame, et soovite otsida nendest dokumendifailidest, mille nimed on 8 tähemärki, esimesed 4 tähemärki f, o, o ja t ja pikendus on dok . Failide otsimiseks käivitage järgmine käsk globaalse mustriga.

$ls -neidjalg ????. dok

Näide-3:

Oletame, et teate, et failinimi on 'Parim' ja laiend on 3 tähemärki pikk, kuid ei tea laiendust. Käivitage järgmine käsk, kasutades '? ', Et otsida kõiki faile nimega' test ', millel on kolm tähemärki.

$ls -neidparim. ???

Tärn - (*)

„*” kasutatakse null või enama tähemärgi sobitamiseks. Kui teil on faili või teabe otsimiseks vähem teavet, saate seda kasutada „*” haarav muster.

Näide -1:

Oletame, et soovite otsida kõigist failidest 'Pl' pikendamine. Käivitage järgmine käsk, kasutades „*” seda ülesannet tegema.

$ls -neid *.pl

Näide-2:

Oletame, et teate ainult failinime algust, mis on '' . Käivitage järgmine käsk, kasutades*, et otsida kõiki praeguse kataloogi faile, mille nimedega alustatakse '' .

$ls -neidet*.*

Näide-3:

Saate rakendada bash -skriptis tähte „*” erinevatel eesmärkidel ilma faile otsimata. Looge bash -fail nimega 'Check.sh' järgmise skriptiga. Siin, kui kasutaja kirjutab ' y 'või' Y 'või' jah 'või' jah ' siis 'Kinnitatud' prindib ja millal tüüp kirjutab 'N' või 'N' või 'ei' või 'ei' siis 'Kinnitamata' hakkab trükkima.

#!/bin/bash
viskas välja 'Kas soovite kinnitada?'
loevastus
juhtum $ vastus sisse
[Jah]* ) viskas välja 'kinnitatud.';;
[Nr]* ) viskas välja 'Kinnitamata.';;
*) viskas välja 'Proovi uuesti.';;
esac

Käivitage skript.

$löömacheck.sh

Nurknurk - ([])

„[]” kasutatakse vahemiku tegelase sobitamiseks. Allpool on mainitud mõningaid enamasti kasutatavaid vahemiku deklaratsioone.

Kõik suurtähed on määratud vahemikuga, [: ülemine:] või [A-Z].

Kõik väiketähed on määratletud vahemikuga, [: madalam:] või [a-z].

Vahemik määratleb kõik numbrilised numbrid, [: number:] või [0-9].

Kõik suured ja madalamad tähestikud on määratletud vahemikuga, [: alfa:] või [a-zA-z].

Kõik suured tähed, väiketähed ja numbrid on määratletud vahemikuga, [: alnum:] või [a-zA-Z0-9]

Näide -1:

Kõigi failide ja kaustade otsimiseks, mille nimi sisaldab, käivitage järgmine käsk lk või mida või r või s .

$ls -neid [p-d]*

Näide-2:

Käivitage järgmine käsk kõigi failide ja kaustade otsimiseks, mille nimi algab mis tahes numbriga 1 kuni 5.

$ls -neid [1-5]*

Tal puudub - (^)

Sa võid kasutada '^' nurksulgudega, et täpsemalt määratleda mustrit. '^' saab kasutada nurksulgude sees või väljaspool. „^” Kasutatakse väljaspool nurksulge, et otsida faili selle sisu, mis algab antud tähemärkide vahemikuga. „^” Kasutatakse nurksulgudes faili kogu sisu kuvamiseks, tõstes esile read, mis algavad antud tähemärkidega. Failist konkreetse sisu otsimiseks saate kasutada erinevat tüüpi mustreid. 'haare' käsku kasutatakse sisu otsimiseks bash'is. Oletame, et teil on tekstifail nimega „List.txt” järgmise sisuga. Testige selle faili jaoks järgmisi näiteid.

Apple
4000
Banaan
700
Oranž
850
Pirn
9000
kikkapuu

Näide - 1:

Nende ridade otsimiseks käivitage järgmine käsk list.txt fail, mis algab tähega P või Q või R .

$ grep '^[P-R]' list.txt

Näide - 2:

Nende ridade esiletõstmiseks käivitage järgmine käsk list.txt fail, mis algab tähega A või B või C. .

$ grep '[^A-C]' list.txt

Hüüumärk - (!)

Sa võid kasutada '!' vahemiku mustri sees. See toimib samamoodi nagu sümboli „^” kasutamine väljaspool vahemiku mustrit. Mõned näited kasutamise kohta '!' märk on toodud allpool.

Näide - 1:

Nende ridade kuvamiseks käivitage järgmine käsk list.txt fail, mis algab tähega 'P' või Q või R .

$ grep [! P-R] list.txt

Näide - 2:

Nende ridade kuvamiseks käivitage järgmine käsk list.txt fail, mis algab mis tahes numbriga 4 kuni 8 .

$ grep [! 4-8] list.txt

Dollari märk - ($)

'$' kasutatakse lõpumärgi määratlemiseks. Kui teate, et soovite teavet otsida viimase märgi põhjal, saate seda kasutada '$' haarav muster.

Näide - 1:

Nende ridade otsimiseks käivitage järgmine käsk list.txt fail, mis lõpeb '' .

$ grep a $ list.txt

Näide - 2:

Nende ridade otsimiseks käivitage järgmine käsk list.txt fail, mis lõpeb numbriga viiskümmend .

$ grep 50 $ list.txt

Lokkisulg - ({})

„{}” saab kasutada failinimede sobitamiseks rohkem kui ühe globaalse mustriga. Iga muster on lokkisulgudes eraldatud tähega „,” ilma tühikuta. Allpool on toodud mõned näited.

Näide - 1:

Käivitage järgmine käsk nende failide otsimiseks, mille nimed on 5 tähemärki ja mille laiend on 'Sh' või on failide kaks viimast tähemärki 'St' ja laiendus on 'Txt' .

$ ls -l {?????. sh,*st.txt}

Näide - 2:

Käivitage järgmine käsk, et kustutada kõik failid, mille laiendid on 'Doc' või 'docx' .

$rm {*.doc,*.docx}

Toru - (|)

Märki „|” kasutatakse ka rohkem kui ühe tingimuse rakendamiseks õmblusmustrile. Iga muster on käsus eraldatud sümboliga | |.

Näide - 1:

Käivitage järgmine käsk, et otsida neid failinimesid, mis algavad märgiga „a” ja mille laiend on „bash” või „sh”.

$lset*+(.bash|.sh)

Näide - 2:

Looge bash -fail nimega 'Menu.bash' ja lisage järgmine skript. Kui kasutaja tüüp 1 või S. siis trükitakse Teksti otsimine . Kui kasutaja tüüp 2 või R. siis trükitakse Teksti asendamine . Kui kasutaja tüüp 3 või D. siis trükitakse Teksti kustutamine . See trükitakse Proovi uuesti mis tahes muu sisendi jaoks.

#!/bin/bash
viskas välja 'Valige menüüst ükskõik milline suvand:'
loevastus
juhtum $ vastus sisse
1 |S) viskas välja „Otsitakse teksti”;;
2 |R) viskas välja 'Teksti asendamine';;
3 |D) viskas välja 'Teksti kustutamine';;
*) viskas välja 'Proovi uuesti.';;
esac

Käivitage skript.

$löömamenüü.bash

KOKKUVÕTE

Selles õpetuses selgitatakse mõningaid kõige sagedamini kasutatavaid mustreid, kasutades lihtsaid näiteid. Loodan, et pärast ülaltoodud näidete harjutamist on globoerimise mõiste teile selge ja saate seda edukalt rakendada bash -käskudes ja skriptides.

Lisateabe saamiseks vaadake seda videot: