Bash Globbing Tutorial

Bash Globbing Tutorial



Hindi sinusuportahan ng Bash ang katutubong mga regular na expression tulad ng ilang iba pang karaniwang mga wika sa pagprograma. Ang tampok na Bash shell na ginagamit para sa pagtutugma o pagpapalawak ng mga tukoy na uri ng mga pattern ay tinatawag na globbing. Pangunahing ginagamit ang Globbing upang tumugma sa mga filename o paghahanap ng nilalaman sa isang file. Gumagamit ang Globbing ng mga wildcard character upang likhain ang pattern. Ang pinakakaraniwang mga wildcard na character na ginagamit para sa paglikha ng mga pattern ng globbing ay inilarawan sa ibaba.

‘?’ ay ginagamit upang tumugma sa anumang solong character. Pwede mong gamitin ‘?’ para sa maraming beses para sa pagtutugma ng maraming mga character.







Halimbawa-1:



Ipagpalagay, nais mong hanapin ang mga filename ng teksto na ang mga pangalan ay 4 na character ang haba at ang extension ay .txt . Maaari kang maglapat ng pattern ng globbing sa pamamagitan ng paggamit ng ‘ ? ’Apat na beses upang gawin ang gawaing ito.



Alamin ang listahan ng lahat ng mga file at folder ng kasalukuyang direktoryo.





$ls-ang

Patakbuhin ang sumusunod na command na maghanap ng mga file na ang mga pangalan ay apat na character ang haba at hindi kilala.

$ ls -l ????. txt



Halimbawa-2:

Ipagpalagay, nais mong hanapin ang mga file ng dokumento na ang mga pangalan ay 8 character ang haba, unang 4 na character ang f, o, o at t at extension ay dok . Patakbuhin ang sumusunod na utos na may pattern ng globbing upang maghanap sa mga file.

$ls -angpaa ????. doc

Halimbawa-3:

Ipagpalagay, alam mo ang filename ay 'Pinakamahusay' at extension ay 3 character ang haba, ngunit hindi alam ang extension. Patakbuhin ang sumusunod na utos sa pamamagitan ng paggamit ‘? 'Upang maghanap sa lahat ng mga file na may pangalang' pagsubok 'na mayroong anumang extension ng tatlong character ang haba.

$ls -angpinakamahusay. ???

Asterisk - (*)

‘*’ ay ginagamit upang tumugma sa zero o higit pang mga character. Kung mayroon kang mas kaunting impormasyon upang maghanap ng anumang file o impormasyon pagkatapos ay maaari mong gamitin ‘*’ sa pattern ng globbing.

Halimbawa -1:

Ipagpalagay, nais mong hanapin ang lahat ng mga file ng 'Pl' karugtong Patakbuhin ang sumusunod na utos gamit ang ‘*’ upang gawin ang gawaing iyon.

$ls -ang *.pl

Halimbawa-2:

Ipagpalagay, alam mo lamang ang panimulang karakter ng filename lamang na 'to' . Patakbuhin ang sumusunod na utos gamit ang '*' upang maghanap sa lahat ng mga file ng kasalukuyang direktoryo na ang mga pangalan ay nagsimula sa 'to' .

$ls -angsa*.*

Halimbawa-3:

Maaari kang maglapat ng ‘*’ sa bash script para sa iba't ibang mga layunin nang hindi naghahanap ng mga file. Lumikha ng isang bash file na pinangalanan 'Check.sh' kasama ang sumusunod na iskrip. Dito, kung kailan mai-type ng gumagamit ang ‘ y 'o' Y 'o' oo 'o' Oo ' tapos 'Nakumpirma' magpi-print at kung kailan magta-type ang uri 'N' o 'N' o 'hindi' o 'Hindi' tapos 'Hindi kumpirmado' magpi-print.

#! / baseng / bash
itinapon 'Gusto mo bang kumpirmahin?'
basahinsagot
kaso $ sagot sa
[Yy]* ) itinapon 'nakumpirma.';;
[Hindi]* ) itinapon 'Hindi kumpirmado.';;
*) itinapon 'Subukang muli.';;
esac

Patakbuhin ang iskrip.

$bashsuriin.sh

Square Bracket - ([])

‘[]’ ay ginagamit upang tumugma sa character mula sa saklaw. Ang ilan sa mga kadalasang ginagamit na mga deklarasyon sa saklaw ay nabanggit sa ibaba.

Ang lahat ng mga malalaking alpabeto ay tinukoy ng saklaw bilang, [: itaas:] o [A-Z].

Ang lahat ng mga maliit na alpabeto ay tinukoy ng saklaw bilang, [: lower:] o [a-z].

Ang lahat ng mga numerong digit ay tinukoy ng saklaw bilang, [: digit:] o [0-9].

Ang lahat ng malalaki at mas mababang mga alpabeto ay tinukoy ng saklaw bilang, [: alpha:] o [a-zA-z].

Lahat ng malalaking alpabeto, maliliit na alpabeto at mga digit ay tinukoy ng saklaw bilang, [: alnum:] o [a-zA-Z0-9]

Halimbawa -1:

Patakbuhin ang sumusunod na utos upang maghanap sa lahat ng mga file at folder na may nilalaman na pangalan p o Ano o r o s .

$ls -ang [p-s]*

Halimbawa-2:

Patakbuhin ang sumusunod na utos upang maghanap sa lahat ng mga file at folder na ang pangalan ay nagsisimula sa anumang digit mula 1 hanggang 5.

$ls -ang [1-5]*

Kulang siya - (^)

Pwede mong gamitin ‘^’ na may parisukat na bracket upang tukuyin ang partikular na pattern ng globbing. ‘^’ maaaring magamit sa loob o labas ng square bracket. Ginagamit ang ‘^’ sa labas ng square bracket upang maghanap sa mga nilalaman ng file na nagsisimula sa isang naibigay na saklaw ng mga character. Ginagamit ang ‘^’ sa loob ng square bracket upang maipakita ang lahat ng nilalaman ng file sa pamamagitan ng pag-highlight ng mga linya na nagsisimula sa isang naibigay na saklaw ng mga character. Maaari kang gumamit ng iba't ibang uri ng mga pattern ng globbing para sa paghahanap ng partikular na nilalaman mula sa isang file. 'mahigpit na pagkakahawak' ginagamit ang utos para sa paghahanap ng nilalaman sa bash. Ipagpalagay, mayroon kang isang file ng teksto na pinangalanan 'List.txt' kasama ang sumusunod na nilalaman. Subukan ang mga sumusunod na halimbawa para sa file na iyon.

Apple
4000
Saging
700
Kahel
850
Peras
9000
jackdruit

Halimbawa - 1:

Patakbuhin ang sumusunod na utos upang maghanap sa mga linya mula sa listahan.txt file na nagsisimula sa P o Q o R .

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

Halimbawa - 2:

Patakbuhin ang sumusunod na utos upang mai-highlight ang mga linya mula sa listahan.txt file na nagsisimula sa A o B o C .

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

Exclamatory Sign - (!)

Pwede mong gamitin '!' sa loob ng pattern ng saklaw. Gumagana ito katulad ng paggamit ng simbolong ‘^’ sa labas ng pattern ng saklaw. Ilang halimbawa ng paggamit '!' sign ay ibinigay sa ibaba.

Halimbawa - 1:

Patakbuhin ang sumusunod na utos upang ipakita ang mga linyang iyon mula sa listahan.txt file na nagsisimula sa 'P' o Q o R .

$ grep [! P-R] list.txt

Halimbawa - 2:

Patakbuhin ang sumusunod na utos upang ipakita ang mga linyang iyon mula sa listahan.txt file na nagsisimula sa anumang digit mula sa 4 hanggang 8 .

$ grep [! 4-8] list.txt

Tanda ng Dollar - ($)

'$' ay ginagamit upang tukuyin ang nagtatapos na character. Kung alam mong nais na maghanap ng impormasyon batay sa huling karakter pagkatapos ay maaari mong gamitin '$' sa pattern ng globbing.

Halimbawa - 1:

Patakbuhin ang sumusunod na utos upang maghanap sa mga linya mula sa listahan.txt file na nagtatapos sa 'to' .

$ grep isang $ list.txt

Halimbawa - 2:

Patakbuhin ang sumusunod na utos upang maghanap sa mga linya mula sa listahan.txt file na magtatapos sa numero limampu .

$ grep 50 $ list.txt

Kulot na bracket - ({})

‘{}’ maaaring magamit upang tumugma sa mga filename na may higit sa isang mga pattern ng globbing. Ang bawat pattern ay pinaghihiwalay ng ',' sa mga kulot na bracket nang walang anumang puwang. Ang ilang mga halimbawa ay ibinibigay sa ibaba.

Halimbawa - 1:

Patakbuhin ang sumusunod na utos upang maghanap sa mga file na ang mga pangalan ay 5 character ang haba at ang extension ay 'Sh' o ang huling dalawang character ng mga file ay 'St' at ang extension ay 'Txt' .

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

Halimbawa - 2:

Patakbuhin ang sumusunod na utos upang tanggalin ang lahat ng mga file na ang mga extension ay 'Doc' o 'docx' .

$rm {*.doc,*.docx}

Pipe– (|)

Ginagamit din ang sign na ‘|’ para sa paglalapat ng higit sa isang kundisyon sa pattern ng globbing. Ang bawat pattern ay pinaghihiwalay ng simbolong ‘|’ sa utos.

Halimbawa - 1:

Patakbuhin ang sumusunod na utos upang maghanap sa mga filename na nagsisimula sa character na 'a' at may extension na 'bash' o 'sh'.

$lssa*+(.bash|.sh)

Halimbawa - 2:

Lumikha ng isang bash file na pinangalanan 'Menu.bash' at idagdag ang sumusunod na script. Kung ang uri ng gumagamit 1 o S pagkatapos ay i-print ito Naghahanap ng teksto . Kung ang uri ng gumagamit 2 o R pagkatapos ay i-print ito Pinalitan ang teksto . Kung ang uri ng gumagamit 3 o D pagkatapos ay i-print ito Pagtanggal ng teksto . Magpi-print ito Subukang muli para sa anumang iba pang input.

#! / baseng / bash
itinapon 'Pumili ng anumang pagpipilian mula sa menu:'
basahinsagot
kaso $ sagot sa
1 |S) itinapon 'Naghahanap ng teksto';;
2 |R) itinapon 'Pinapalitan ang teksto';;
3 |D) itinapon 'Pagtanggal ng teksto';;
*) itinapon 'Subukang muli.';;
esac

Patakbuhin ang iskrip.

$bashmenu.bash

KONklusyon

Ang ilan sa mga pinaka-karaniwang ginagamit na pattern ng globbing ay ipinaliwanag sa tutorial na ito sa pamamagitan ng paggamit ng napakasimpleng mga halimbawa. Inaasahan kong pagkatapos ng pagsasanay ng mga halimbawa sa itaas, ang konsepto ng globbing ay magiging malinaw sa iyo at mailalapat mo ito sa mga bash na utos at script nang matagumpay.

Para sa karagdagang impormasyon suriin ang video na ito: