Bash Globbing Vadnica

Bash Globbing Tutorial



Bash ne podpira izvornih regularnih izrazov kot nekateri drugi standardni programski jeziki. Funkcija lupine Bash, ki se uporablja za ujemanje ali razširjanje določenih vrst vzorcev, se imenuje globbing. Globbing se uporablja predvsem za ujemanje imen datotek ali iskanje vsebine v datoteki. Globbing za ustvarjanje vzorca uporablja nadomestne znake. Najpogostejši nadomestni znaki, ki se uporabljajo za ustvarjanje globlobirnih vzorcev, so opisani spodaj.

'?' se uporablja za ujemanje katerega koli posameznega znaka. Lahko uporabiš '?' večkrat za ujemanje več znakov.







Primer 1:



Recimo, da želite poiskati imena besedilnih datotek, katerih imena so dolga 4 znake, razširitev pa je .txt . Vzorec globbinga lahko uporabite z uporabo ' ? “Štirikrat opraviti to nalogo.



Poiščite seznam vseh datotek in map trenutnega imenika.





$ls-

Zaženite naslednji ukaz za iskanje datotek, katerih imena so štiri znake dolga in neznana.

$ ls -l ????. txt



Primer 2:

Recimo, da želite poiskati tiste datoteke dokumentov, katerih imena so dolga 8 znakov, prvi 4 znaki so f, o, o in t in razširitev je doc . Za iskanje datotek zaženite naslednji ukaz z vzorcem globbing.

$ls -noga ????. doc

Primer 3:

Recimo, da veste, da je ime datoteke 'Najboljši' in razširitev je dolga 3 znake, vendar razširitve ne poznate. Z uporabo zaženite naslednji ukaz ‘? «Za iskanje po vseh datotekah z imenom» test «s katero koli razširitvijo, dolgimi tri znake.

$ls -najboljši. ???

Zvezdica - (*)

'*' se uporablja za ujemanje nič ali več znakov. Če imate za iskanje po kateri koli datoteki ali podatkih manj podatkov, jih lahko uporabite '*' v krogličnem vzorcu.

Primer -1:

Recimo, da želite poiskati vse datoteke v 'Pl' podaljšek. Z uporabo zaženite naslednji ukaz '*' narediti to nalogo.

$ls - *.pl

Primer 2:

Recimo, da poznate začetni znak imena datoteke, ki je 'do' . Z naslednjim ukazom zaženite naslednji ukaz, da poiščete vse datoteke trenutnega imenika, katerih imena se začnejo 'do' .

$ls -do*.*

Primer 3:

V bash skriptu lahko uporabite*za različne namene brez iskanja datotek. Ustvarite bash datoteko z imenom 'Check.sh' z naslednjo pisavo. Tukaj, ko bo uporabnik vnesel ' y 'ali' Y 'ali' yes 'ali' yes ' potem 'Potrjeno' bo natisnil in kdaj bo tip vnesel 'N' ali 'N' ali 'ne' ali 'ne' potem 'Ni potrjeno' bo natisnil.

#!/bin/bash
vrgel ven 'Ali želite potrditi?'
prebratiodgovor
Ovitek $ odgovor v
[Yy]* ) vrgel ven 'potrjeno.';;
[Št]* ) vrgel ven 'Ni potrjeno.';;
*) vrgel ven 'Poskusi ponovno.';;
esac

Zaženite skript.

$bashcheck.sh

Kvadratni oklepaj - ([])

'[]' se uporablja za ujemanje znaka iz obsega. Nekatere izmed najpogosteje uporabljenih deklaracij obsega so omenjene spodaj.

Vse velike abecede so v razponu opredeljene kot, [: velika:] ali [A-Z].

Vse male črke so v razponu definirane kot, [: male:] ali [a-z].

Vse številske števke so v razponu opredeljene kot, [: številka:] ali [0-9].

Vse velike in male črke so v razponu opredeljene kot, [: alpha:] ali [a-zA-z].

Vse velike abecede, male abecede in števke so v razponu opredeljene kot, [: alnum:] ali [a-zA-Z0-9]

Primer -1:

Če želite poiskati vse datoteke in mape, katerih ime vsebuje, zaženite naslednji ukaz str ali kaj ali r ali s .

$ls - [p-s]*

Primer 2:

Zaženite naslednji ukaz za iskanje vseh datotek in map, katerih ime se začne s poljubno številko od 1 do 5.

$ls - [1-5]*

Manjka mu - (^)

Lahko uporabiš '^' s kvadratnimi oklepaji za natančnejšo opredelitev vzorca globanja. '^' se lahko uporablja znotraj ali zunaj oglatih oklepajev. '^' Se uporablja zunaj oglatih oklepajev za iskanje tiste vsebine datoteke, ki se začne z določenim obsegom znakov. '^' Se uporablja v oglatih oklepajih za prikaz celotne vsebine datoteke s poudarjanjem vrstic, ki se začnejo z določenim obsegom znakov. Za iskanje določene vsebine iz datoteke lahko uporabite različne vrste globlobirnih vzorcev. 'oprijem' ukaz se uporablja za iskanje vsebine v bash. Recimo, da imate besedilno datoteko z imenom 'List.txt' z naslednjo vsebino. Preizkusite naslednje primere za to datoteko.

Apple
4000
Banana
700
Oranžna
850
Hruška
9000
jackdruit

Primer - 1:

Za iskanje teh vrstic zaženite naslednji ukaz list.txt datoteko, ki se začne z P ali Q ali R .

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

Primer - 2:

Zaženite naslednji ukaz, da označite te vrstice list.txt datoteko, ki se začne z A ali B ali C .

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

Klicaj - (!)

Lahko uporabiš '!' znotraj vzorca razpona. Deluje enako kot uporaba simbola ‘^’ zunaj vzorca razpona. Nekaj ​​primerov uporabe '!' znak je podan spodaj.

Primer - 1:

Za prikaz teh vrstic zaženite naslednji ukaz list.txt datoteko, ki se začne z 'P' ali Q ali R .

$ grep [! P-R] list.txt

Primer - 2:

Za prikaz teh vrstic zaženite naslednji ukaz list.txt datoteko, ki se začne s poljubno številko iz 4 do 8 .

$ grep [! 4-8] list.txt

Znak za dolar - ($)

'$' se uporablja za določitev končnega znaka. Če želite poiskati podatke na podlagi zadnjega znaka, lahko uporabite '$' v krogličnem vzorcu.

Primer - 1:

Za iskanje teh vrstic zaženite naslednji ukaz list.txt datoteko, ki se konča z 'do' .

$ grep a $ list.txt

Primer - 2:

Za iskanje teh vrstic zaženite naslednji ukaz list.txt datoteko, ki se konča s številko petdeset .

$ grep 50 $ list.txt

Kodrasti oklepaj - ({})

'{}' se lahko uporabi za ujemanje imen datotek z več kot enim vzorcem globanja. Vsak vzorec je ločen z ',' v kodranem oklepaju brez presledka. Nekaj ​​primerov je navedenih spodaj.

Primer - 1:

Zaženite naslednji ukaz za iskanje datotek, katerih imena so dolga 5 znakov in so razširitve 'Sh' ali zadnja dva znaka datotek 'St' in podaljšek je 'Txt' .

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

Primer - 2:

Zaženite naslednji ukaz, če želite izbrisati vse datoteke, katerih razširitve so 'Doc' ali 'docx' .

$rm {*.doc,*.docx}

Cev - (|)

Znak '|' se uporablja tudi za uporabo več kot enega pogoja na vzorcu globbing. Vsak vzorec je v ukazu ločen s simbolom '|'.

Primer - 1:

Zaženite naslednji ukaz za iskanje imen datotek, ki se začnejo z znakom 'a' in imajo razširitev 'bash' ali 'sh'.

$lsdo*+(.bash|.sh)

Primer - 2:

Ustvarite bash datoteko z imenom 'Menu.bash' in dodajte naslednji skript. Če uporabnik vnese 1 ali S. potem se bo natisnilo Iskanje besedila . Če uporabnik vnese 2 ali R. potem se bo natisnilo Zamenjava besedila . Če uporabnik vnese 3 ali D. potem se bo natisnilo Brisanje besedila . Natisnilo se bo Poskusi ponovno za kateri koli drug vnos.

#!/bin/bash
vrgel ven 'V meniju izberite katero koli možnost:'
prebratiodgovor
Ovitek $ odgovor v
1 |S) vrgel ven 'Iskanje besedila';;
2 |R) vrgel ven 'Zamenjava besedila';;
3 |D) vrgel ven 'Brisanje besedila';;
*) vrgel ven 'Poskusi ponovno.';;
esac

Zaženite skript.

$bashmenu.bash

ZAKLJUČEK

Nekateri najpogosteje uporabljeni vzorci globbinga so v tej vadnici razloženi z zelo preprostimi primeri. Upam, da vam bo po vadbi zgornjih primerov koncept globbinga jasen in ga boste lahko uspešno uporabili v ukazih in skriptah bash.

Za več informacij si oglejte ta video: