Bash Globbing-zelfstudie

Bash Globbing Tutorial



Bash ondersteunt geen native reguliere expressies zoals sommige andere standaard programmeertalen. De Bash-shell-functie die wordt gebruikt voor het matchen of uitbreiden van specifieke soorten patronen, wordt globbing genoemd. Globbing wordt voornamelijk gebruikt om bestandsnamen te matchen of om naar inhoud in een bestand te zoeken. Globbing gebruikt jokertekens om het patroon te maken. De meest voorkomende jokertekens die worden gebruikt voor het maken van globbing-patronen worden hieronder beschreven.

'?' wordt gebruikt om een ​​enkel teken te matchen. Je kunt gebruiken '?' voor meerdere keren voor het matchen van meerdere tekens.







Voorbeeld 1:



Stel dat u die tekstbestandsnamen wilt zoeken waarvan de namen 4 tekens lang zijn en de extensie is .tekst . U kunt een globaal patroon toepassen door ' ? ’ vier keer om deze taak uit te voeren.



Ontdek de lijst met alle bestanden en mappen van de huidige map.





$ls-de

Voer de volgende opdracht uit, zoek in die bestanden waarvan de naam vier tekens lang en onbekend is.

$ ls -l ????.txt



Voorbeeld-2:

Stel dat u die documentbestanden wilt doorzoeken waarvan de namen 8 tekens lang zijn, de eerste 4 tekens zijn: f, o, o en t en extensie is doc . Voer de volgende opdracht uit met globbing-patroon om de bestanden te doorzoeken.

$ls -devoet????.doc

Voorbeeld-3:

Stel dat u weet dat de bestandsnaam is 'het beste' en extensie is 3 tekens lang, maar ken de extensie niet. Voer de volgende opdracht uit met behulp van ‘? ’ om alle bestanden te doorzoeken met de naam ‘test’ met een extensie van drie tekens lang.

$ls -dehet beste.???

Sterretje – (*)

‘*’ wordt gebruikt om nul of meer tekens te matchen. Als u minder informatie heeft om een ​​bestand of informatie te doorzoeken, kunt u gebruik maken van ‘*’ in globaal patroon.

Voorbeeld 1:

Stel dat u alle bestanden van wilt doorzoeken 'Pl' verlenging. Voer de volgende opdracht uit met ‘*’ om die taak te doen.

$ls -de *.pl

Voorbeeld-2:

Stel dat u alleen het beginteken van de bestandsnaam kent, namelijk: 'tot' . Voer de volgende opdracht uit met '*' om alle bestanden van de huidige map te zoeken waarvan de namen beginnen met 'tot' .

$ls -detot*.*

Voorbeeld-3:

U kunt '*' in bash-script voor verschillende doeleinden toepassen zonder naar bestanden te zoeken. Maak een bash-bestand met de naam 'check.sh' met het volgende script. Hier, wanneer de gebruiker typt ' y' of 'Y' of 'ja' of 'Ja' dan 'bevestigd' zal afdrukken en wanneer het type zal typen 'n' of 'N' of 'nee' of 'Nee' dan 'Niet bevestigd' zal afdrukken.

#!/bin/bash
gooide uit 'Wil je bevestigen?'
lezenantwoord geven
geval $antwoord in
[yy]* ) gooide uit 'bevestigd.';;
[Nee]* ) gooide uit 'Niet bevestigd.';;
*) gooide uit 'Probeer het opnieuw.';;
esac

Voer het script uit.

$bashcheck.sh

Vierkant haakje - ([])

‘[]’ wordt gebruikt om het teken uit het bereik te matchen. Enkele van de meest gebruikte bereikdeclaraties worden hieronder vermeld.

Alle hoofdletters worden gedefinieerd door het bereik als [:upper:] of [A-Z] .

Alle kleine letters worden gedefinieerd door het bereik als [:lower:] of [a-z].

Alle numerieke cijfers worden gedefinieerd door het bereik als [:digit:] of [0-9].

Alle hoofdletters en lagere alfabetten worden gedefinieerd door het bereik als [:alpha:] of [a-zA-z].

Alle hoofdletters, kleine letters en cijfers worden gedefinieerd door het bereik als [:alnum:] of [a-zA-Z0-9]

Voorbeeld 1:

Voer de volgende opdracht uit om alle bestanden en mappen te zoeken waarvan de naam bevat: P of wat of R of s .

$ls -de [p-s]*

Voorbeeld-2:

Voer de volgende opdracht uit om alle bestanden en mappen te doorzoeken waarvan de naam begint met een cijfer van 1 tot 5.

$ls -de [1-5]*

Hij mist - (^)

Je kunt gebruiken '^' met vierkante haken om het globbing-patroon specifieker te definiëren. '^' kan binnen of buiten vierkante beugel worden gebruikt. '^' wordt buiten de vierkante haken gebruikt om de inhoud van het bestand te doorzoeken die begint met een bepaald bereik aan tekens. '^' wordt gebruikt binnen de vierkante haken om alle inhoud van het bestand weer te geven door de regels te markeren die beginnen met een bepaald reeks tekens. U kunt verschillende soorten globbing-patronen gebruiken om bepaalde inhoud van een bestand te doorzoeken. 'greep' commando wordt gebruikt voor het zoeken naar inhoud in bash. Stel dat je een tekstbestand hebt met de naam 'lijst.txt' met de volgende inhoud. Test de volgende voorbeelden voor dat bestand.

appel
4000
Banaan
700
Oranje
850
Peer
9000
Jackdruit

Voorbeeld 1:

Voer de volgende opdracht uit om die regels te doorzoeken van: lijst.txt bestand dat begint met P of Q of R .

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

Voorbeeld – 2:

Voer de volgende opdracht uit om die regels te markeren van lijst.txt bestand dat begint met A of B of C .

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

Uitroepteken – (!)

Je kunt gebruiken '!' binnen het bereikpatroon. Het werkt hetzelfde als het gebruik van het '^'-symbool buiten het bereikpatroon. Enkele voorbeelden van het gebruik van '!' teken worden hieronder gegeven.

Voorbeeld 1:

Voer de volgende opdracht uit om die regels te tonen van lijst.txt bestand dat begint met ‘P’ of Q of R .

$ grep [!P-R] lijst.txt

Voorbeeld – 2:

Voer de volgende opdracht uit om die regels te tonen van lijst.txt bestand dat begint met een cijfer van 4 tot 8 .

$ grep [!4-8] lijst.txt

Dollarteken – ($)

'$' wordt gebruikt om het eindkarakter te definiëren. Als u informatie wilt zoeken op basis van het laatste teken, kunt u gebruiken '$' in globaal patroon.

Voorbeeld 1:

Voer de volgende opdracht uit om die regels te doorzoeken van: lijst.txt bestand dat eindigt op 'tot' .

$ grep a$ list.txt

Voorbeeld – 2:

Voer de volgende opdracht uit om die regels te doorzoeken van: lijst.txt bestand dat eindigt met het nummer vijftig .

$ grep 50$ list.txt

accolade – ({})

‘{}’ kan worden gebruikt om bestandsnamen te matchen met meer dan één globbing-patroon. Elk patroon wordt gescheiden door ',' tussen accolades zonder spatie. Hieronder worden enkele voorbeelden gegeven.

Voorbeeld 1:

Voer de volgende opdracht uit om die bestanden te zoeken waarvan de naam 5 tekens lang is en de extensie is 'NS' of de laatste twee tekens van de bestanden zijn 'NS' en de extensie is 'tekst' .

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

Voorbeeld – 2:

Voer de volgende opdracht uit om alle bestanden te verwijderen waarvan de extensies zijn 'doc' of 'docx' .

$rm {*.doc,*.docx}

Pijp– ( | )

'|'-teken wordt ook gebruikt voor het toepassen van meer dan één voorwaarde op het globbing-patroon. Elk patroon wordt gescheiden door het symbool '|' in de opdracht.

Voorbeeld 1:

Voer de volgende opdracht uit om die bestandsnamen te zoeken die beginnen met teken 'a' en de extensie 'bash' of 'sh' hebben.

$lstot*+(.bash|.NS)

Voorbeeld – 2:

Maak een bash-bestand met de naam 'menu.bash' en voeg het volgende script toe. Als het gebruikerstype 1 of S dan wordt het afgedrukt Tekst zoeken . Als het gebruikerstype 2 of R dan wordt het afgedrukt Tekst vervangen . Als het gebruikerstype 3 of D dan wordt het afgedrukt Tekst verwijderen . Het zal afdrukken Probeer het opnieuw voor elke andere invoer.

#!/bin/bash
gooide uit 'Kies een optie uit het menu:'
lezenantwoord geven
geval $antwoord in
1 |S) gooide uit 'Tekst zoeken';;
2 |R) gooide uit 'Tekst vervangen';;
3 |NS) gooide uit 'Tekst verwijderen';;
*) gooide uit 'Probeer het opnieuw.';;
esac

Voer het script uit.

$bashmenu.bash

CONCLUSIE

Enkele van de meest gebruikte globbing-patronen worden in deze zelfstudie uitgelegd aan de hand van zeer eenvoudige voorbeelden. Ik hoop dat na het oefenen van de bovenstaande voorbeelden, het concept van globbing je duidelijk zal zijn en dat je het met succes in bash-commando's en scripts kunt toepassen.

Voor meer info check deze video: