Tutorial Bash Globbing

Bash Globbing Tutorial



Bash nu acceptă expresii regulate native precum alte limbaje de programare standard. Funcția shell Bash care este utilizată pentru potrivirea sau extinderea tipurilor specifice de modele se numește globbing. Globbing-ul este utilizat în principal pentru a potrivi nume de fișiere sau pentru a căuta conținut într-un fișier. Globbing utilizează caractere wildcard pentru a crea modelul. Cele mai frecvente caractere wildcard care sunt folosite pentru crearea de modele globulare sunt descrise mai jos.

‘?’ este folosit pentru a se potrivi cu orice caracter unic. Poți să folosești ‘?’ de mai multe ori pentru potrivirea mai multor caractere.







Exemplul-1:



Să presupunem că doriți să căutați acele nume de fișiere text ale căror nume au 4 caractere și extensia este .txt . Puteți aplica un model de globulare folosind „ ? De patru ori pentru a face această sarcină.



Aflați lista tuturor fișierelor și folderului din directorul curent.





$eu sunt-la

Rulați următoarea comandă căutați acele fișiere ale căror nume au patru caractere și sunt necunoscute.

$ ls -l ????. txt



Exemplul-2:

Să presupunem că doriți să căutați acele fișiere de documente ale căror nume au 8 caractere, primele 4 caractere sunt f, o, o și t iar extensia este doc . Rulați următoarea comandă cu un model globbing pentru a căuta fișiere.

$eu sunt -lapicior ????. doc

Exemplul-3:

Să presupunem că știți că numele fișierului este 'Cel mai bun' și extensia are 3 caractere, dar nu știu extensia. Rulați următoarea comandă utilizând ‘? ”Pentru a căuta toate fișierele cu numele„ test ”având orice extensie de trei caractere.

$eu sunt -laCel mai bun.???

Asterisc - (*)

„*” este folosit pentru a potrivi zero sau mai multe caractere. Dacă aveți mai puține informații pentru a căuta orice fișier sau informație, puteți utiliza „*” în tipar globular.

Exemplul -1:

Să presupunem că doriți să căutați toate fișierele din „Pl” extensie. Rulați următoarea comandă folosind „*” pentru a face acea sarcină.

$eu sunt -la *.pl

Exemplul-2:

Să presupunem că știți caracterul inițial al numelui fișierului care este doar 'la' . Rulați următoarea comandă folosind ‘*’ pentru a căuta toate fișierele din directorul curent ale cărui nume sunt pornite 'la' .

$eu sunt -lala*.*

Exemplul-3:

Puteți aplica „*” în script bash în diverse scopuri fără a căuta fișiere. Creați un fișier bash numit 'Check.sh' cu următorul script. Aici, când utilizatorul va tasta „ y ”sau„ Y ”sau„ da ”sau„ Da ” atunci 'confirmat' va tipări și când va tasta tipul „N” sau „N” sau „nu” sau „Nu” atunci 'Neconfirmat' va imprima.

#! / bin / bash
aruncat - Vrei să confirmi?
cititRăspuns
caz $ raspuns în
[Da]* ) aruncat 'confirmat.';;
[Nr]* ) aruncat 'Neconfirmat.';;
*) aruncat 'Încearcă din nou.';;
esac

Rulați scriptul.

$bashverifică.sh

Paranteza pătrată - ([])

„[]” este folosit pentru a potrivi caracterul din gama. Unele dintre cele mai utilizate declarații de gamă sunt menționate mai jos.

Toate alfabetele majuscule sunt definite de intervalul ca, [: upper:] sau [A-Z].

Toate alfabetele minuscule sunt definite de intervalul ca, [: lower:] sau [a-z].

Toate cifrele numerice sunt definite de interval ca, [: cifră:] sau [0-9].

Toate alfabetele majuscule și inferioare sunt definite de interval ca, [: alfa:] sau [a-zA-z].

Toate alfabetele majuscule, alfabetul minuscul și cifrele sunt definite de interval ca, [: alnum:] sau [a-zA-Z0-9]

Exemplul -1:

Rulați următoarea comandă pentru a căuta toate fișierele și folderele al căror nume conține p sau ce sau r sau s .

$eu sunt -la [p-s]*

Exemplul-2:

Rulați următoarea comandă pentru a căuta toate fișierele și folderele al căror nume începe cu orice cifră de la 1 la 5.

$eu sunt -la [1-5]*

Îi lipsește - (^)

Poți să folosești „^” cu paranteză pătrată pentru a defini mai precis modelul de globulare. „^” poate fi folosit în interiorul sau în exteriorul parantezei pătrate. „^” Este utilizat în afara parantezei pătrate pentru a căuta conținutul fișierului care începe cu un anumit interval de caractere. „^” Este utilizat în paranteză pătrată pentru a afișa tot conținutul fișierului prin evidențierea liniilor care încep cu un anumit interval de caractere. Puteți utiliza diferite tipuri de modele globulare pentru căutarea unui anumit conținut dintr-un fișier. 'prindere' comanda este utilizată pentru căutarea conținutului în bash. Să presupunem că aveți un fișier text numit „List.txt” cu următorul conținut. Testați următoarele exemple pentru fișierul respectiv.

măr
4000
Banană
700
portocale
850
Pară
9000
jackdruit

Exemplu - 1:

Rulați următoarea comandă pentru a căuta aceste linii list.txt fișier care începe cu P sau Q sau R .

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

Exemplu - 2:

Rulați următoarea comandă pentru a evidenția acele linii din list.txt fișier care începe cu A sau B sau C. .

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

Semn exclamativ - (!)

Poți să folosești '!' în interiorul modelului de gamă. Funcționează la fel ca utilizarea simbolului „^” în afara modelului intervalului. Câteva exemple de utilizare '!' semnul este dat mai jos.

Exemplu - 1:

Rulați următoarea comandă pentru a afișa acele linii din list.txt fișier care începe cu „P” sau Q sau R .

$ grep [! P-R] list.txt

Exemplu - 2:

Rulați următoarea comandă pentru a afișa acele linii din list.txt fișier care începe cu orice cifră din 4-8 .

$ grep [! 4-8] list.txt

Semn de dolar - ($)

„$” este folosit pentru a defini caracterul final. Dacă știți că doriți să căutați informații pe baza ultimului caracter, puteți utiliza „$” în tipar globular.

Exemplu - 1:

Rulați următoarea comandă pentru a căuta aceste linii list.txt fișier care se termină cu 'la' .

$ grep a $ list.txt

Exemplu - 2:

Rulați următoarea comandă pentru a căuta aceste linii list.txt fișier care se termină cu numărul cincizeci .

$ grep 50 $ list.txt

Paranteză buclată - ({})

„{}” poate fi folosit pentru a potrivi nume de fișiere cu mai multe modele globulare. Fiecare model este separat de „,” între paranteză, fără spațiu. Câteva exemple sunt date mai jos.

Exemplu - 1:

Rulați următoarea comandă pentru a căuta fișierele ale căror nume au 5 caractere și extensia este 'SH' sau ultimele două caractere ale fișierelor sunt 'Sf' iar extensia este 'txt' .

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

Exemplu - 2:

Rulați următoarea comandă pentru a șterge toate fișierele ale căror extensii sunt „Doc” sau „docx” .

$rm {*.doc,*.docx}

Pipe– (|)

Semnul „|” este, de asemenea, utilizat pentru aplicarea mai multor condiții pe modelul globului. Fiecare model este separat de simbolul | | în comandă.

Exemplu - 1:

Rulați următoarea comandă pentru a căuta acele nume de fișiere care încep cu caracterul „a” și care au extensia „bash” sau „sh”.

$eu suntla*+(.bash|.SH)

Exemplu - 2:

Creați un fișier bash numit „Menu.bash” și adăugați următorul script. Dacă tipul de utilizator 1 sau S apoi se va imprima Căutarea textului . Dacă tipul de utilizator 2 sau R apoi se va imprima Înlocuirea textului . Dacă tipul de utilizator 3 sau D apoi se va imprima Ștergerea textului . Se va imprima Încearcă din nou pentru orice altă intrare.

#! / bin / bash
aruncat „Selectați orice opțiune din meniu:”
cititRăspuns
caz $ raspuns în
1 |S) aruncat „Căutarea textului”;;
2 |R) aruncat „Înlocuirea textului”;;
3 |D) aruncat „Ștergerea textului”;;
*) aruncat 'Încearcă din nou.';;
esac

Rulați scriptul.

$bashmeniu.bash

CONCLUZIE

Unele dintre cele mai frecvent utilizate modele de globulare sunt explicate în acest tutorial folosind exemple foarte simple. Sper că după practicarea exemplelor de mai sus, conceptul de globbing vă va fi clar și îl veți putea aplica cu succes în comenzile și scripturile bash.

Pentru mai multe informații, consultați acest videoclip: