web analytics

Accolades { } gebruiken in Linux

Print Friendly, PDF & Email

Bepaalde tekens hebben in Linux een heel speciale toepassing. Zo kunnen de accolades { }  (curly braces of flower braces genoemd in het Engels) je veel tijd doen besparen bij het aanmaken van meerdere bestanden/folders of voor het aanmaken van reeksen, zowel op de commandolijn als in BASH-scripts.

Aan de hand van enkele voorbeelden gaan we van simpele commando’s naar meer complexe toepassingen van de { } in de commandolijn.

Voorbeeld 1:

Maak een bestand aan met de naam abc.txt.

We maken gebruik van het commando touch dat een leeg bestand aanmaakt in de huidige map.

$ touch abc.txt

Voorbeeld 2:

Maak meerdere bestanden abc, cde, efg, hij, klm aan

$ touch abc cde efg hij klm

Voorbeeld 3:

Hoe de bestanden 1 2 3 … tot en met 20 aanmaken, dus meerdere bestanden aanmaken met één commando. Het is een beetje veel tikwerk, maar het kan.

$ touch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Het kan veel korter dankzij gebruik te maken van de accolade-uitbreiding. In plaats van bovenstaand commando in te geven, doe het volgende:

$ touch {1..20}

De Shell zal proberen de inhoud van de accolades uit te breiden en de getallen 1 tot 20 aanmaken. Gekoppeld met het commando touch worden er dus 20 bestanden ineens aangemaakt.

Voorbeeld 4:

Hoe de bestanden 1.txt, 2.txt, 3.txt tot 1000.txt aanmaken. Dat doe je door de suffix .txt na de laatste accolade te plaatsen.

$ touch {1..1000}.txt

Voorbeeld 5:

Hoe de bestanden a1, a2, a3 … tot a1000 aanmaken.

$ touch a{1..1000}

Voorbeeld 6:

Hoe getallen genereren? Dat kunnen we doen door de accolades te combineren met het echo commando. Een alternatieve manier is het seq commando.

$ echo {1..10}

Voorbeeld 7:

Een reeks van letters in het alfabet genereren.

$ touch {a..z}

Voorbeeld 8:

Maak bestanden A tot Z aan

$ touch {A..Z}

Noot: Het generen van alfabetische reeksen gebeurd op basis van de ASCII waardes.

Example 9:

Hoe de bestanden 1 tot en met 1000000 aanmaken in één keer door gebruik te maken van een vermenigvuldigingsmatrix van getallen. Dat kunnen we doen door twee reeksen te vermenigvuldigen.

$ touch {0..1000}{0..1000}

Voorbeeld 10:

Bestanden aanmaken die een veelvoud van 2 zijn.

$ touch {1..100..2}

Hier worden de bestanden 1, 3, 5, 7, 9, 11 enz aangemaakt.

$ touch {0..100..2}

Hier worden de bestanden 0, 2, 4, 6, 8, 10 enz aangemaakt.

Noot: Intervallen werken enkel met BASH version 4.0 en hoger. Gebruik het commando

$ bash -version

om de versie van je huidige BASH te vinden.

Voorbeeld 11:

Bestanden als veelvoud van 7 aanmaken.

touch {1..100..7}

Praktisch gebruik van de accolades

  1. In een bash ‘for’ loop.
  2. Aanmaken van reeksen van nummers
  3. Naast bestanden aanmaken kun je op analoge manier mappen aanmaken. Maak gebruik van de -p optie als je folders wil aanmaken in subfolders

Voorbeeld 12:

Maak een folderstructuur aan voor het jaar 2016. Onder die topfolder wil ik 12 folders aanmaken, eentje voor iedere maand en per maand subfolders voor 30 dagen.

$ mkdir -p 2016/{1..12}/{1..30}

Deze opdracht maakt in één beweging de folder 2016 aan met daaronder folders 1 tot 12 en onder iedere folder dan nog eens 30 folders voor de dagen.

Voorbeeld 13:

Gebruik in een for loop.

for i in {1..10}
do
echo "Huidig getal is $i"
done

514 totaal aantal vertoningen, 4 aantal vertoningen vandaag

Beoordeling

1 Reactie

  1. josbruyn

    Knap, hier heb ik wat aan. Thx.

    Reageren

Geef een reactie

%d bloggers liken dit: