Bash Globbing handledning

Bash Globbing Tutorial



Bash stöder inte infödda reguljära uttryck som vissa andra vanliga programmeringsspråk. Bash -skalfunktionen som används för att matcha eller expandera specifika typer av mönster kallas globbing. Globbing används främst för att matcha filnamn eller söka efter innehåll i en fil. Globbing använder jokertecken för att skapa mönstret. De vanligaste jokertecknen som används för att skapa globmönster beskrivs nedan.

'?' används för att matcha alla enskilda tecken. Du kan använda '?' flera gånger för att matcha flera tecken.







Exempel-1:



Antag att du vill söka i de textfilnamn vars namn är 4 tecken långa och tillägget är .Text . Du kan tillämpa globbing -mönster genom att använda ' ? 'Fyra gånger för att utföra denna uppgift.



Ta reda på listan över alla filer och mappar i den aktuella katalogen.





$ls-de

Kör följande kommando, sök efter de filer vars namn är fyra tecken långa och okända.

$ ls -l ????. txt



Exempel-2:

Anta att du vill söka i de dokumentfiler vars namn är 8 tecken långa, de första 4 tecknen är f, o, o och t och förlängning är doc . Kör följande kommando med globbing -mönster för att söka i filerna.

$ls -defot ????. doc

Exempel 3:

Antag att du vet att filnamnet är 'bäst' och tillägget är 3 tecken långt, men vet inte tillägget. Kör följande kommando med ’? 'För att söka i alla filer med namnet' test 'med en förlängning på tre tecken.

$ls -debäst.???

Asterisk - (*)

‘*’ används för att matcha noll eller fler tecken. Om du har mindre information att söka i någon fil eller information kan du använda ‘*’ i klotmönster.

Exempel -1:

Antag att du vill söka i alla filer av 'Pl' förlängning. Kör följande kommando med ‘*’ att göra den uppgiften.

$ls -de *.pl

Exempel-2:

Antag att du bara känner till startnamnet i filnamnet 'till' . Kör följande kommando med '*' för att söka i alla filer i den aktuella katalogen vars namn startas med 'till' .

$ls -detill*.*

Exempel 3:

Du kan använda ‘*’ i bash -skript för olika ändamål utan att söka efter filer. Skapa en bash -fil med namnet 'Check.sh' med följande skript. Här, när användaren skriver ' y 'eller' Y 'eller' ja 'eller' Ja ' sedan 'bekräftad' kommer att skriva ut och när typen skriver 'N' eller 'N' eller 'nej' eller 'nej' sedan 'Inte bekräftat' kommer att skriva ut.

#!/bin/bash
kastade ut 'Vill du bekräfta?'
läsasvar
fall $ svar i
[Åh]* ) kastade ut 'bekräftad.';;
[Nr]* ) kastade ut 'Inte bekräftat.';;
*) kastade ut 'Försök igen.';;
esac

Kör skriptet.

$våldsamt slagcheck.sh

Fyrkantig fäste - ([])

'[]' används för att matcha karaktären från intervallet. Några av de mest använda intervalldeklarationerna nämns nedan.

Alla stora alfabet definieras av intervallet som [: övre:] eller [A-Z].

Alla små alfabet definieras av intervallet som [: lägre:] eller [a-z].

Alla numeriska siffror definieras av intervallet som [: digit:] eller [0-9].

Alla stora och nedre alfabet definieras av intervallet som [: alfa:] eller [a-zA-z].

Alla stora alfabet, små bokstäver och siffror definieras av intervallet som [: alnum:] eller [a-zA-Z0-9]

Exempel -1:

Kör följande kommando för att söka i alla filer och mappar vars namn innehåller sid eller Vad eller r eller s .

$ls -de [p-s]*

Exempel-2:

Kör följande kommando för att söka i alla filer och mappar vars namn börjar med valfri siffra från 1 till 5.

$ls -de [1-5]*

Han saknar - (^)

Du kan använda ‘^’ med hakparentes för att definiera globbing -mönster mer specifikt. ‘^’ kan användas inom eller utanför hakfästet. ‘^’ Används utanför hakparentes för att söka i innehållet i filen som börjar med ett givet teckenintervall. ‘^’ Används inom hakparentes för att visa allt innehåll i filen genom att markera raderna som börjar med ett givet teckenintervall. Du kan använda olika typer av globmönster för att söka efter specifikt innehåll från en fil. 'grepp' kommandot används för innehållssökning i bash. Anta att du har en textfil med namnet 'List.txt' med följande innehåll. Testa följande exempel för den filen.

Äpple
4000
Banan
700
Orange
850
Päron
9000
jackdruit

Exempel - 1:

Kör följande kommando för att söka efter dessa rader från list.txt fil som börjar med P eller Q eller R .

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

Exempel - 2:

Kör följande kommando för att markera dessa rader från list.txt fil som börjar med A eller B eller C .

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

Utropstecken - (!)

Du kan använda '!' inom intervallmönstret. Det fungerar på samma sätt som att använda ”^” -symbolen utanför intervallmönstret. Några exempel på användning '!' tecknet ges nedan.

Exempel - 1:

Kör följande kommando för att visa dessa rader från list.txt fil som börjar med 'P' eller Q eller R .

$ grep [! P-R] list.txt

Exempel - 2:

Kör följande kommando för att visa dessa rader från list.txt fil som börjar med valfri siffra från 4 till 8 .

$ grep [! 4-8] list.txt

Dollar Sign - ($)

'$' används för att definiera sluttecknet. Om du vet att du vill söka information baserat på sista tecknet kan du använda '$' i klotmönster.

Exempel - 1:

Kör följande kommando för att söka efter dessa rader från list.txt fil som slutar med 'till' .

$ grep en $ list.txt

Exempel - 2:

Kör följande kommando för att söka efter dessa rader från list.txt fil som slutar med numret femtio .

$ grep 50 $ list.txt

Lockigt fäste - ({})

'{}' kan användas för att matcha filnamn med mer än ett globmönster. Varje mönster separeras med ‘,’ i lockigt fäste utan något utrymme. Några exempel ges nedan.

Exempel - 1:

Kör följande kommando för att söka i de filer vars namn är 5 tecken långa och tillägget är 'Sh' eller de två sista tecknen i filerna är 'St' och förlängningen är 'Text' .

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

Exempel - 2:

Kör följande kommando för att radera alla filer vars tillägg är 'Doc' eller 'docx' .

$rm {*.doc,*.docx}

Rör– (|)

'|' -Tecken används också för att tillämpa mer än ett villkor för globbing -mönster. Varje mönster separeras med ‘|’ symbolen i kommandot.

Exempel - 1:

Kör följande kommando för att söka efter de filnamn som börjar med tecknet 'a' och har tillägget 'bash' eller 'sh'.

$lstill*+(.våldsamt slag|.sh)

Exempel - 2:

Skapa en bash -fil med namnet ‘Menu.bash’ och lägg till följande skript. Om användartypen 1 eller S då kommer det att skrivas ut Söker text . Om användartypen 2 eller R. då kommer det att skrivas ut Ersätter text . Om användartypen 3 eller D då kommer det att skrivas ut Radera text . Det kommer att skrivas ut Försök igen för alla andra ingångar.

#!/bin/bash
kastade ut 'Välj något alternativ på menyn:'
läsasvar
fall $ svar i
1 |S) kastade ut 'Sök text';;
2 |R) kastade ut 'Ersätter text';;
3 |D) kastade ut 'Radera text';;
*) kastade ut 'Försök igen.';;
esac

Kör skriptet.

$våldsamt slagmeny. bas

SLUTSATS

Några av de mest använda klotmönstren förklaras i denna handledning med hjälp av mycket enkla exempel. Jag hoppas att efter att ha övat på ovanstående exempel kommer begreppet globbing att vara klart för dig och du kommer att kunna tillämpa det i bash -kommandon och skript framgångsrikt.

För mer information, kolla den här videon: