Brace expansion
Wanneer je een module aanmaakt in Drupal (zonder gebruik te maken van de Drupal console) heb je altijd een paar bestanden nodig. Je kunt dit op meerdere manieren aanmaken, maar de 'Brace expansion' is wel mijn favoriet.
Brace expansion
Brace expansion wordt gebruikt om willekeurige strings te genereren. Gespecificeerde strings worden gebruikt om alle mogelijke combinaties met optionele voor- of achtervoegsels te maken. Doorgaans wordt het gebruikt om argumenten voor een opdracht te genereren.
Een voorbeeld:
touch mymodule.{module, install, info.yml}
zal mymodule.module, mymodule.install en mymodule.info.yml aanmaken.
Het kan ook worden gebruikt om ranges op te geven, bijvoorbeeld:
touch {1..10}.txt
geeft 1.txt, 2.txt, 3.txt, etc.
Met één of meerdere voorloopnullen zullen deze ook meegenomen worden in het genereren, dus:
touch {001..010}.txt
geeft 001.txt, 002.txt, 003.txt, etc.
In Bash 4.0 kun je ook increments geven:
{<start>..<end>..<incr>}
$ echo {1..10..2} 1 3 5 7 9 $ echo {10..1..2} 10 8 6 4 2
Je kunt ook combineren, zoals bijv:
$ echo {A..Z}{0..9} A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 G0 G1 G2 G3 G4 G5 G6 G7 G8 G9 H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 J0 J1 J2 J3 J4 J5 J6 J7 J8 J9 K0 K1 K2 K3 K4 K5 K6 K7 K8 K9 L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 M0 M1 M2 M3 M4 M5 M6 M7 M8 M9 N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 U0 U1 U2 U3 U4 U5 U6 U7 U8 U9 V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Z0 Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8 Z9
En hopla: 260 strings gemaakt zonder al te veel gedoe.
Voorbeelden en toepassingen
In dit voorbeeld wordt wget gebruikt om documentatie die over meerdere pagina's is verspreid te downloaden. wget ziet die accolades niet, maar zal 6 verschillende URLs krijgen om te downloaden.
wget http://docs.example.com/documentation/sliders_part{1..6}.html