Tutorial de Bash Globbing

Bash Globbing Tutorial



Bash no admet expressions regulars natives com alguns llenguatges de programació estàndard. La característica de l'intèrpret d'ordres Bash que s'utilitza per fer coincidir o ampliar tipus específics de patrons s'anomena globbing. El globus s'utilitza principalment per fer coincidir noms de fitxer o cercar contingut en un fitxer. Globbing utilitza caràcters comodins per crear el patró. A continuació es descriuen els caràcters comodins més comuns que s’utilitzen per crear patrons de globus.

'?' s'utilitza per fer coincidir qualsevol caràcter. Pots fer servir '?' per diverses vegades per coincidir amb diversos caràcters.







Exemple-1:



Suposem que voleu cercar aquells noms de fitxers de text que tinguin un nom de 4 caràcters i una extensió .txt . Podeu aplicar un patró de globus amb ' ? Quatre vegades per fer aquesta tasca.



Esbrineu la llista de tots els fitxers i carpetes del directori actual.





$ls-la

Executeu l'ordre següent per cercar aquells fitxers els noms dels quals siguin de quatre caràcters i desconeguts.

$ ls -l ????. txt



Exemple-2:

Suposem que voleu cercar aquells fitxers de documents que tinguin un nom de vuit caràcters, els primers 4 caràcters f, o, o i t i l'extensió és doc . Executeu l'ordre següent amb patró de globus per cercar els fitxers.

$ls -lapeu ????. doc

Exemple-3:

Suposem que ja sabeu que el nom del fitxer és 'Millor' i l’extensió té 3 caràcters, però no en conec l’extensió. Executeu l'ordre següent mitjançant '? 'Per cercar tots els fitxers amb el nom 'prova' que tingui una extensió de tres caràcters.

$ls -lael millor. ???

Asterisc - (*)

'*' s'utilitza per fer coincidir zero o més caràcters. Si teniu menys informació per cercar qualsevol fitxer o informació, podeu utilitzar-la '*' en patró de globus.

Exemple -1:

Suposem que voleu cercar tots els fitxers de 'Pl' extensió. Executeu l'ordre següent mitjançant '*' per fer aquesta tasca.

$ls -la *.pl

Exemple-2:

Suposem que coneixeu només el caràcter inicial del nom de fitxer 'A' . Executeu l'ordre següent mitjançant '*' per cercar tots els fitxers del directori actual amb els noms dels quals es comenci 'A' .

$ls -laa*.*

Exemple-3:

Podeu aplicar '*' a l'script bash per a diversos propòsits sense cercar fitxers. Creeu un fitxer bash anomenat 'Check.sh' amb el següent guió. Aquí, quan l’usuari escriurà ‘ y 'o' Y 'o' yes 'o' Yes ​​' llavors 'confirmat' s'imprimirà i quan s'escriurà el tipus 'N' o 'N' o 'no' o 'No' llavors 'No confirmat' imprimirà.

#! / bin / bash
trobo 'Voleu confirmar-ho?'
llegircontesta
Caixa $ resposta dins
[ii]* ) trobo 'confirmat.';;
[Núm]* ) trobo 'No confirmat'.;;
*) trobo 'Torna-ho a provar'.;;
esac

Executeu l'script.

$bashcheck.sh

Suport quadrat - ([])

'[]' s'utilitza per fer coincidir el personatge de l'interval. A continuació s’esmenten algunes de les declaracions d’interval més utilitzades.

Tots els alfabets en majúscules es defineixen per l'interval com, [: upper:] o [A-Z].

Tots els alfabets en minúscules es defineixen per l'interval com, [: lower:] o [a-z].

Tots els dígits numèrics es defineixen per l'interval com, [: dígit:] o [0-9].

Tots els alfabets majúscules i inferiors es defineixen per l'interval com: [: alpha:] o [a-zA-z].

Tots els alfabets majúscules, minúscules i els dígits es defineixen per l'interval com, [: alnum:] o [a-zA-Z0-9]

Exemple -1:

Executeu l'ordre següent per cercar tots els fitxers i carpetes el nom dels quals contingui pàg o bé q o bé r o bé s .

$ls -la [p-s]*

Exemple-2:

Executeu l'ordre següent per buscar a tots els fitxers i carpetes el nom dels quals comenci amb qualsevol dígit de l'1 al 5.

$ls -la [1-5]*

Li falta - (^)

Pots fer servir '^' amb claudàtor per definir el patró de globus més específicament. '^' es pot utilitzar dins o fora del claudàtor. ‘^’ S’utilitza fora del claudàtor per cercar aquells continguts del fitxer que comencin amb un interval de caràcters determinat. '^' S'utilitza dins del claudàtor per mostrar tot el contingut del fitxer ressaltant les línies que comencen amb un interval de caràcters determinat. Podeu utilitzar diferents tipus de patrons globulars per cercar contingut concret des d'un fitxer. 'adherència' L'ordre s'utilitza per a la cerca de contingut a bash. Suposem que teniu un fitxer de text anomenat 'List.txt' amb el contingut següent. Proveu els exemples següents per a aquest fitxer.

poma
4000
Plàtan
700
taronja
850
Pera
9000
jackdruit

Exemple - 1:

Executeu l'ordre següent per cercar aquestes línies llista.txt que comença per P o Q o R .

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

Exemple - 2:

Executeu l'ordre següent per ressaltar aquestes línies llista.txt que comença per A o B o C. .

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

Signe exclamatiu - (!)

Pots fer servir '!' dins del patró de rang. Funciona igual que l’ús del símbol ‘^’ fora del patró d’interval. Alguns exemples d'ús '!' signe es donen a continuació.

Exemple - 1:

Executeu l'ordre següent per mostrar aquestes línies llista.txt que comença per 'P' o Q o R .

$ grep [! P-R] list.txt

Exemple - 2:

Executeu l'ordre següent per mostrar aquestes línies llista.txt fitxer que comença amb qualsevol dígit de 4 a 8 .

$ grep [! 4-8] list.txt

Senyal de dòlar - ($)

'$' s’utilitza per definir el caràcter final. Si sabeu que voleu cercar informació basada en l'últim caràcter, podeu utilitzar-la '$' en patró de globus.

Exemple - 1:

Executeu l'ordre següent per cercar aquestes línies llista.txt que finalitza amb 'A' .

$ grep a $ list.txt

Exemple - 2:

Executeu l'ordre següent per cercar aquestes línies llista.txt fitxer que finalitza amb el número 50 .

$ grep 50 $ list.txt

Parèntesi arrissat - ({})

'{}' es pot utilitzar per fer coincidir noms de fitxer amb més d'un patró de globus. Cada patró està separat per ',' entre claudàtors sense cap espai. A continuació es donen alguns exemples.

Exemple - 1:

Executeu l'ordre següent per cercar aquells fitxers que tinguin un nom de 5 caràcters i l'extensió sigui 'Sh' o els dos darrers caràcters dels fitxers són 'St' i l'extensió és 'Txt' .

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

Exemple - 2:

Executeu l'ordre següent per suprimir tots els fitxers amb extensions 'Doc' o 'docx' .

$rm {*.doc,*.docx}

Canonada– (|)

El signe '|' també s'utilitza per aplicar més d'una condició al patró de globus. Cada patró està separat pel símbol '|' a l'ordre.

Exemple - 1:

Executeu l'ordre següent per cercar els noms de fitxer que comencin amb el caràcter 'a' i que tinguin l'extensió 'bash' o 'sh'.

$lsa*+(.bash|.sh)

Exemple - 2:

Creeu un fitxer bash anomenat 'Menu.bash' i afegiu el següent script. Si l’usuari escriu 1 o S. després s’imprimirà Cerca de text . Si l’usuari escriu 2 o R després s’imprimirà Substitució de text . Si l’usuari escriu 3 o D després s’imprimirà S'està suprimint el text . S’imprimirà Torna-ho a provar per a qualsevol altra entrada.

#! / bin / bash
trobo 'Seleccioneu qualsevol opció del menú:'
llegircontesta
Caixa $ resposta dins
1 |S) trobo 'Cerca de text';;
2 |R) trobo 'Substitució de text';;
3 |D) trobo 'Suprimint text';;
*) trobo 'Torna-ho a provar'.;;
esac

Executeu l'script.

$bashmenu.bash

CONCLUSIÓ

Alguns dels patrons de globus més utilitzats s’expliquen en aquest tutorial mitjançant exemples molt senzills. Espero que després de practicar els exemples anteriors, el concepte de globbing us sigui clar i el podreu aplicar correctament a les ordres i scripts bash.

Per obtenir més informació, consulteu aquest vídeo: