Den mest kraftfulla funktionen hos Linux Bash-skalet är dess förmåga att arbeta runt filer och omdirigera deras input och output effektivt. Linux använder specialtecken eller symboler som kallas metatecken som ger speciell betydelse till ett skalkommando med avseende på filsökning och kommandoanslutning.
Metatecken är till hjälp för att lista, ta bort och kopiera filer på Linux. Men funktionen för varje metatecken skiljer sig beroende på vilket kommando du använder det med.
Den här artikeln ger en djupgående guide om olika typer av metatecken i Linux. Till sist förklarar vi hur dessa specialtecken hjälper till att ansluta och utöka kommandon.
Linux-skalet låter dig spara tangenttryckningar medan du skriver kommandon genom att använda metatecken mellan filer eller katalognamn. Dessa tecken hjälper dig att referera till en grupp filer eller en katalog att lista, flytta eller utföra andra aktiviteter på.
Det här är några filmatchande metatecken som Linux-skalet kan tolka:
- * (Asterisk): Matchar enstaka eller flera förekomster av en karaktär
- ? (Frågetecken): Matchar ett enskilt tecken eller en mönsterförekomst
- [ ] (Hakparentes): Matchar alla bindestreckseparerade tal, symboler eller alfabet som anges inom parentes
Ett idealiskt sätt att öva metatecken i Linux är att skapa en ny tom mapp inuti /tmp katalog.
sudo mkdir /tmp/meta
Navigera nu in i /tmp/meta katalog med hjälp av kommandot cd och skapa nya tomma filer med touch, som följer:
touch apple.txt cider.sh vinäger.php cat.txt citron.txt juice.sh havskatt.sh
Använd följande kommandon för att testa "*" metatecken och visa utgångarna:
ls c*
Produktion:
catfish.sh cat.txt cider.sh
ls c*h
Produktion:
havskatt.sh cider.sh
ls *r*
Produktion:
cider.sh vinäger.php
sudo rm *p*
Ovannämnda kommando kommer att radera alla filer som innehåller bokstaven "p" i dess namn. Du kan verifiera ändringen med kommandot ls enligt följande:
ls
Produktion:
catfish.sh cat.txt cider.sh juice.sh citron.txt
Här är några exempel på "?" metatecken för mönstermatchning:
är en?*
Produktion:
apple.txt
ls c? t*
Produktion:
catfish.sh cat.txt
Det sista kommandot matchar alla filer som börjar med c och har t som den tredje bokstaven (cat.txt, catfish.sh, etc.).
Använd nu [av]* alternativet med kommandot ls för att lista alla filer som börjar med någon av dem a eller v, som följer:
ls [av]*
Produktion:
apple.txt vinäger.sh
Du kan ändra kommandot ovan för att bara lista filer som slutar med bokstaven t:
ls [ac]*[t]
Produktion:
apple.txt catfish.txt cat.txt
På samma sätt kan du använda bindestreck separerade bokstäver för att definiera intervall och lista filer enligt följande:
ls [a-j]*
Produktion:
apple.txt catfish.sh cat.txt cider.sh juice.sh
För en bättre förståelse av omdirigering i Bash har varje process i Linux filbeskrivningar, känd som standardinmatning (stdin/0), standardutgång (stdout/1), och standardfel (stderr/2). De bestämmer ursprunget för kommandoinmatningen och bestämmer vart utdata och felmeddelanden ska skickas.
Omdirigeringsmetartecknen hjälper dig att ändra dessa åtgärder genom att omdirigera innehållets I/O-flöde. Generellt läser Linux-skalet kommandoinmatningen från tangentbordet och skriver utdata till skärmen. Ingångsomdirigeringen tillåter kommandot att läsa innehållet från en fil istället för ett tangentbord, medan omdirigering av utdata sparar kommandoutdata till en fil.
Med andra ord låter Linux-filomdirigeringsmetatecken dig omdirigera innehållet till (>) och från (<) filerna. De tre primära metakaraktärerna för omdirigering är:
- <: Dirigerar filinnehållet till kommandot. Till exempel kommandoutgången för mindre .bashrc är det samma som mindre < .bashrc.
- >: Dirigerar kommandoutgången till filen. Kommandot ls /etc > lists.txt sparar utdata till lists.txt-filen.
- >>: Lägger till kommandoutgången till filens innehåll.
wc står för ordantal och du kan använda det för att visa skillnaden mellan filen före och efter att den lagts till i utdata.
Relaterad: Förstå Standard I/O på Linux
Med tecknet för expansion av klammerparenteser kan du expandera tecknen över kataloger, filnamn eller andra kommandoradsargument. Du kan till exempel skapa en ny katalog spänna inuti /tmp mapp och skapa en uppsättning filer med pekkommandot enligt följande:
sudo mkdir /tmp/brace; cd /tmp/brace
beröringstest{1,2,3,4,5}
Nu kan du kontrollera om touch skapade filerna eller inte med kommandot ls.
ls
Produktion:
test1 test2 test3 test4 test5
Du kan ange flera listor för att generera filnamn baserat på kombinationerna av elementen i listan. Till exempel:
tryck på {äpple, cider, vinäger}.{frukt, flytande, sur}
tryck på {a, b, c}.{1,2,3}
Det sista kommandot skapar följande filer i den aktuella katalogen:
Det första kommandot använder två uppsättningar klammerparenteser för att associera filnamnen i varje uppsättning med den andra. Du kan också skriva det sista kommandot som tryck på {a..c}.{1..3} för att ange intervallet mellan a och c och 1 och 3.
Förutom att skapa filer kan du även använda klammerexpansion för att ta bort eller kopiera filer till andra platser.
Här är en tabell över några måste kända metatecken för kommandoanslutning och expansion med deras namn, beskrivning och exempel att öva på:
namn | Beskrivning | Exempel |
---|---|---|
Rör (|) | Ansluter kommandoutgång som en ingång till det andra kommandot. | cat /etc/passwd | grep root |
Semikolon (;) | Tillåter exekvering av sekventiella kommandon, en efter en. | cd /etc; ls -la; chmod +x /tmp/script.php |
Ampersand (&) | Kör processer eller kommandon i bakgrunden. | hitta / -perm -u=s -typ f & |
Dollar ($) | Expanderar det aritmetiska uttrycket och skickar det till skalet | echo "totala filerna i denna katalog är: $(ls | wc -l)" |
Null omdirigering (2>) | Dirigerar standardfelmeddelanden till filen /dev/null | ditt_kommando 2>/dev/null |
Circumflex (^) | Matchar alla mönster som börjar med uttrycket följt av ^ | cd /etc/ssh; ls | grep ^s |
Linux-metatecken är också kända som jokertecken som ger kommandona speciell betydelse och kontrollerar deras beteende. Metatecken optimerar en användares arbetsprestanda i en produktiv miljö samtidigt som man arbetar runt filer/kataloger och ansluter/expanderar Linux-skalkommandona.
Dessutom är metatecken också byggstenarna i reguljära uttryck. Att lära sig om metatecken och deras användning är också en viktig färdighet att ha om du vill bli en pro-Linux-användare.
Vill du påskynda ditt Python-arbetsflöde med några enkla kommandon? Reguljära uttryck är din vän.
Läs Nästa
- Linux
- Linux Elementary
- Linux Bash Shell
Rumaisa är frilansskribent på MUO. Hon har burit många hattar, från en matematiker till en informationssäkerhetsentusiast, och arbetar nu som SOC-analytiker. Hennes intressen inkluderar att läsa och skriva om ny teknik, Linux-distributioner och allt kring informationssäkerhet.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera