Hoe te gebruiken Brace Expansion in Linux Bash Shell

May 12, 2025
Linux
Fatmawati achmad zaenuri / shutterstock

Brace-expansie is een nuttige techniek om lijsten van snaren te genereren die kunnen worden gebruikt in scripts en aliassen en op de opdrachtregel Linux. Bespaar tijd en vermijd fouten door minder te typen.

Brace expansie

Voor de bash shell voert een commando uit In een terminalvenster of een regel in een script controleert het of het elke vervangingen op de opdracht moet uitvoeren. Variabele namen worden vervangen door hun waarden, aliassen worden vervangen door de opdrachten die ze stengens voor zijn, en elke expansie wordt uitgevoerd. Brace-uitbreiding is een vorm van expansie die door bash wordt ondersteund.

Brace-expansie is verkrijgbaar in moderne schelpen, maar het missen misschien in sommige oude schalen. Als u brace-expansie in scripts gaat gebruiken, zorg er dan voor dat u een schaal aanneemt die brace-expansie ondersteunt, zoals bash:

We gebruiken bash voor onze voorbeelden.

Het genereren van lijsten van snaren lijkt misschien meer een nieuwigheid dan een voordeel, maar het biedt wel enige functionaliteit die tijd en toetsaanslagen kan besparen. Vaak kan het een eenvoudige en elegante oplossing bieden voor een probleem of vereiste.

Eenvoudige expansies

Een brace-expansie is opgenomen tussen een paar beugels "{}". Het kan een lijst zijn van door komma's gescheiden items of een bereikspecificator. Spaties zijn niet toegestaan ​​in de beugels, tenzij u de tekenreeks in aanhalingstekens hebt ingepakt " " . "

Voor een door komma's gescheiden lijst neemt het expansieproces elk element op beurt en geeft deze door op de oproepopdracht. In dit voorbeeld is het echo dat gewoon drukt ze af in het terminalvenster . Merk op dat de komma's worden genegeerd.

 Echo {One, Two, Three, Four} 

Een lijst kan woorden of cijfers zijn.

 echo {1,2,3,4} 

De volgorde van de lijstelementen is volledig willekeurig.

 Echo (4,23,1) 

Een uitbreidingsbereik heeft een begin en een eindkarakter verbonden met twee perioden " .. "Zonder enige whitespace. Alle elementen van ontbrekende lijst worden automatisch door de uitbreiding verstrekt, zodat het volledige bereik van startkarakter tot eindkarakter is gemaakt.

Dit drukt de cijfers van 1 tot 10 af.

 ECHO {1..10} 

De nummering is willekeurig. Het hoeft niet bij één te beginnen.

 ECHO {3..12} 

Rekenes kunnen worden opgegeven, zodat ze achteruit zijn. Dit genereert een lijst van vijf naar beneden.

 ECHO {5..1} 

Ranges kunnen negatieve getallen omvatten.

 echo {4 ..- 4} 

Zoals we eerder hebben opgemerkt, heeft een bereik een begin en een einde karakter . Het hoeft geen nummer te zijn. Het kan een brief zijn.

 echo {q..v} 

De letters kunnen ook achteruit lopen.

 echo {f..a} 

Brace-expansie met lussen gebruiken

U kunt brace-expansie gebruiken met reeksen in loops in scripts.

 Voor i in {3..7}
doen
   echo $ i
gedaan 

Brace Expansion Ranges kunt u tekens gebruiken als de lusvariabele.

 Voor i in {m..q}
doen
   echo $ i
gedaan 

Loops worden meestal gebruikt in scripts, maar er is niets om te voorkomen dat je ze in de opdrachtregel typt om te zien wat er zal gebeuren.

 Voor I in {3..7}; DO ECHO $ ​​I; gedaan 

 Voor I in {m..q}; DO ECHO $ ​​I; gedaan 

Samenvoegen en nesten

Twee aangrenzende expansies handelen niet onafhankelijk van de ander. Ze interopereren. Elk element in de eerste expansie wordt door elk element in de tweede uitbreiding gehandeld.

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

Uitbreidingen kunnen ook worden genest. Een geneste expansie zal op het element handelen dat onmiddellijk voorafgaat aan het.

 ECHO {PART-1, DEEL-2 {A, B, C, D}, PART-3} 

U kunt ook expansies nest door een komma-gescheiden lijst met bereikuitbreidingen te maken.

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

Preambule en PostScript

U kunt tekst voor en na een brace-expansie plaatsen om die tekst in de resultaten van de uitbreiding te hebben. Tekst voor een expansie wordt de preambule genoemd, terwijl de tekst die achter een brace-uitbreiding wordt geplaatst het PostScript wordt genoemd.

Deze opdracht gebruikt een preambule.

 ECHO HOOFDSTUK {1..3} 

Dit voorbeeld gebruikt een PostScript:

 echo {inhoud, papier, bilbiografie} .md 

En deze opdracht gebruikt beide.

 Echo Hoofdstuk- {1..4} .md 

Breiding van bestandsnamen en -mappen

Zoals je waarschijnlijk al hebt geraden, is een van de belangrijkste toepassingen van brace-uitbreidingen om bestands- en directory-namen te maken die aan andere opdrachten kunnen worden doorgegeven. We gebruiken echo Als een handige manier om precies te zien wat er gebeurt wanneer een uitbreiding wordt geactiveerd. U kunt een opdracht vervangen die bestandsnamen of mapnamen als invoer neemt en brace-expansie ermee gebruikt.

Te snel Maak een aantal bestanden , gebruik maken van aanraken :

 Tik op Bestand- {1..4} .txt 
 LS * .txt 

Als u veel bestanden hebt met dezelfde basisnaam, maar verschillende bestandsextensies en wilt u een bewerking uitvoeren op een subset van hen, kunnen brace-uitbreidingen helpen. Hier comprimeren we een subset van bestanden met "Programma" als Basename in een ZIP-bestand met de naam "Source-code.zip".

Ontwikkelingsdirectory's bevatten veel bestanden die dezelfde Basename hebben als uw hoofdprogramma. Meestal wilt u geen back-up maken van bestanden zoals ".o" -objecten. Dit is een nette manier om alleen de bestandssoorten op te nemen.

 ZIP-broncodeprogramma {.c, .h, .css} 

Deze opdracht maakt een kopie van een bestand en voegt u toe ".bak" aan, waardoor een back-upkopie van het oorspronkelijke bestand is. Een interessant punt om op te merken is dat de brace-expansie een komma-gescheiden lijst bevat, maar het eerste element is leeg. Als we de komma niet hadden opgenomen, zou de uitbreiding niet hebben plaatsgevonden.

 CP BRACE / NIEUW / PROG-1.C {,. BAK} 
 LS BRACE / NIEUW / PROG-1.C.Bak 

Om een ​​actie uit te voeren op twee bestanden in verschillende mappen, kunnen we een brace-expansie in het pad naar de bestanden gebruiken.

In dit voorbeeld bevat de map "Brace" twee subdirectory's, een "nieuw" genoemd en een "oud" genoemd. Ze bevatten verschillende versies van dezelfde set broncodebestanden. We gebruiken de diff programma om de verschillen tussen de twee versies van "PROG-1.C" te zien ".

 Diff Brace / {NIEUW, OUD} /PROG-1.C 

Als u een standaard skelet van mappen hebt die u aan het begin van een project moet maken, kunt u ze snel maken met behulp van brace-expansie. De Mkdir -P (ouder) optie Creëert eventuele ontbrekende oudermappen Wanneer een kindergids is gemaakt.

 MKDIR -P {bron, build, man, help {/ pagina's, / yelp, / afbeeldingen}} 
 Boom 

Je kunt brace-expansie gebruiken met wauwen tot Download meerdere bestanden .

In deze opdracht gaan we bestanden downloaden van twee mappen, genaamd "Test1" en "Test2." Elke map bevat twee bestanden met de naam "Picture1" en "Picture2."

 Wget https://www.url-of-your-choice.com/test prijzigingen
  

De lijst met de bestanden toont u de bestanden die zijn opgehaald en hoe wauwen Hernoem de bestanden om te voorkomen dat naambotsingen met bestaande bestanden worden gebruikt.

 LS Picture *. * 

Omarmen de brace

Het lijkt erop dat brace-expansie een ander is Linux's best bewaarde geheimen . Veel mensen vertellen me dat ze nog nooit van brace-expansie hebben gehoord, terwijl anderen me informeren dat het een van hun favoriete opdrachtregeltrucs is.

Geef het eens en het kan gewoon zijn weg vinden in je set opdrachtregel-naar-trucs.


Linux - Meest populaire artikelen

Het beste Linux distributies Zonder systemd

Linux Feb 24, 2025

Bmj / shutterstock.com Wanneer de dominante Linux-distributies zijn goedgekeurd systeem , Overschrijdt gevorkte distributies en startte nieuwe proje..


Wat is nieuw in GNOME 40?

Linux Jul 23, 2025

GNOME Foundation GNOME 40 heeft meer dan een nieuwe nummering. Samen met zijn nieuwe look komt er een nieuwe manier van werken. De oude verticale metaforen z..


Wat is nieuw in Linux Kernel 5.14

Linux Sep 9, 2025

Sean Locke Photography / Shutterstock Aangezien Linux 30 jaar oud is, is Kernel 5.14 vrijgegeven. Het bevat het gebruikelijke brede aanbod van interne onder-de..


Wat zijn de nadelen van het overschakelen naar Linux?

Linux Oct 27, 2025

Larry Ewing en de Gimp Linux Evangelisten (zoals ik) zijn snel op de vele voordelen van het overstappen van Windows en MacOS. Maar geen besturingssysteem is ..


Ubuntu 21,10 uitgerust met een aangepaste GNOME bureaublad 40

Linux Oct 14, 2025

Ubuntu Als je een Ubuntu-gebruiker bent, of iemand die erover nadenkt om het eens te proberen, is vandaag een goede dag. Canonical heeft Ubuntu 21.10 officieel vrijgegeve..


Hoe de PID van een Linux -proces te vinden met PIDOF of PGREP

Linux Nov 15, 2024

Werken met een Linux -proces betekent vaak het kennen van de proces -ID of PID. Het is een uniek nummer dat wordt gegeven aan elk stukje lopende software. Hier zijn twee manieren om erachter te..


7 fouten nieuwe Linux -gebruikers maken (en hoe ze ze te vermijden)

Linux Nov 11, 2024

Het leren van Linux kan een frustrerende ervaring zijn waarbij alles wat klein is als een gevecht. Het vermijden van deze veel voorkomende fouten maakt uw introductie en acceptatie van Linux ve..


Hoe u uw openbare IP kunt krijgen in een Linux Bash -script

Linux Nov 9, 2024

U hebt uw externe IP -adres nodig als u op afstand verbinding wilt maken met uw computer. Handmatig vinden is eenvoudig, maar hier is hoe u uw IT kunt vinden vanuit een Linux -script. Int..


Categorieën