File: commands.xml

package info (click to toggle)
doc-linux-nl 20050324-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 15,900 kB
  • ctags: 105
  • sloc: xml: 37,932; makefile: 313; perl: 193; sh: 120; ansic: 12; csh: 9
file content (702 lines) | stat: -rw-r--r-- 29,973 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
<chapter id="commands-chapter"><title>Krachtige kleine programma's</title>

<sect1 id="commands-unixpower"><title>De kracht van &unix;</title>
<para>
De kracht van &unix; is verborgen in kleine opdrachten die niet nuttig lijken
wanneer ze op zichzelf worden gebruikt, maar wanneer gecombineerd met andere
opdrachten (direct of indirect) een systeem produceren dat veel krachtiger
en flexibeler is dan de meeste andere besturingssystemen.
De opdrachten waar ik het in dit hoofdstuk over ga hebben zijn onder andere
<command>sort</command>, <command>grep</command>, <command>more</command>, <command>cat</command>, <command>wc</command>, <command>spell</command>,
<command>diff</command>, <command>head</command>, en <command>tail</command>. 
Helaas is het op het moment niet geheel intu&iuml;tief wat deze namen betekenen.
</para>

<para>
Laten we deze utility's afzonderlijk behandelen en dan zal ik een aantal
voorbeelden geven hoe ze gecombineerd te gebruiken.<footnote><para>De beknopte 
samenvattingen van opdrachten in dit hoofstuk zijn niet zo uitgebreid.
Kijk alsjeblieft in de manpagina van de opdracht als je iedere optie wilt
kennen.</para></footnote>
</para>
</sect1>

<sect1 id="commands-editingfiles"><title>Bewerkingen op bestanden</title>
<para>
In aanvulling op de opdrachten zoals <command>cd</command>, <command>mv</command>, en <command>rm</command> die je
in <xref linkend="shell-chapter"/> leerde, zijn er nog andere opdrachten die
slechts bewerkingen op bestanden, maar niet op de inhoud van die bestanden
uitvoeren. Dit zijn onder andere <command>touch</command>, <command>chmod</command>, <command>du</command>, en 
<command>df</command>. Bij al deze bestanden doet het er niet toe wat er
<emphasis>in</emphasis> het bestand staat. Ze wijzigen alleen wat van hetgeen
&unix; zich kan herinneren van het bestand.
</para>

<para>
Deze opdrachten manipuleren onder andere:
<itemizedlist>
<listitem><para>
 De datumstempel
<indexterm><primary>datumstempel</primary></indexterm>. Aan elk bestand 
zijn drie datums verbonden.<footnote><para>Oudere bestandssystemen in Linux bewaarden
slechts &eacute;&eacute;n datum, aangezien ze van Minix waren afgeleid. Heb je
&eacute;&eacute;n van deze bestandssystemen, dan zal een deel van de informatie
gewoon niet beschikbaar zijn, de werking is voor het overgrote deel 
hetzelfde.</para></footnote>
De drie datums zijn de aanmaaktijd (wanneer het bestand werd aangemaakt), de
laatste modificatiedatum (wanneer het bestand voor het laatst werd gewijzigd),
en de laatste toegangstijd (wanneer het bestand voor het laatst werd ingelezen).
</para></listitem>
<listitem><para>
 De eigenaar. Ieder bestand onder &unix; behoort toe aan een gebruiker.
</para></listitem>
<listitem><para>
 De groep. Ieder bestand behoort ook toe aan een groep gebruikers.
De meest gebruikelijke groep voor gebruikersbestanden wordt 
<literal>users</literal>
genoemd, welke gewoonlijk wordt gedeeld door alle gebruikersaccounts op 
het systeem.
</para></listitem>
<listitem><para>
 De permissies
<indexterm><primary>permissies</primary></indexterm>.
Aan ieder bestand zijn permissies
toegekend (soms ook wel "privileges" genoemd) waarmee aan &unix; wordt 
aangegeven wie dat bestand mag benaderen, wijzigen of in het geval van 
programma's, mag uitvoeren. Deze permissies van de eigenaar, de groep en
alle andere gebruikers kunnen ieder apart worden aan- of uitgezet.
</para></listitem>
</itemizedlist>

<cmdsynopsis>
<command>touch</command>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>touch</primary></indexterm>
Met <command>touch</command> zullen de datumstempels van de bestanden die 
zijn opgegeven op de opdrachtregel worden gewijzigd in de huidige tijd. 
Als een bestand niet voorkomt, zal <command>touch</command> het aanmaken. 
Het is ook mogelijk de tijd op te geven waarop <command>touch</command> de 
bestanden in zal stellen. Raadpleeg de manpagina van <command>touch</command>.

<cmdsynopsis>
<command>chmod</command>
<arg>-Rfv</arg> 
<arg><replaceable>modus</replaceable></arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>chmod</primary></indexterm>
<indexterm><primary>bestand</primary><secondary>permissies</secondary></indexterm> De opdracht die wordt gebruik om de permissies
van een bestand te wijzigen wordt <command>chmod</command> genoemd, 
als afkorting van <emphasis>ch</emphasis>ange 
<emphasis>mod</emphasis>e (wijzig modus).
Laten we voor ik er op inga hoe de opdracht toe te passen is, bespreken
welke permissies er in &unix; zijn. Met ieder bestand is een groep permissies
geassocieerd. Deze permissies vertellen &unix; of het bestand kan worden
ingelezen, beschreven, of uitgevoerd als het om een programma gaat.
(In de volgende paar paragrafen, zal ik het over gebruikers hebben die
iets doen op het systeem. Alle programma's die een gebruiker uitvoert,
kunnen hetzelfde doen als een gebruiker.
Het kan een beveiligingsprobleem zijn als je niet weet
wat een bepaald programma doet.)
</para>

<para>
&unix; herkent drie verschillende typen mensen: als eerste, de eigenaar van
het bestand (en de persoon die <command>chmod</command> op dat bestand mag toepassen).
Ten tweede, de "groep". De groep van de meeste van je bestanden
zou heel goed "users" kunnen zijn, in de betekenis van gewone gebruikers van
het systeem. (Gebruik <command>ls -l bestand</command>.) om achter de groep
van een bepaald bestand te komen. Dan zijn er nog alle anderen, die geen
eigenaar en geen deelnemer van een groep zijn, toepasselijk "other"
(anderen) genoemd.
</para>

<para>
Dus een bestand kan lees- en schrijfpermissies hebben voor de eigenaar,
leespermisies voor de groep en geen permissies voor alle anderen.
Of om wat voor reden dan ook, een bestand kan schrijf-/leespermissies
hebben voor de groep en anderen, maar <emphasis>geen</emphasis> 
permissies voor de eigenaar!
</para>

<para>
Laten we met behulp van <command>chmod</command> eens proberen een paar 
permissies te wijzigen. Maak als eerste een nieuw bestand aan
met behulp van <command>cat</command>, <command>emacs</command>, of enig ander programma. Standaard
kun je dit bestand lezen en beschrijven. (De permissies gegeven aan andere
mensen zullen afhankelijk van hoe het systeem en je account zijn ingesteld
vari&euml;ren.) Verzeker je ervan dat je het bestand met <command>cat</command>
kunt lezen. Laten we nu je leesprivilege afnemen door gebruik te maken
van de opdracht <command>chmod u-r bestandsnaam</command>. 
(De parameter <parameter>u-r</parameter> komt neer op "gebruiker min lezen".)
Als je nu het bestand probeert te lezen, krijg je een
<errorname>Permission denied</errorname> foutmelding! Voeg de leesprivileges weer toe met
behulp van <command>chmod u+r bestandsnaam</command>.
<indexterm><primary>bestand</primary><secondary>privileges</secondary>
<see>bestand, permissies</see></indexterm>
<indexterm><primary>beveiliging</primary><see>bestand, permissies</see>
</indexterm>
</para>

<para>
Directorypermissies
<indexterm><primary>directory</primary><secondary>permissies</secondary></indexterm> gebruiken dezelfde drie
idee&euml;n: lezen, schrijven, en uitvoeren, maar fungeren net iets anders. De
leesprivilege staat de gebruiker (of groep of anderen) toe de directory
te lezen. Het weergeven van de namen van bestanden. De schrijfpermissie
staat de gebruiker (of groep of anderen) toe bestanden toe te voegen of te
verwijderen. De uitvoerpermissie staat de gebruiker toe de bestanden in
de directory of enige subdirectory's te benaderen.
(Als een gebruiker geen uitvoerpermissies heeft voor een directory,
kan die gebruiker zelfs <command>cd</command> er niet op uitvoeren!).
</para>

<para>
Vervang met behulp van <command>chmod</command>  de 
<literal>modus</literal> met datgene waarop de
bewerking moet worden toegepast, of <emphasis>u</emphasis>ser (gebruiker), 
<emphasis>g</emphasis>roup (groep), <emphasis>o</emphasis>ther (anderen), 
of <emphasis>a</emphasis>ll (allen), en wat
daarmee te doen. (Dat wil zeggen, gebruik een plusteken om het toevoegen van
een privilege aan te geven of een minteken om aan te geven er &eacute;&eacute;n
weg te nemen. Of een is-gelijk-teken waarmee de exacte permissies zullen worden
aangegeven.) De mogelijke toe te voegen permissies zijn
<emphasis>r</emphasis>ead (lezen), <emphasis>w</emphasis>rite (schrijven), 
en <emphasis>e</emphasis>xecute (uitvoeren).
</para>

<para>
De vlag <option>R</option> van <command>chmod</command> zal de permissies van een directory
en alle bestanden in die directory en alle subdirectory's, neerwaarts
de lijn (in alle subdirectory's) wijzigen.
(De `R' staat voor recursief.) De <option>f</option> vlag dwingt
<command>chmod</command> te trachten permissies te wijzigen, zelfs als 
de gebruiker niet de eigenaar is van het bestand. (Als aan 
<command>chmod</command> de <option>f</option> vlag
wordt opgegeven, zal het geen foutmelding weergeven wanneer het er niet
in slaagt de permissies van een bestand te wijzigen).
De vlag <option>v</option> maakt <command>chmod</command> verbose (breedsprakig), het zal 
rapporteren wat het aan het doen is.
</para>
</sect1>

<sect1 id="commands-systemstatistics"><title>Systeemstatistieken</title>
<para>
Opdrachten in deze sectie zullen statistieken over het besturingssysteem
of een deel van het besturingssysteem laten zien.
<indexterm><primary>du</primary></indexterm>

<cmdsynopsis>
<command>du</command> 
<arg>-abs</arg>
<arg><replaceable>pad1 pad2 ... padN</replaceable></arg>
</cmdsynopsis>

<command>du</command> staat voor <emphasis>d</emphasis>isk
<emphasis>u</emphasis>sage (diskverbruik). 
Het zal de hoeveelheid diskruimte in een gegeven directory 
<emphasis>en alle subdirectory's</emphasis> tellen die het op de disk in beslag neemt.
<command>du</command> op zichzelf zal een lijst retourneren waarin
staat vermeld hoeveel ruimte elke subdirectory van de huidige directory
in beslag neemt, en geheel onderaan, hoeveel ruimte de huidige directory
(plus alle voorheen getelde subdirectory's) gebruiken.
Als je &eacute;&eacute;n of twee parameters opgeeft, zal het de hoeveelheid
gebruikte ruimte die door die bestanden of directory's worden gebruikt
tellen in plaats van van de huidige directory.
</para>

<para>
De <option>a</option> vlag toont een telling van bestanden, als ook van 
directory's. De optie <option>b</option> zal in plaats van kilobytes 
(1024 tekens) het totaal in bytes afbeelden. Een byte is het equivalente van
een letter in een tekstdocument. En de vlag <option>s</option> toont slechts
de op de opdrachtregel opgegeven directory's en <emphasis>niet</emphasis> de
subdirectory's.

<cmdsynopsis>
<command>df</command>
</cmdsynopsis>

<indexterm><primary>df</primary></indexterm>
<command>df</command> is een afkorting van "disk filling" (diskvulling): 
het geeft een samenvatting van de hoeveelheid in gebruik zijnde diskruimte.
Voor elk bestandssysteem (denk eraan, verschillende bestandssystemen 
bevinden zich op verschillende stations of partities) toont het de 
hoeveelheid diskruimte, de gebruikte hoeveelheid, de beschikbare hoeveelheid
en de totale capaciteit van het bestandssysteem dat wordt gebruikt.
</para>

<para>
Iets vreemds wat je zou kunnen tegenkomen is dat het mogelijk is
over de 100&percnt; van de capaciteit te gaan, of dat de gebruikte plus
beschikbare capaciteit niet gelijk is aan het totaal. Dit komt
doordat &unix; op elk bestandssysteem wat ruimte reserveert voor 
<literal>root</literal>. Op die manier zal het systeem nog steeds wat
ruimte hebben om in te kunnen blijven werken als een gebruiker
per ongeluk de disk opvult.
</para>

<para>
Voor de meeste mensen heeft <command>df</command> geen bruikbare opties.

<cmdsynopsis>
  <command>uptime</command>
</cmdsynopsis>
<indexterm><primary>uptime</primary></indexterm>

Het programma <command>uptime</command> doet exact wat men er van 
zou verwachten. Het
drukt de hoeveelheid tijd dat het systeem "in de lucht" is af, d.w.z.
de hoeveelheid tijd vanaf de laatste &unix; boot.
</para>

<para>
<command>uptime</command> geeft ook de huidige tijd en het gemiddelde van de 
systeembelasting.<indexterm><primary>gemiddelde belasting</primary></indexterm>
De gemiddelde belasting is het gemiddelde aantal
taken wachtend om uitgevoerd te worden in een bepaalde hoeveelheid tijd.
<command>uptime</command> laat de gemiddelde belasting van de laatste minuut, 
vijf minuten en tien minuten zien. Een gemiddelde belasting vrijwel gelijk 
aan nul geeft aan dat het systeem relatief inactief is. Een gemiddelde 
belasting vrijwel gelijk aan &eacute;&eacute;n geeft aan dat het systeem bijna 
volledig wordt benut, maar nergens teveel. Hoge gemiddelde
belastingen zijn het resultaat van de gelijktijdige uitvoering van
verscheidene programma's.
</para>

<para>
Verbazingwekend genoeg is <command>uptime</command> &eacute;&eacute;n 
van de weinige &unix;-programma's <emphasis>zonder</emphasis> opties!

<cmdsynopsis>
  <command>who</command>
</cmdsynopsis>
<indexterm><primary>who</primary></indexterm>

<command>who</command> toont de huidige gebruikers op het systeem en 
wanneer zij zijn ingelogd. Als de parameters <literal>am i</literal>
(als in: <command>who am i</command>) worden opgegeven, toont het de 
huidige gebruiker.

<cmdsynopsis>
  <command>w</command> 
<arg>-f</arg>
<arg><replaceable>gebruikersnaam</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>w</primary></indexterm>
Het programma <command>w</command> toont de huidige gebruikers van het 
systeem en wat ze aan het doen zijn. (Het combineert in wezen de 
functionaliteit van <command>uptime</command>
<indexterm><primary>uptime</primary></indexterm> en <command>who</command>. De kopregel van
<command>w</command> is exact hetzelfde als die van <command>uptime</command>, en op elke regel wordt
een gebruiker getoond, wanneer ze inlogde 
(en hoelang ze niet actief zijn geweest). 
<literal>JCPU</literal> is de totale hoeveelheid
door die gebruiker gebruikte CPU-tijd, terwijl
<literal>PCPU</literal> de totale hoeveelheid CPU-tijd is die wordt gebruikt door
de huidige taak.
</para>

<para>
Als aan <command>w</command> de optie <option>f</option> wordt gegeven, 
toont het 't remote systeem van waaraf ze zijn ingelogd, als dit zo is. 
De optionele parameter <option>w</option> beperkt de uitvoer tot het tonen van alleen de
gebruikersnaam.
</para>
</sect1>

<sect1 id="commands-in-file"><title>Wat staat er in het bestand?</title>
<para>
Voor het weergeven van bestanden worden er onder &unix; twee 
belangrijke opdrachten gebruikt, <command>cat</command> en 
<command>more</command>. 
Beiden zijn besproken in <xref linkend="shell2-chapter"/>.

<cmdsynopsis>
<command>cat</command>
<arg>-nA</arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>cat</primary></indexterm>
<command>cat</command> is geen gebruiksvriendelijke opdracht. Het 
wacht niet dat je
het bestand kunt lezen, en het wordt vooral in combinatie met pipes gebruikt.
<command>cat</command> heeft echter een aantal nuttige opdrachtregelopties. 
<option>n</option> zal bijvoorbeeld alle regels in het bestand nummeren, en
<option>A</option> zal stuurtekens als normale tekens tonen in plaats van dat
het (mogelijk) vreemde dingen uithaalt met je scherm.
(Onthoud dat om de vreemdere en misschien "minder nuttige" opties
te bekijken, je de opdracht <command>man</command> kunt gebruiken:
<command>man cat</command>.) <command>cat</command> accepteert invoer van stdin als er op 
de opdrachtregel geen bestanden worden opgegeven.

<cmdsynopsis>
<command>more</command>
<arg>-l</arg>
<arg>+<replaceable>regelnummer</replaceable></arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>more</primary></indexterm>
<command>more</command> is veel bruikbaarder, en het is de opdracht die 
je wellicht wilt gebruiken als je ASCII tekstbestanden door wilt bladeren. De 
enige van belang zijnde optie is <option>l</option>, wat <command>more</command> zal vertellen
dat je bent ge&iuml;nteresseerd in het behandelen van het teken 
<keycap>Ctrl-L</keycap> als een "new page" teken. <command>more</command> 
zal beginnen op een opgegeven regelnummer.
Aangezien <command>more</command> een interactieve opdracht is, heb ik 
de belangrijkste interactieve opdrachten hieronder samengevat:

<variablelist>
<varlistentry><term>[<keycap>Spatiebalk</keycap>]</term>
<listitem><para>
Ga naar het volgende scherm met tekst.
</para></listitem>
</varlistentry>

<varlistentry><term>[<keycap>d</keycap>]</term>
<listitem><para>
Scroll 11 regels verder, of ongeveer de helft van een
normaal 25-regelig scherm.
</para></listitem>
</varlistentry>

<varlistentry><term>[<keycap>/</keycap>]</term>
<listitem><para>
Zoek naar een reguliere expressie. Ondanks dat een reguliere
expressie heel gecompliceerd kan zijn, kun je ook gewoon een tekststring
intikken om naar te laten zoeken. Met bijvoorbeeld 
<literal>/toad</literal> <keycap>return</keycap> zoek 
je in het huidige bestand naar de volgende string "toad". Met een slash
gevolgd door een return wordt gezocht naar de volgende tekenreeks waar je
als laatste naar zocht.
</para></listitem>
</varlistentry>

<varlistentry><term>[<keycap>n</keycap>]</term>
<listitem><para>
Hiermee zal ook worden gezocht naar de volgende tekst
die overeenkomt met je reguliere expressie.
</para></listitem>
</varlistentry>

<varlistentry><term>[<keycap>:</keycap><keycap>n</keycap>]</term>
<listitem><para>
Als je meer dan &eacute;&eacute;n regel opgaf op de 
opdrachtregel, zal hiermee naar het volgende bestand worden gegaan.
</para></listitem>
</varlistentry>

<varlistentry><term>[<keycap>:</keycap><keycap>p</keycap>]</term>
<listitem><para>
Hiermee zal naar het voorgaande bestand worden gegaan.
</para></listitem>
</varlistentry>

<varlistentry><term>[<keycap>q</keycap>]</term>
<listitem><para>
Be&euml;indig <command>more</command>.
</para></listitem>
</varlistentry>
</variablelist>

<cmdsynopsis>
<command>head</command> 
<arg>-<replaceable>regels</replaceable></arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>head</primary></indexterm>
<command>head</command> zal de eerste tien regels tonen van de opgegeven 
bestanden, of
de eerste tien regels van stdin als er geen bestanden op de opdrachtregel
werden opgegeven. Elke numerieke optie zal worden opgevat als het aantal
weer te geven regels, dus <command>head -15 frog</command> zal de eerste 
vijftien regels van het bestand <filename>frog</filename> weergeven.

<cmdsynopsis>
<command>tail</command>
<arg>-<replaceable>regels</replaceable></arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>tail</primary></indexterm>
Net als <command>head</command>, zal <command>tail</command> slechts een fractie van het bestand
laten zien. Natuurlijk zal <command>tail</command> het einde van het bestand laten zien,
of de laatste tien regels die binnenkomen via stdin. <command>tail</command> accepteert ook
het opgeven van het aantal regels.

<cmdsynopsis>
<command>file</command> 
<arg><replaceable>bestand1 bestand2 ... bestand</replaceable></arg>
</cmdsynopsis>

De opdracht <command>file</command> probeert te achterhalen in welke opmaak een bepaald
bestand is weggeschreven. Aangezien niet alle bestanden extensies hebben of
andere eenvoudig te identificeren markeringen, voert de opdracht
<command>file</command> een aantal elementaire controles uit om te trachten erachter
zien te komen wat het exact bevat.

Wees echter voorzichtig omdat het heel goed mogelijk is dat
<command>file</command> een slechte indicatie geeft.
</para>
</sect1>

<sect1 id="commands-informative"><title>Informatieve opdrachten</title>
<para>
In deze sectie worden opdrachten besproken waarmee bestanden worden 
aangepast, opdrachten die een bepaalde bewerking op het bestand uitvoeren,
of statistieken over het bestand leveren.

<cmdsynopsis>
<command>grep</command>
<arg>-nvwx</arg>
<arg>-<replaceable>nummer</replaceable></arg>
<arg choice="plain">expressie</arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>grep</primary></indexterm>
E&eacute;n van de handigste opdrachten in &unix; is <command>grep</command>, de
<emphasis>g</emphasis>eneralized <emphasis>r</emphasis>egular <emphasis>e</emphasis>xpression <emphasis>p</emphasis>arser. Dit is
een chique naam voor een utility dat alleen een tekstbestand kan
doorzoeken. De eenvoudigste manier om <command>grep</command> te gebruiken 
gaat als volgt:</para>

<para>
<screen>
/home/larry# cat animals
Animals are very interesting creatures. One of my favorite animals is
the tiger, a fearsome beast with large teeth.
I also like the lion---it's really neat!
/home/larry# grep iger animals
the tiger, a fearsome beast with large teeth.
/home/larry#
</screen>
</para>

<para>
Alhoewel het alle regels toont waarin het woord voorkomt, is een nadeel hiervan
dat het je niet aangeeft waar in het bestand te zoeken, geen regelnummer.
Afhankelijk van wat je aan het doen bent, kan dit prima zijn.
Als je bijvoorbeeld op zoek bent naar fouten in de uitvoer van een programma,
zou je <command>a.out | grep error</command> kunnen proberen, waarbij 
<application>a.out</application> de naam is van het programma.

Als je er in bent ge&iuml;nteresseerd waar de overeenkomsten zich bevinden,
gebruik je de <option>n</option> switch van <command>grep</command> om het te vertellen
regelnummers af te drukken. Gebruik de
switch <option>v</option> als je alle regels wilt zien die <emphasis>niet</emphasis> overeenkomen
met de opgegeven expressie.

Een andere feature van <command>grep</command> is dat het alleen 
zoekt naar delen van een woord, zoals mijn voorbeeld hierboven waar
<literal>iger</literal> overeenkwam met <literal>tiger</literal>. Om 
<command>grep</command> te vertellen alleen overeenkomsten te zoeken op hele woorden,
gebruik je de <option>w</option>, en de <option>x</option> switch vertelt grep alleen 
overeenkomsten te zoeken met gehele regels.

Als je geen bestanden opgeeft, zal <command>grep</command> stdin onderzoeken.

<cmdsynopsis>
<command>wc</command>
<arg>-clw</arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>wc</primary></indexterm>
<command>wc</command> staat voor <emphasis>w</emphasis>ord <emphasis>c</emphasis>ount. Het telt eenvoudigweg
het aantal woorden, regels en tekens in (het) bestand(en). Worden er geen
bestanden in de opdrachtregel opgegeven, dan voert het de bewerking uit op
stdin. De drie parameters, <option>clw</option>, staan respectievelijk voor 
<emphasis>c</emphasis>haracter (teken), <emphasis>l</emphasis>ine (regel), en <emphasis>w</emphasis>ord (woord), en
vertellen <command>wc</command> welke van deze drie te tellen. Dus 
<command>wc -cw</command> zal 
het aantal tekens en woorden tellen, maar niet het aantal regels. 
<command>wc</command> telt standaard alles: woorden, regels en tekens.
</para>

<para>
Een aardig gebruik van <command>wc</command> is uit te zoeken hoeveel bestanden er
in de huidige directory aanwezig zijn:
<command>ls | wc -w</command>. Probeer <command>ls *.c | wc -w</command> 
als je wilt
zien hoeveel bestanden er eindigen op <literal>.c</literal>.

<cmdsynopsis>
<command>spell</command>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>spell</primary></indexterm>
<command>spell</command> is een zeer simpel &unix; spellingsprogramma, gewoonlijk voor
Amerikaans Engels.<footnote><para>Ondanks dat hier versies zijn voor
verscheidene andere Europese talen, is de kopie op je Linux machine
zeer waarschijnlijk voor Amerikaans-Engels.</para></footnote><command>spell</command> is een filter, zoals
de meeste andere programma's waar we het over hebben gehad, die een 
ASCII-tekstbestand als invoer neemt en alle woorden als uitvoer geeft 
die het als onjuist gespeld aanmerkt.
<command>spell</command> werkt op de bestanden die op de opdrachtregel worden opgegeven,
of als die er niet zijn, op stdin.
</para>

<para>
Een geraffineerder spellingsprogramma, <command>ispell</command>
<indexterm><primary>ispell</primary></indexterm> is
waarschijnlijk ook beschikbaar op je machine.  <command>ispell</command> biedt je
een mogelijk correcte spelling aan en een fraaie menu-interface als op de
opdrachtregel een bestandsnaam werd opgegeven of zal als een op 
filter-lijkend programma worden uitgevoerd als er geen bestanden werden
opgegeven.
</para>

<para>
Ondanks dat de werking van <command>ispell</command> tamelijk
vanzelfsprekend is, zou je de man page kunnen raadplegen als je
meer hulp nodig hebt.

<cmdsynopsis>
<command>cmp</command>
<arg choice="plain"><replaceable>bestand1</replaceable></arg>
<arg><replaceable>bestand2</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>cmp</primary></indexterm>
<command>cmp</command> <emphasis>c</emphasis>o<emphasis>m</emphasis>pares (vergelijkt) twee bestanden. 
De eerste moet op de opdrachtregel worden opgegeven, terwijl de tweede
als de tweede parameter kan worden opgegeven of van standaardinvoer wordt
ingelezen. <command>cmp</command> is erg simpel, en vertelt je louter waar de twee
bestanden voor het eerst verschillen.

<cmdsynopsis>
<command>diff</command>
<arg choice="plain"><replaceable>bestand1 bestand2</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>diff</primary></indexterm>
Een van de meest gecompliceerde &unix; standaardopdrachten is 
<command>diff</command>. De GNU
<indexterm><primary>GNU Project</primary></indexterm> versie van 
<command>diff</command> kent meer dan twintig opdrachtregelopties! 
Het is een veel krachtiger variant van <command>cmp</command> en het toont 
je de verschillen in plaats van dat het je louter aangeeft waar het
eerste verschil zich voordoet.
</para>

<para>
Aangezien het hebben over zelfs een goed deel van <command>diff</command> 
buiten het kader van dit boek valt, zal ik het gewoon hebben over de 
basiswerking van <command>diff</command>. Samengevat accepteert <command>diff</command> twee parameters en
toont het de verschillen tussen deze parameters op een regel-voor-regel
basis. Bijvoorbeeld:
</para>

<para>
<screen>
/home/larry# cat frog
Animals are very interesting creatures. One of my favorite animals is
the tiger, a fearsome beast with large teeth.
I also like the lion---it's really neat!
/home/larry# cp frog toad
/home/larry# diff frog toad
/home/larry# cat dog
Animals are very nteresting creatures. One of my favorite animals is

the tiger, a fearsome beast with large teeth.
I also   like the lion---it's really neat!
/home/larry# diff frog dog
1c1,2
< Animals are very interesting creatures. One of my favorite animals is
---
> Animals are very nteresting creatures. One of my favorite animals is
> 
3c4
< I also like the lion---it's really neat!
---
> I also   like the lion---it's really neat!
/home/larry#
</screen>
</para>

<para>
Zoals je kunt zien, geeft <command>diff</command> niets als uitvoer als de twee bestanden
identiek zijn. Daarna vergeleek ik twee verschillende bestanden, 
het had een sectiekop, <literal>1c1,2</literal> aangevend dat het regel 1 van het 
linkerbestand aan het vergelijken was <filename>frog</filename>, met regels 1--2 van <filename>dog</filename>
en welke verschillen het opmerkte.
Toen vergeleek het regel 3 van <filename>frog</filename> met regel 4 van 
<filename>dog</filename>.
Ondanks dat het in eerste instantie vreemd over kan komen dat er twee
verschillende regelnummers worden vergeleken, is het veel effici&euml;nter
dan iedere enkele regel weer te geven  als er zich eerder in een bestand
een extra return bevindt.

<cmdsynopsis>
<command>gzip</command>
<arg>-v#</arg> 
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
<sbr/>
<command>gunzip</command>
<arg>-v</arg>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
<sbr/>
<command>zcat</command>
<arg><replaceable>bestand1 bestand2 ... bestandN</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>gzip</primary></indexterm>
<indexterm><primary>gunzip</primary></indexterm>
<indexterm><primary>zcat</primary></indexterm>
Deze drie programma's worden gebruikt om gegevens te 
comprimeren
<indexterm><primary>comprimeren</primary></indexterm> en decomprimeren
<indexterm><primary>decomprimeren</primary></indexterm>.
<command>gzip</command>, van GNU Zip, is het programma dat de originele bestanden 
inleest en bestanden als uitvoer geeft die kleiner zijn.
<command>gzip</command> verwijdert de bestanden die op de opdrachtregel werden opgegeven
en vervangt ze door bestanden met identieke naam behalve dat er
"<literal>.gz</literal>" aan is toegevoegd.

<cmdsynopsis>
<command>tr</command>
<arg choice="plain"><replaceable>string1</replaceable></arg>
<arg choice="plain"><replaceable>string2</replaceable></arg>
</cmdsynopsis>

<indexterm><primary>tt</primary></indexterm>
De opdracht "translate characters" werkt op standaardinvoer. Het
accepteert als parameter geen bestandsnaam.
In plaats daarvan zijn de twee parameters willekeurige strings.
Het vervangt alle voorkomens van <literal>string1</literal> in de invoer door 
<literal>string2</literal>. In aanvulling op
relatief simpele opdrachten zoals
<command>tr frog toad</command>, kan <command>tr</command> gecompliceerdere
opdrachten accepteren. Hier is bijvoorbeeld een snelle manier om
kleine tekens om te zetten in hoofdletters:
</para>

<para>
<screen>
<prompt>/home/larry# </prompt><userinput>tr [:lower:] [:upper:]</userinput>
dit is een VREEMDE zin.
DIT IS EEN VREEMDE ZIN.
</screen>
</para>

<para>
<command>tr</command> is tamelijk complex en het wordt gewoonlijk in kleine
shell-programma's gebruikt.
</para>
</sect1>
</chapter>

<!-- 
% Local Variables: 
% mode: latex
% TeX-master: \"guide\"
% End: -->