Den kraftige bash jokertegn i Linux

De kraftige bash wildcards - 2.0

Uten disse kule små ting som kalles shell jokertegn, er det ganske smertefullt å jobbe på Linux-kommandolinjen. Så sørg for at du legger jokertegnene i god bruk.

Hva er shell jokertegn >

joker~~POS=TRUNC er en skallfunksjon som gjør kommandolinjen mye kraftigere enn noen GUI-filbehandlere. Ser du, hvis du vil velge en stor gruppe filer i en grafisk filbehandling, må du vanligvis velge dem med musen. Dette kan virke enkelt, men i noen tilfeller kan det være veldig frustrerende. Anta for eksempel at du har en katalog med en enorm mengde alle slags filer og underkataloger, og du bestemmer deg for å flytte alle HTML-filene, som har ordet "linux" et sted midt i navnene sine, fra den store katalogen til en annen katalog. Hva er en enkel måte å gjøre dette på? Hvis katalogen inneholder en enorm mengde forskjellige HTML-filer, er oppgaven din alt annet enn enkel!

I Linux CLI er denne oppgaven like enkel å utføre som å flytte bare en HTML-fil, og den er så lett på grunn av shell jokertegn. Jokertegn er spesialtegn som lar deg velge filnavn som samsvarer med bestemte mønstre av tegn. Dette hjelper deg med å velge til og med en stor gruppe filer med bare å skrive noen få tegn, og i de fleste tilfeller er det lettere enn å velge filene med en mus.

Her er en liste over de mest brukte jokertegnene i bash:

Wildcard Fyrstikker
* null eller flere tegn
? akkurat ett tegn
[Abcde] nøyaktig ett tegn oppført
[Ae] nøyaktig ett tegn i det angitte området
[! Abcde] ethvert tegn som ikke er oppført
[! Ae] ethvert tegn som ikke er i det angitte området
{Debian, Linux} nøyaktig ett helt ord i alternativene gitt

Du kan bruke jokertegn med en kommando som aksepterer filnavn som argument.

 

Wildcard eksempler >

La oss få noen eksempler. Sannsynligvis er * karakteren allerede kjent for deg, fordi den er mye brukt mange andre steder, ikke bare i Linux. Følgende fjerner for eksempel hver fil fra gjeldende katalog:
rm *

Følgende kommando flytter alle HTML-filene, som har ordet "linux" i navnene, fra arbeidskatalogen til en katalog som heter dir1:
mv *linux*.html dir1

Se, jeg fortalte deg at flytte flere filer kan være like enkelt som å flytte bare en fil!

Følgende viser alle filer som begynner med d og avslutt med .txt:
less d*.txt

Følgende kommando fjerner alle filer hvis navn begynner med junk., etterfulgt av nøyaktig tre tegn:
rm junk.???

Med denne kommandoen listes alle filer eller kataloger hvis navn begynner med hda, etterfulgt av nøyaktig ett tall:
ls hda[0-9]

Dette viser alle filer eller kataloger som begynner med hda, etterfulgt av nøyaktig to tall:
ls hda[0-9][0-9]

Følgende viser alle filer eller kataloger hvis navn starter med heller hd or sd, etterfulgt av en enkelt karakter mellom a og c:
ls {hd,sd}[a-c]

Denne kommandoen kopierer alle filer, som begynner med en stor bokstav, til katalogen dir2:
cp [A-Z]* dir2

Dette sletter alle filer som ikke ender med ceh or g:
rm *[!cehg]

Jeg kunne fortsette om og om med disse eksemplene, men du får ideen. Du kan bruke enkle mønstre eller kombinere forskjellige jokertegn og konstruere svært komplekse mønstre, og som jeg sa før, kan du bruke dem med kommandoer som aksepterer filnavn som argumenter.