Linux terminal gebruikers schrijven voor het automatiseren van taken scripts. Maar ook bij eenvoudige opdrachten kan je reeds automatiseren. Door gebruik te maken van accolades kan je een opdracht met één opdrachtregel namelijk verschillende keren uitvoeren. Vooral handig bij het manipuleren van een reeks bestanden en/of mappen.
Met de touch opdracht kan je lege bestanden aanmaken. De volgende opdracht maakt het bestand met de naam abc.txt aan:
dany@laptop:~> touch abc.txt
En het bewijs dat het bestand werd aangemaakt:
dany@laptop:~> ls -l abc.txt
-rw-r--r-- 1 dany users 0 14 jul 15:28 abc.txt
Een bestand verwijder je met de rm opdracht:
dany@laptop:~> rm abc.txt
Met de volgende opdracht maak je met één opdracht vijf bestanden aan met de namen abc cde efg hij en klm:
dany@laptop:~>touch abc cde efg hij klm
dany@laptop:~>ls -l abc cde efg hij klm
-rw-r--r-- 1 dany users 0 14 jul 15:31 abc -rw-r--r-- 1 dany users 0 14 jul 15:31 cde -rw-r--r-- 1 dany users 0 14 jul 15:31 efg -rw-r--r-- 1 dany users 0 14 jul 15:31 hij -rw-r--r-- 1 dany users 0 14 jul 15:31 klm
Deze pas aangemaakte bestanden verwijder je met:
dany@laptop:~> rm abc cde efg hij klm
Wil je 20 bestanden aanmaken met de namen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20, dan kan je de volgende opdracht gebruiken:
dany@laptop:~>touch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
dany@laptop:~>ls -l 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-rw-r--r-- 1 dany users 0 14 jul 15:36 1 -rw-r--r-- 1 dany users 0 14 jul 15:36 10 -rw-r--r-- 1 dany users 0 14 jul 15:36 11 -rw-r--r-- 1 dany users 0 14 jul 15:36 12 -rw-r--r-- 1 dany users 0 14 jul 15:36 13 -rw-r--r-- 1 dany users 0 14 jul 15:36 14 -rw-r--r-- 1 dany users 0 14 jul 15:36 15 -rw-r--r-- 1 dany users 0 14 jul 15:36 16 -rw-r--r-- 1 dany users 0 14 jul 15:36 17 -rw-r--r-- 1 dany users 0 14 jul 15:36 18 -rw-r--r-- 1 dany users 0 14 jul 15:36 19 -rw-r--r-- 1 dany users 0 14 jul 15:36 2 -rw-r--r-- 1 dany users 0 14 jul 15:36 20 -rw-r--r-- 1 dany users 0 14 jul 15:36 3 -rw-r--r-- 1 dany users 0 14 jul 15:36 4 -rw-r--r-- 1 dany users 0 14 jul 15:36 5 -rw-r--r-- 1 dany users 0 14 jul 15:36 6 -rw-r--r-- 1 dany users 0 14 jul 15:36 7 -rw-r--r-- 1 dany users 0 14 jul 15:36 8 -rw-r--r-- 1 dany users 0 14 jul 15:36 9
In plaats van alle aan te maken bestandsnamen op te sommen, kunnen we gebruik maken van een teller. Een teller plaats je tussen accolades. Onze vorige opdracht wordt dan:
dany@laptop:~> touch {1..20}
Wat tussen accolades staat wordt door uw shell-omgeving (bash) omgezet naar getallen van 1 tot en met 20. Op dezelfde manier wis je pas aangemaakte bestanden met:
dany@laptop:~> rm {1..20}
Om tekstbestanden aan te maken met namen van 1.txt tot 1000.txt gebruikt je de accolades voor de teller gevolgd door het achtervoegsel .txt:
dany@laptop:~> touch {1..1000}.txt
Op dezelfde manier werkt je met voorvoegsels of beiden tegelijk:
dany@laptop:~> touch a{1..1000}.txt
Beide bestandenreeksen verwijder je met:
dany@laptop:~> rm a{1..1000}.txt {1..1000}.txt
Met de echo opdracht kan je tekst in een bestand plaatsen. Met de volgende opdracht plaats 10 genummerde lege regels in een bestand:
dany@laptop:~>echo {1..10} > tellentottien.txt
dany@laptop:~>cat tellentottien.txt
1 2 3 4 5 6 7 8 9 10
De laatste opdracht toont ons de inhoud van het pas aangemaakte bestand. We verwijderen dit bestand met:
dany@laptop:~> rm tellentottien.txt
Alfabetische tellers zijn eveneens mogelijk. Het alfabet geef je weer met:
dany@laptop:~> echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
Met hoofdletters:
dany@laptop:~> echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Meerdere tellers kan je combineren:
dany@laptop:~> 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
Ook de stapgrootte van tellers kan je instellen, alle onpare getallen tussen 1 en 100 geef je weer met:
dany@laptop:~> echo {1..100..2}
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
Nog een praktisch voorbeeld. We maken mappen aan voor elke maand en elke dag van het jaar met:
dany@laptop:~> mkdir -p 2017/{1..12}/{1..30}
Deze map verwijderen we terug met:
dany@laptop:~> rm -r 2017
Niets belet ons om tellers ook in scripts te gebruiken. Het volgende script typ je in KWrite in:
#!/bin/bash for i in {1..10}; do echo "Huidig getal is $i" done
Eerst maak je script uitvoerbaar en daarna kan je het pas starten.
dany@laptop:~>chmod +x tellen.sh
dany@laptop:~>./tellen.sh
Huidig getal is 1 Huidig getal is 2 Huidig getal is 3 Huidig getal is 4 Huidig getal is 5 Huidig getal is 6 Huidig getal is 7 Huidig getal is 8 Huidig getal is 9 Huidig getal is 10