Hur man använder Brace Expansion i Linux Bash Shell

May 12, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock

Brace expansion är en användbar teknik för att generera listor med strängar som kan användas i skript och alias och Linux kommandorad. Spara tid och undvika misstag genom att skriva mindre.

Brace Expansion

Innan Bash skal exekverar ett kommando i ett terminalfönster eller en linje i ett skript, kontrollerar den om den behöver utföra några utbyten på kommandot. Variabelnamn ersättas med sina värden, alias ersättas med kommandon De är förkortning för, och eventuella expansionen utförs. Brace expansion är en form av expansions stöds av våldsamt slag.

Brace expansionen finns i moderna skal, men det kan saknas från några gamla skal. Om du ska använda stag expansion i manus, se till att du anropar ett skal som stöd brace expansion, till exempel Bash:

Vi kommer att använda Bash för våra exempel.

Generera listor över strängarna kan tyckas mer av en nyhet än en fördel, men det ger vissa funktioner som kan spara tid och tangenttryckningar. Ofta kan det ge en enkel och elegant lösning på ett problem eller krav.

enkla Expansioner

En brace expansionen innehålls mellan ett par hängslen ”{}”. Det kan vara en lista med kommaseparerade objekt eller en rad specifice. Spaces är inte tillåtna inne i hängslen om du inte har insvept strängen inom citationstecken ” " .

För en kommaseparerad lista, tar expansionsprocessen varje element i tur och skickar den till kommandot ringer. I detta exempel är det eko som helt enkelt skriver ut dem i terminalfönstret . Observera att kommatecken ignoreras.

 echo {en, två, tre, fyra} 

En lista kan vara ord eller siffror.

 echo {1,2,3,4} 

Ordningen på listelement är helt godtyckligt.

 eko (4,2,3,1) 

En utbyggnad serien har en början och ett slut karaktär i samband med två perioder” .. ”Utan blanksteg. Alla de saknade listelementen tillhandahålls automatiskt av expansionen, så att hela skalan från starttecknet till sluttecknet skapas.

Detta skriver ut siffrorna 1-10.

 echo {1..10} 

Numreringen är godtycklig. Det behöver inte börja på en.

 echo {3..12} 

Intervall kan anges så att de kör bakåt. Detta kommer att generera en lista från fem ner till en.

 echo {5..1} 

Intervall kan innehålla negativa tal.

 echo {4 ..- 4} 

Som vi tidigare påpekat, har en räckvidd en början och ett slut karaktär . Det behöver inte vara ett nummer. Det kan vara en bokstav.

 echo {q..v} 

Bokstäverna kan köra bakåt också.

 echo {f..a} 

Använda Brace Expansion med loopar

Du kan använda brace expansionen med intervall i loopar i skript.

 for i in {3..7}
do
   echo $ i
gjort 

Brace expansionsområden låter dig använda tecken som loopvariabeln.

 for i in {m..q}
do
   echo $ i
gjort 

Loops används vanligen i manus, men det finns inget som hindrar dig från att skriva in dem i kommandoraden för att se vad som händer.

 for i in {3..7}; gör echo $ i; gjort 

 for i in {m..q}; gör echo $ i; gjort 

Sammanfoga och Nesting

Två angränsande utökningar inte agera självständigt efter varandra. De samverka. Varje element i den första expansions påverkas av varje element i den andra expansions.

 echo {q..v} {1..3} 

Expansioner kan också kapslas. En kapslad expansionen kommer att agera på elementet som omedelbart föregår den.

 echo {del-1, del-2 {a, b, c, d}, del-3} 

Du kan också kapsla expansioner genom att skapa en kommaseparerad lista avstånds expansion.

 echo {{5..0}, {1..5}} 

Ingress och Postscript

Du kan placera text före och efter ett stag expansion har den text som ingår i resultatet av expansionen. Text sätta framför en expansion kallas ingressen, medan text placerad bakom ett stag expansionen kallas postscript.

Detta kommando använder en ingress.

 eko kapitel {1..3} 

Detta exempel använder en efterskrift:

 echo {innehåll, papper, bilbiography} .md 

Och det här kommandot använder båda.

 echo chapter- {1..4} .md 

Expanderande filnamn och kataloger

Som du har förmodligen gissat vid det här laget, är en av de viktigaste användningsområdena för stag expansioner för att skapa filnamn och katalog som kan skickas till andra kommandon. Vi har använt eko som ett bekvämt sätt att se exakt vad som händer när en expansion utlöses. Du kan ersätta alla kommando som tar filnamn eller katalognamn som indata och användning stag expansion med det.

För att snabbt skapa några filer , använda sig av Rör :

 beröring fil- {1..4} .txt 
 ls * .txt 

Om du har många filer med samma bas namn men olika filnamnstillägg och du vill utföra en operation på en delmängd av dem, kan stag expansioner hjälpa. Här, vi komprimera en delmängd av filer som har ”program” som basnamnet i en ZIP-fil som heter ”source-code.zip.”

Utvecklings kataloger innehåller massor av filer som kommer att ha samma basnamn som huvudprogrammet. Vanligtvis behöver du inte vill säkerhetskopiera eller distribuera filer som ”.o” objektfiler. Detta är ett snyggt sätt att endast omfatta filtyper av intresse.

 zip källkod programmet {.c, .h, .css} 

Detta kommando kommer att göra en kopia av en fil och append ”.bak” till det, att göra en säkerhetskopia av originalfilen. En intressant punkt att notera är att expansions brace innehåller en kommaseparerad lista, men det första elementet är tom. Om vi ​​inte hade inkluderat kommatecken skulle expansionen inte har ägt rum.

 cp stag / nytt / prog-1.c {,. Bak} 
 ls stag / ny / prog-1.c.bak 

För att utföra vissa åtgärder på två filer i olika kataloger, kan vi använda ett stag expansion i sökvägen till filerna.

I det här exemplet innehåller ”brace” katalogen två underkataloger, som kallas ”nya” och en som kallas ”gamla”. De innehåller olika versioner av samma uppsättning källkodsfiler. Vi använder diff programmet för att se skillnaderna mellan de två versionerna av ”prog-1.c.”

 diff stag / {nytt, gammalt} /prog-1.c 

Om du har en standard skelett av kataloger som du behöver för att skapa i början av ett projekt, kan du skapa dem snabbt med stag expansion. De mkdir -p (Moder) alternativet skapar saknade överordnade kataloger när ett barn katalog skapas.

 mkdir -p {källa, bygga, man, hjälp {/ sidor, / yelp, / bilder}} 
 träd 

Du kan använda brace expansion med wget till ladda ner flera filer .

I det här kommandot kommer vi att ladda ner filer från två kataloger, som kallas ”test1” och ”test2”. Varje katalog innehåller två filer som kallas ”picture1” och ”picture2.”

 wget https://www.URL-of-your-choice.com/test{1,2}/picture{001,002}.jpg

Notering filerna hjälper dig hitta de filer som hämtas och hur wget döper filer för att undvika namn krockar med befintliga filer.

 ls bild *. * 

Omfamna Brace

Det verkar som om brace expansion är en annan av Linux bäst bevarade hemligheter . Många säger att de aldrig har hört talas om brace expansion, medan andra informera mig att det är en av deras favorit kommandoraden tricks.

Ge det ett försök och det bara kan finna sin väg in i din uppsättning kommandoraden go-to trick.


Linux - Mest populära artiklar

Hur att dölja alla skrivbordsikoner på Mac

Linux Jun 23, 2025

Krisda / Shutterstock Är din Mac-skrivbord en röra? Vill du verkligen organisera allt? Oroa dig inte, du kan använda ett terminalkommando för att snabbt d�..


Hur uppdaterar Ubuntu Linux

Linux Aug 27, 2025

Tomeqs / Shutterstock.com Behöver du den senaste och bästa i Ubuntu-programvaran? Du behöver inte vara ett Linux Pro. Läs vidare för att upptäcka hur d..


Vilka är nackdelarna med att byta till Linux?

Linux Oct 27, 2025

Larry Ewing och Gimp Linux Evangelists (som jag själv) är snabba att påpeka de många fördelarna med att byta över från Windows och MacOS. Men inget op..


Vad är Pop! _OS?

Linux Oct 20, 2025

Om du har hört talas om Pop! _OS , Du kanske har sett människor som ofta hänvisar till det som det bästa Windows-alternativet eller den perfekta Linux-distributionen för ..


Vad är nytt i Fedora 35

Linux Nov 2, 2024

Fedora 35, röd hatt ? Ar fri Linux-distribution (Distribution), släpptes den 2 november 2021. Från en uppdaterad desktop erfarenhet bakom kulisserna tweaks, vi tar..


10 Grundläggande Linux Kommandon för nybörjare

Linux Oct 13, 2025

Bara komma igång på Linux? Att göra dig bekväm med kommandoraden är viktigt. Om du redan är bekant med Command Line Utilities, hittar du att Linux och Mac delar mycket gemensamt, men..


Hur man integrerar applikationer och skript på ett Linux -skrivbord

Linux Oct 10, 2025

På Linux kommer en applikation utan skrivbordsfil inte att integreras med din skrivbordsmiljö. De flesta applikationer tillhandahåller en, men ibland måste du skapa en. Det är ganska enkel..


Hur man får din offentliga IP i ett Linux Bash -skript

Linux Nov 9, 2024

Du behöver din externa IP -adress om du vill ansluta till din dator. Att hitta det manuellt är enkelt, men så här hittar du din det från ett Linux -skript. Interna och externa IP -ad..


Kategorier