De kraftige bash jokertegn i Linux

De kraftfulde bash wildcards - 2.0

Uden disse seje små ting kaldes shell jokertegn, er arbejdet på Linux kommandolinjen ret smertefuldt. Så sørg for at sætte jokertegnene i god brug.

Hvad er shell jokertegn >

Wildcards er en shell-funktion, der gør kommandolinjen meget kraftigere end nogen GUI-filadministratorer. Ser du, hvis du vil vælge en stor gruppe filer i en grafisk filhåndtering, skal du normalt vælge dem med din mus. Dette kan virke simpelt, men i nogle tilfælde kan det være meget frustrerende. Antag for eksempel, at du har en mappe med en enorm mængde af alle slags filer og underkataloger, og du beslutter at flytte alle HTML-filer, der har ordet "linux" et eller andet sted midt i deres navne, fra det store bibliotek til et andet bibliotek. Hvad er en enkel måde at gøre dette på? Hvis biblioteket indeholder en enorm mængde HTML-filer med forskellige navne, er din opgave alt andet end enkel!

I Linux CLI er denne opgave lige så enkel at udføre som kun at flytte en HTML-fil, og det er så let på grund af shell jokertegn. Jokertegn er specialtegn, der giver dig mulighed for at vælge filnavne, der matcher bestemte tegnmønstre. Dette hjælper dig med at vælge selv en stor gruppe af filer ved kun at skrive et par tegn, og i de fleste tilfælde er det lettere end at vælge filerne med en mus.

Her er en liste over de mest almindelige wildcards i bash:

Wildcard Tændstikker
* nul eller flere tegn
? præcis et tegn
[Abcde] nøjagtigt et tegn opført
[Ae] præcis et tegn i det givne område
[! Abcde] ethvert tegn, der ikke er angivet
[! Ae] ethvert tegn, der ikke er i det givne område
{Debian, Linux} nøjagtigt et helt ord i de givne muligheder

Du kan bruge jokertegn med en kommando, der accepterer filnavne som argumenter.

 

Wildcard eksempler >

Lad os have et par eksempler. Sandsynligvis er * -tegnet allerede kendt for dig, fordi det også er meget brugt mange andre steder, ikke kun i Linux. For eksempel fjerner følgende hver fil fra det aktuelle bibliotek:
rm *

Den følgende kommando flytter alle HTML-filer, der har ordet "linux" i deres navne, fra arbejdskataloget til en mappe med navnet dir1:
mv *linux*.html dir1

Se, jeg fortalte dig, at flytte flere filer kan være lige så simpelt som at flytte kun én fil!

Følgende viser alle filer, der begynder med d og slutte med .txt:
less d*.txt

Følgende kommando fjerner alle filer, hvis navne begynder med junk., efterfulgt af præcis tre tegn:
rm junk.???

Med denne kommando opregnes alle filer eller mapper, hvis navne begynder med hda, efterfulgt af nøjagtigt et tal:
ls hda[0-9]

Her vises alle filer eller mapper, der begynder med hda, efterfulgt af nøjagtigt to tal:
ls hda[0-9][0-9]

Nedenstående listes alle filer eller mapper, hvis navn starter med enten hd or sd, efterfulgt af en enkelt karakter mellem a , c:
ls {hd,sd}[a-c]

Denne kommando kopierer alle filer, der begynder med et stort bogstav, til mappen dir2:
cp [A-Z]* dir2

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

Jeg kunne fortsætte med og videre med disse eksempler, men du får ideen. Du kan bruge enkle mønstre eller kombinere forskellige jokertegn og konstruere meget komplekse mønstre, og som jeg sagde før, kan du bruge dem med kommandoer, der accepterer filnavne som argumenter.