Bash jokertegn

Bash jokertegn
Når vi trenger å søke etter noe ved hjelp av skallkommandoer, må vi definere et mønster for å søke. Wildcard -tegn brukes til å definere mønsteret for å søke eller matche tekst på strengdata i bash -skallet. En annen vanlig bruk av jokertegn er å lage vanlige uttrykk. Hvordan du kan bruke forskjellige typer jokertegn for å søke på filer vises i denne opplæringen.

Wildcard -tegn

De tre viktigste jokertegnene er,

  • Stjerne eller stjerne (*)
  • Spørsmålstegn (?)
  • Firkantede parenteser ([])

Stjerne (*) brukes til å søke etter en bestemt karakter (er) i null eller flere ganger. Spørsmålstegn (?) brukes til å søke etter et fast antall tegn der hvert spørsmålstegn (?) indikerer hvert tegn. Firkantede parenteser brukes til å matche karakterene i et definert utvalg eller en gruppe tegn. Bruken av disse karakterene vises i neste del av denne opplæringen.

Bruk av stjerne (*)

Stjerne (*) kan brukes på forskjellige måter med skallkommandoer for å søke på filer. Ulike bruk av stjerne (*) er vist i følgende eksempler.

Eksempel - 1: Søk i spesifikk fil med filnavn og '*'

'ls' Kommando brukes til å finne ut listen over filer og mapper i den gjeldende katalogen. 'ls a*' Kommandoen vil søke og skrive ut alle filnavn på den gjeldende katalogen som starter med tegnet, 'en'.

$ ls
$ ls a*

Produksjon:

I henhold til følgende utdata eksisterer 12 filer i den gjeldende katalogen som starter med tegnet, 'A'.

Eksempel - 2: Søkefil med spesiell utvidelse og '*'

Du kan søke i hvilken som helst fil ved å bruke stjerne (*) og filutvidelsen. Hvis du vil søke i alle filer med '.tekst' Utvidelse fra gjeldende katalog kjører deretter følgende kommando fra terminalen. Her kan filnavnet være hvilken som helst karakter (er) og et hvilket som helst antall tegn.

$ ls *.tekst

Du kan også søke på filer med forskjellige utvidelser ved å bruke stjerne (*). Følgende kommando vil søke i alle filer med utvidelse '.sh ' eller '.tekst'

$ ls *.sh *.tekst

Produksjon:

Utgangen viser listen over alle eksisterende filer i den gjeldende katalogen med utvidelsen '.sh 'og'.tekst.

Eksempel - 3: Fjerning av fil etter delvis match og '*'

Du kan bruke stjerne (*) til å matche ethvert filnavn delvis. Følgende kommando vil fjerne filen som inneholder 'test' ord i noen del av filnavnet.

$ ls
$ rm *test *
$ ls

Produksjon:

Følgende utdata viser at det finnes to filer i den gjeldende katalogen som inneholder ordet 'test', og disse filene er fjernet etter å ha utført 'RM' -kommandoen.

Bruk av spørsmålstegn (?)

Når du vet de nøyaktige antallet tegn du vil søke, så er spørsmålstegnet (?) jokertegn kan brukes. Følgende eksempler viser forskjellige bruk av spørsmålstegn (?) jokertegn.

Eksempel - 1: Søkefil med filnavn og '?'

Anta at filutvidelsen, det totale antallet tegn på en fil og noen tegn i filen er kjent, så kan du bruke dette jokertegnet til å søke i filen. Den første kommandoen vil søke i filene som har utvidelsen '.tekst'. Den andre kommandoen vil søke i filene som er fire tegn lang, det siste tegnet er 'T' og utvidelsen av filen er '.tekst'.

$ ls *.tekst
$ ls ???t.tekst

Produksjon:

Utgangen viser at det finnes 7 filer i den gjeldende katalogen med '.txt 'utvidelse og en tekstfil eksisterer som er 4 tegn lang, og den siste tegnet er' T '.

Eksempel -2: Søkefil med utvidelse og '?'

Anta at du kjenner filnavnet og det totale antallet tegn i filutvidelsen, så kan du bruke spørsmålstegnet (?) jokertegn for å søke i filen. Følgende kommando vil søke i filen med filnavn 'Hallo' Og utvidelsen er tre tegn lang.

$ ls
$ ls hei.???

Produksjon:

I henhold til utdataene eksisterer det to filer i den gjeldende katalogen som har navnet 'Hallo', og utvidelsen er tre tegn lang.

Bruk av firkantede parenteser ([])

Ulike tegn på tegn eller gruppe av tegn kan brukes i firkantede parenteser ([]) for å søke på filer basert på rekkevidden.

Eksempel -1: Søkefiler for enhver utvidelse med to områder verdier

Følgende kommando vil søke i en hvilken som helst fil hvis navn inneholder ethvert tegn innen 'A-P'Og ethvert siffer i'0-5'Og filutvidelsen kan være et hvilket som helst tegn.

$ ls
$ LS [A-P0-5]*.*

Produksjon:

Følgende utdata viser listen over alle filer som samsvarer med mønsteret som brukes i kommandoen.

Eksempel-2: Søkefil starter med et bestemt tegn og blir fulgt av et annet tegn

I dette eksemplet vil den andre kommandoen søke på filnavnene som starter med noen av disse tegnene [AFGH] etterfulgt av tegnet 'O' med hvilken som helst utvidelse.

$ ls
$ ls [afgh]*o*

Produksjon:

Følgende utdata viser listen over alle filer som samsvarer med mønsteret som brukes i kommandoen.

Eksempel-3: Søk på filnavn med prefiksverdien

Følgende kommando vil samsvare med filene hvis navn begynner med 'fn' og blir fulgt av et tall innen 0 til 5.

$ LS FN [0-5]

Følgende kommando vil samsvare med filene som inneholder navnet 'Hallo', og utvidelsen inneholder ethvert tegn fra T til Z.

$ ls hei.[T-Z]*

Produksjon:

Følgende utdata viser listen over alle filer som samsvarer med mønsteret som brukes i kommandoene.

Karakterklassen kan brukes i tredje parentes for å matche filnavnet eller den aktuelle strengen i skriptet. Ulike klasser som kan brukes i mønsteret har beskrevet nedenfor.

Klassenavn Hensikt
[: alfa:] Det brukes til å samsvare med en hvilken som helst store bokstaver og små bokstaver og tilsvarer [A-ZA-Z].
[: siffer:] Det brukes til å matche med eventuelle sifre og tilsvarer [0-9].
[: Alnum:] Det brukes til å matche ethvert alfabet og siffer. Det tilsvarer [a-za-z].
[:øverste:] Det brukes til å matche med store bokstaver sistnevnte og tilsvarer [A-Z]
[:Nedre:] Det brukes til å matche med store bokstaver sistnevnte og tilsvarer [A-Z]
[:blank:] Det brukes til å matche med plass og faner.
[:skrive ut:] Det brukes til å matche med utskrivbare tegn.
[: Cntrl:] Det brukes til å matche med ikke-utskrivbare tegn.
[:rom:] Det brukes til å matche med mens du rommet.
[: xDigit:] Det brukes til å matche med heksadesimale sifre.
[: ASCII:] Det brukes til å matche ASCII -tegn.
[:ord:] Det brukes til alfanumeriske tegn inkludert understreking (_).

Bruken av fire for det meste brukte klasser har forklart i følgende fire eksempler.

Eksempel-1: Bruk av [: alfa:] i bash-skript

Følgende skript vil sjekke at inngangen hentet fra brukeren bare inneholder alfabetiske tegn.

#!/bin/bash
ekko -n "Hva heter du? ""
# Tildel inngangsverdien til variabelen
Les navn
# Kontroller inngangsverdien bare alfabetet
if [["$ name" = ~ ^[[: alpha:]]]]; deretter
ekko "Ditt navn er $ navn.""
ellers
ekko "bare skriv inn alfabetisk tegn.""
fi

Produksjon:
Følgende utgang viser meldingen for ugyldig og gyldig innspill.

Eksempel-2: Bruk av [: siffer:] i bash-skript

Følgende skript vil sjekke at inndata hentet fra brukeren bare inneholder numeriske tegn.

#!/bin/bash
ekko -n "Skriv inn ID -en din:"
# Tildel inngangsverdien til variabelen
Les ID
# Angi ID -verdien
Id = "id- $ id"
# Angi mønsteret ved å bruke [[: Siffer:]] Klasse
regex = "id-[[: siffer:]]+"
# Kontroller bare inndataverdien
hvis [[$ id = ~ $ regex]]; deretter
ekko "$ id er gyldig.""
ellers
ekko "$ id er ugyldig.""
fi

Produksjon:

Følgende utgang viser meldingen for ugyldig og gyldig innspill.

Eksempel-3: Bruk av [: Alnum:] i bash-manus

Følgende skript vil sjekke at inngangen hentet fra brukeren bare inneholder alfanumeriske tegn.

#!/bin/bash
ekko -n "Skriv inn adressen din:"
# Tildel inngangsverdien til variabelen
Les addr
# Kontroller inngangsverdien bare inneholder alfabetet og nummeret
if [[$ addr = ~ ^[[: alnum:]]]]; deretter
ekko "adresse er gyldig.""
ellers
ekko "adresse er ugyldig.""
fi

Produksjon:

Følgende utgang viser meldingen for ugyldig og gyldig innspill.

Eksempel-4: Bruk av [: øvre:] i bash-skript

Følgende skript vil sjekke at innspillet fra brukeren kun inneholder store bokstaver.

#!/bin/bash
Echo -n "Skriv inn koden din i store bokstaver:"
# Tildel inngangsverdien til variabelen
Les kode
# Kontroller inngangsverdien som inneholder alle store bokstaver sistnevnte
if [[$ code = ~ ^[[: øvre:]]]]; deretter
ekkokode er riktig.""
ellers
ekkokode kan bare inneholde store bokstaver.""
fi

Produksjon:

Følgende utgang viser meldingen for ugyldig og gyldig innspill.

Konklusjon

De grunnleggende bruken av jokertegn for å søke på filer i terminalen og validere data ved hjelp av bash -skript er vist i denne opplæringen. Jeg håper eksemplene som vises her vil hjelpe Linux -brukerne til å skrive vanlige uttrykksmønstre ordentlig for å matche alt innhold for forskjellige formål.