Jan Keirse

Het LinuX/UniX Console Handboek

Het LinuX/UniX Console Handboek

`"

Copyright © 2001 Jan Keirse. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts being A copy of the license is included in the chapter entitled ``GNU Free Documentation License''.

Contents

1  Over dit document
    1.1  Verantwoording
    1.2  Wat vind je hier allmaal
    1.3  Merci, merci, merci, 1000 maal merci
    1.4  Hoe deelnemen
I   Introductie tot UNIX
2  Bestandsysteem
    2.1  Directorystructuur
        2.1.1  Directorystructuur
        2.1.2  En wat met andere drives?
    2.2  Hardlinks en softlinks
3  Shells
    3.1  Redirection
    3.2  Shell : Bash - Bourne again shell
        3.2.1  Introductie
    3.3  Shell : Ksh - Korn shell
    3.4  Shell : Csh - C shell
II   Basiscommando's
4  Navigatie en standaardtaken
    4.1  cd - wijzigen van huidige directorie
    4.2  ls - weergeven van bestandsnamen
    4.3  dir - weergeven van bestandsnamen
    4.4  vdir - weergeven van bestandsnamen
    4.5  chown - Veranderen van owner
    4.6  chgrp - Veranderen van groep
    4.7  chmod - Veranderen van permissies
    4.8  cp - kopieren
    4.9  dd - bitwise kopieren
    4.10  df - vrije ruimte weergeven
    4.11  du - ruimtegebruik weergeven
    4.12  ln - links aanmaken
    4.13  mkdir - directorie aanmaken
    4.14  mknod - devicefiles aanmaken
    4.15  mkfifo - FIFO aanmaken
    4.16  mv - verplaatsen
    4.17  rm - verwijderen
    4.18  rmdir - verwijderen van directories
    4.19  sync - buffers wegschrijven
    4.20  touch - datum aanpassen van bestanden
    4.21  dircolors - kleuren instellen voor ls
    4.22  install - files kopieren en permissies zetten
    4.23  shred - veilig bestanden verwijderen
    4.24  clear - maak die terminal leeg
    4.25  find - zoek dat eens
        4.25.1  Basic usage
        4.25.2  Uitvoer verwerken met -exec
        4.25.3  Welk type van bestanden dat find mag vinden
5  Informatie inwinnen
    5.1  man - manual pages
    5.2  info - info-pages
    5.3  --help - snelhulp
6  Binaire utilities
    6.1  addr2line - adressen naar files en omgekeerd
    6.2  ar - archives manipuleren
    6.3  ranlib - index voor archief genereren
    6.4  size - grootte van object of archiefbestanden
    6.5  strings - strings uit een binary-file weergeven
7  Tekst utilities
    7.1  aspell - spellingscontrole
    7.2  vi - de standaard unix editor
        7.2.1  Wat is vi?
        7.2.2  Vi in het gebruik
    7.3  cat - strings inlezen en weergeven
    7.4  less - inhoud interactief weergeven
    7.5  grep - zoek een pattern in een string
    7.6  cut - welbepaalde delen van strings manipuleren
    7.7  sort - sorteren
    7.8  cksum - Checksum genereren
    7.9  csplit - splitsen naar inhoud
    7.10  expand - tabs naar spaties
    7.11  fmt - tekst formatteren
    7.12  fold - tekst wrappen
    7.13  head - eerste regels weergeven
    7.14  iconv - codering veranderen
    7.15  join - regels bij elkaar brengen
    7.16  md5sum - md5sum berekenen
    7.17  nl - aantal regels
    7.18  od - dumpen in octale of andere formaten
    7.19  paste - lines bij elkaar brengen
    7.20  pr - tekst klaarmaken voor te printen
    7.21  ptx - index van fileinhoud maken
    7.22  sha1sum - sha1sum berekenen
    7.23  sum - checksum berekenen
    7.24  tail - laatste regels weergeven
    7.25  tr - karakters manipuleren
    7.26  tsort - topologisch sorteren
    7.27  unexpand - spaties naar tabs
    7.28  uniq - dubbele regels wegwissen
    7.29  wc - regels/woorden/lijnen tellen
8  Compressie
    8.1  gzip - Comprimeren met Gzip
    8.2  bzip - Comprimeren met Bzip
    8.3  bzip2 - Comprimeren met Bzip2
    8.4  zip - Comprimeren met Zip
    8.5  unzip - Decomprimeren met unzip
    8.6  tar - Tape archieven aanmaken
9  Vergelijkingen en verschillen
    9.1  cmp - 2 files vergelijken
    9.2  diff - 2 files vergelijken
    9.3  diff3 - 3 files vergelijken
    9.4  sdiff - interactief verschillen verwijderen
    9.5  patch - inhoud updaten
    9.6  comm - gesorteerde files vergelijken
10  Computer uitdoen en herstarten
    10.1  halt - stop this system
    10.2  Reboot - restart me please
11  Interessant voor scripts
    11.1  awk - patterns scannen en verwerken
    11.2  grep - strings uit files halen
    11.3  mktemp - veilig een tempdirectory maken
    11.4  sed - strings manipuleren
    11.5  sleep - slaap maar even
III   Editors en tekstverwerking
12  Editors
    12.1  Editors? - Even uitleggen
    12.2  Vi - VIsual editor
    12.3  VI iMproved Beyond basics
        12.3.1  :help - referentie
        12.3.2  hjkl - moving around
        12.3.3  search - zoek en gij zult vinden
        12.3.4  markers - markeerstiftjes
        12.3.5  insert - invoeren
        12.3.6  visual mode
        12.3.7  Undo/Redo
    12.4  Joe - Joe's own editor
        12.4.1  joe? wat is dat nu weeral
        12.4.2  Gebruik
    12.5  ed - de oudste
        12.5.1  ed - ?
        12.5.2  ed - een voorbeeldje
        12.5.3  ed - en de rest?
    12.6  emacs - de grootste
    12.7  aee - easy editor
13  LaTeX
    13.1  Wa's LaTeX?
        13.1.1  Latex - Wat is dat nu weeral?
        13.1.2  Intro - essentieel om te weten
        13.1.3  .tex - een voorbeeldje
IV   Bestanden en directory's
14  Algemene informatie over bestanden
    14.1  Hoe herken je configuratiebestanden?
    14.2  Waar vind je configuratiebestanden?
    14.3  Algemeen geldende conventies voor configuratiebestanden
    14.4  Welke extenties vind je in een unix systeem?
15  User configuratie bestanden
    15.1  Algemene bestanden
    15.2  Programmaspecifieke bestanden
16  Systeem configuratie bestanden
    16.1  General
        16.1.1  kernel
        16.1.2  Opstarten
        16.1.3  other
    16.2  Programma specifiek
17  Logbestanden
V   Administratieve tools
18  Software managment
    18.1  RPM - Eenvoudige software-managment
        18.1.1  Software manipuleren
        18.1.2  Software manipuleren : Installatie
        18.1.3  Software manipuleren : Upgraden
        18.1.4  Software manipuleren : Verwijderen
        18.1.5  Software manipuleren : Informatie inwinnen
        18.1.6  Packages verifieren
        18.1.7  Signatures controleren
        18.1.8  Dependencies
        18.1.9  Special arguments
        18.1.10  Handige tools
        18.1.11  Handige tools : urpmi
        18.1.12  Handige tools : apt-get
    18.2  ldconfig - libraries beheren
19  Process managment
    19.1  kill - process killen bij PID
    19.2  killall - process killen bij naam
20  User managment
    20.1  su - superuser
21  Gegevens opvragen
    21.1  getent - systeeminformatie
    21.2  locale - locale instellingen
    21.3  tload
    21.4  uname
    21.5  zdump - tijd elders
    21.6  gegevens over gebruikers
        21.6.1  who
        21.6.2  whoami
        21.6.3  id
        21.6.4  groups
        21.6.5  users
        21.6.6  logname
22  Locale instellingen maken
    22.1  tzselect - selecteer de timezone
VI   Networking en Internet
23  Standaard netwerk-tool
24  Security
    24.1  GnuGPG - encryption
        24.1.1  GnuPG
25  Mail and news related
    25.1  mail - standaard mail programma
        25.1.1  Inleiding
        25.1.2  Gebruik
        25.1.3  Opmerkingen
    25.2  fetchmail - mail ophalen
    25.3  sendmail - mail verzenden
    25.4  leafnode - local news server
    25.5  slrn - nieuwslezer voor console
    25.6  mutt - mailprogramma
    25.7  pine - mail en nieuws
        25.7.1  pine - wat is dat nu weer al?
        25.7.2  pine - hoe werkt dat?
        25.7.3  Setup - enkele geavanceerde instellingen van pine
        25.7.4  from: - Changing the from header
    25.8  elm - easy mailing!
26  www and ftp related
    26.1  ftp - standaard ftp client
    26.2  wget - www zonder browser
VII   Ontwikkeltools
27  Diagnose-tools
    27.1  catchsegv - segmentation faults
    27.2  memusage - geef informatie over geheugengebruik
28  gencat
29  getconf
30  glibcbug
31  ldd - libraries die door een programma worden gebruikt
32  localedef - genereer locale-definitiebestanden
33  sln - symbolische links
VIII   Vaak gebruikte tools
34  Text utility's
    34.1  a2ps - pretty printing
        34.1.1  zeer eenvoudig gebruik
        34.1.2  Opties
35  nohup
IX   Wetenschappelijke programma's
36  Wiskundige programma's
    36.1  bc - basic calculator
X   a little extra
37  fortune - bigtalk
38  eject - opens cd-drives
39  split - splits files
40  cal - Kallendertje
XI   Appendices
A  Ergonomie
    A.1  RSI - wat is dat?
    A.2  stress?
    A.3  Ergonomy, wat kun je doen?
        A.3.1  Desk - Het juiste bureau
        A.3.2  Chair - De correcte stoel
        A.3.3  Light - Goede verlichting
        A.3.4  klimaat - Ook het klimaat is belangerijk!
        A.3.5  noise - geluid veroorzaakt stress!
        A.3.6  screen - het juiste scherm op de juiste plaats
        A.3.7  keyboard - het juiste toetstenbord op de juiste plaats
        A.3.8  muis
B  Over dit document
    B.1  Informatie in verband met dit document
        B.1.1  Nieuwe versies
        B.1.2  Andere formaten
        B.1.3  Mailinglists
C  Changelog
D  GNU Free Documentation License
    D.1  Applicability and Definitions
    D.2  Verbatim Copying
    D.3  Copying in Quantity
    D.4  Modifications
    D.5  Combining Documents
    D.6  Collections of Documents
    D.7  Aggregation With Independent Works
    D.8  Translation
    D.9  Termination
    D.10  Future Revisions of This License
Index

Chapter 1
Over dit document

1.1  Verantwoording

Reeds enkele maanden voor ik aan dit boek begon, was ik al op zoek naar een volledige manual voor 'alle' terminal programma's, een referentie die niet alleen gaat over de GNU utils, of een specifiek programma, maar waar je alles in vindt wat je wilt weten, ik kon er echter geen vinden. Daarom besliste ik om zelf maar zo'n document te beginnen, en (met jullie hulp, alleen krijg ik het nooit voor elkaar) een referentie voor unix- en linux te maken (gebruikmakend van de consoleprogramma's).

1.2  Wat vind je hier allmaal

Het is de bedoeling om op termijn een echt boek van een duizendtal pagina's met uitgebreide (!) uitleg over honderden terminalprogramma's te schrijven, maar voorlopig zijn we nog niet zo ver. Momenteel kun je hier een beschrijving van de basiscommando's vinden en een aantal uitgebreidere proggies zoas vi, mutt,...

Mischien kun jij ook helpen met de creatie van het uiteindelijke boek, mail eens naar
mailto:jan.keirse@pandora.be met een hoofdstuk dat jij hebt geschreven, een voorstel voor een toe te voegen programma of gewoon maar een eenvoudige tip, alles is welkom.

Je vindt hier dus geen installatiehandleiding zoals in vele ander howto's en boeken over linux, daarvoor zijn er al genoeg howto's, je wordt verondersteld een draaiend linux of unix systeem te hebben voor je hieraan begint, een zeer minimale kennis van unix of dos zou handig zijn, maar is niet nodig.

1.3  Merci, merci, merci, 1000 maal merci

Ik (Jan Keirse) wil graag de volgende personen bedanken voor hun medewerking:
De auteurs: En degenen die waardevolle tips gaven:
Wil jij jou naam hier ook? Geef me een (nuttige) tip of schrijf een handleiding voor een proggie en dat komt voor mekaar.

1.4  Hoe deelnemen

Als je tekst wilt schrijven voor dit boek, dan zijn hier enkele tips:

Als je LATEX kent, heb ik liefst dat je de tekst onmiddellijk in LATEX schrijft. Hierbij zijn er enkele zaken waarmee je rekening moet houden:

Als je geen LaTeX kent, zet de tekst dan in gewone ASCII, dan zet ik hem wel om.

Als je een commando beschrijft doe dit dan liefst als volgt:
Geef eerst een korte beschrijving van een aantal lijntjes.
Geef daarna een eenvoudige uitleg hoe je het commando gebruikt, zodat iedereen die kan begrijpen.
Geef daarna eventueel een voorbeeldje.
Als er configuratiebestanden voor het programma zijn, leg die dan hier uit, indien mogelijk.
Daarna volgt een lijst met alle mogelijke opties in manpage stijl.

Eens je een commando hebt beschreven, zend dit dan door naar mailto:jan.keirse@pandora.be, vermeld liefst ook waar je het commando in het boek zou plaatsen (welk hoofdstuk, part, section,...).

Het is aan te raden dat auteurs ook op de mailinglijst all staan, zodat ze steeds up-to-date tekst hebben en dus niet werk doen dat onlangs al gedaan is.

Als je bezig bent met een lange beschrijving, laat mij dat dan ook weten, zodat anderen niet beginnen met hetzelfde, ik vind het ook leuk om in zo'n geval nu en dan eens een mailtje te krijgen met wat je al hebt, om mij een idee te kunnen vormen van wat er al gebeurd is.

Als je informatie wilt hebben voor je beschrijvingen, dan zijn hier enkele handige bronnen:


Part 1
Introductie tot UNIX


Chapter 2
Bestandsysteem

2.1  Directorystructuur

2.1.1  Directorystructuur

De directorystructuur in unix is tamelijk eenvoudig: Er is een root directory: / .
In deze deze root directory bevinden zich een aantal standaard directory's die in ieder unix systeem aanwezig zijn, zoals /dev1. Directory's worden gescheiden door /, niet door \ zoals in dos/windows. Een voorbeeld van een directorynaam is dus: /usr/local/bin of /home/jan. De directorynaam tux/progs is de subdir progs van de dir tux die op zijn beurt een subdir is van de huidige directory (ook geadreseerd als . of $pwd).

Een aantal vaste directory's zijn:

2.1.2  En wat met andere drives?

Om een partitie2 of schijf te mounten moet je de "device node" van die partitie of schijf weten. Device nodes zijn een soort referenties naar apparaten (eigenlijk eerder naar drivers, maar kom), en die vind je in /dev. Deze verschillen wel een beetje naargelang de UNIX/Linux versie waar je mee bezig bent.

Linux

De floppydrives zijn bereikbaar via `fd0' en `fd1', onder DOS respectievelijk A: en B:.

Voor de harddisks is wat meer uitleg vereist.

IDE   IDE-apparaten (harddisk, maar bijvoorbeeld ook CD-ROM drives) hebben een naam die begint met `hd' gevolgd door een letter. Deze letters komen in een bepaalde volgorde. We beginnen met `a' voor de primary master, hierna komt `b' voor de primary slave. Hierna komen master en slave op de tweede controller, dan die op de derde, enzovoort.

Voorbeeldjes (om het duidelijk te maken):

... en zo kun je verder gaan, het master-apparaat op een eventuele derde IDE-controller zal dus `hde' heten.

SCSI   SCSI apparaten worden op een gelijkaardige manier benoemd. De eerste SCSI hd (met scsi-id 0 dus) heet sda, daarna komt sdb, enzovoort.

Om de partities van een harde schijf te bereiken, neem je de naam van die schijf en plak je er een cijfertje achter. De 4 primaire partities zijn genummerd 1, 2, 3, 4, en de logische partities (dus partities die zich ïn" een extended partitie bevinden, worden genummerd vanaf 5).

Onder kernel 2.4 is er ook zoiets als `devfs'. Dan wordt de /dev directory op een andere manier beheerd, en zijn de entries erin ook anders (bvb. /dev/ide/ide0/disk0/part0 of zoiets, ik heb er geen ervaring mee). Dit is iets wat je echter niet *hoeft* te gebruiken, en het hangt dus af van de makers van je distributie welk systeem er gebruikt wordt.

BSD

Onder de *BSD besturingssystemen wordt een iets andere benaming gebruikt. Daar noemt men de klassieke partities, zoals we die kennen van bvb. DOS, `slices'. BSD wordt geinstalleerd in zo'n slice (waarvan het typenummer verschillend is voor FreeBSD, NetBSD en OpenBSD), en deze wordt dan verder ingedeeld in (BSD-style) `partitions' (de informatie hiervoor wordt opgeslagen in een `disklabel'). Deze BSD-style partitions bevatten dan de filesystemen voor het besturingssysteem (/, /usr, /var, ...).

Onder FreeBSD zijn de device-namen ad0, ad1, ... voor IDE schijven; da0, da1, ... voor SCSI schijven. ATAPI CD-ROM apparaten worden aangeduid met acd* (acd0, acd1, ...), SCSI CD-ROM apparaten met cd*. (In FreeBSD versies voor 4.0 dient met ad* te vervangen door wd* en acd* door wcd*.)

Onder OpenBSD en NetBSD is dit wd0, wd1, ... voor IDE schijven, en voor zowel IDE als SCSI CD-ROM drives gebruikt met cd*. SCSI schijven zijn sd*.

Onder FreeBSD worden slices aangeduid door `sx' na de device naam te zetten. BSD-style partitions worden dan aangeduid met een letter na deze slice-naam. Floppies en CD-ROMs zijn niet onderverdeeld in slices, daar is dit dus niet van toepassing. (Een floppy kan wel een BSD disklabel en dus een BSD filesystem bevatten, maar geen DOS-partities.) Onder OpenBSD en NetBSD gebeurt dit niet; deze gebruiken gewoon de disklabel die ze vinden op de eerste OpenBSD- of respectievelijk NetBSD-slice.

Na de naam van een harddisk-slice, een CD-ROM drive of een floppydrive komt een letter om de BSD-partitie, ofwel het hele apparaat aan te duiden. Hier hebben enkele letters een speciale betekenis:

Voor devices zonder partities (CD-ROM's, floppies) kan je a gebruiken om de schijf aan te duiden. FreeBSD aanvaardt hier ook c, de installer gebruikt bijvoorbeeld standaard /dev/acd0c om de eerste IDE CD-ROM drive in te stellen.

Ook hier enkele voorbeeldjes om het duidelijk te maken:

Partities mounten

Ok, we weten nu al hoe onze partities heten, dus nu kunnen we ze mounten 3. Dit gebeurt met het mount commando, syntax:

~$ mount [opties] device mountpoint

device staat voor het apparaat of de partitie die je wil mounten, mountpoint geeft aan waar je de data wil zien. Dat is een directory die al moet bestaan, en normaal gezien leeg is. De inhoud van een niet ledige directory wordt na het mounten van een device `op' deze dir onzichtbaar (maar verdwijnt echter niet, als je het filesystem unmount kan je er terug aan.

Opties kunnen zijn:

Dit zijn enkel de belangrijkste, er zijn veel meer opties. Zie `man mount' voor de rest (het zou totaal onzinnig zijn om ze allemaal over te nemen.

Enkele voorbeelden:

~$ mount -t vfat /dev/hda1 /mnt/windows
(Linux)
Dit commando zorgt ervoor dat de inhoud van de eerste partitie op de eerste IDE-hd toegankelijk wordt in de directory /mnt/windows. Het veronderstelt dat deze partitie een FAT/FAT32 windows partitie is.

~$ mount -t msdos /dev/ad0s1 /mnt/windows
Het equivalent van het vorige voorbeeld, maar dan voor FreeBSD.

~$ mount -t cd9660 -r /dev/cd0a /mnt
Onder NetBSD en OpenBSD maakt dit commando dat je in /mnt de inhoud van de CD-ROM in de eerste CD-drive terugvindt.

~$ mount -t iso9660 -r /dev/hdc /cdrom
Onder Linux zorgt dit ervoor dat je in /cdrom de inhoud van de CD in de drive aangesloten op secondary master ziet. Je kan ook `mount -t iso9660 -o ro /dev/hdc /cdrom' gebruiken.

~$ mount -t vfat /dev/fd0 /floppy
Mount het DOS/Windows disketje in de eerste floppydrive (de tweede is fd1) onder de directory /floppy.

Als je de -t optie weglaat, wordt er een standaardwaarde geprobeerd. Recente Linux kernels proberen dan zelf uit te zoeken wat het type file system is.

Het /etc/fstab bestand

Het configuratiebestand /etc/fstab bevat een aantal regels met filesystems die automatisch kunnen gemount worden. Deze zien er zo uit:

device	dir	fstype	opts	df	fs_passno

Het eerste veld is het te mounten apparaat of de partitie, bvb. /dev/hda1.

Het tweede veld is het mountpoint (zoals bij het mount commando).

Het derde veld is het type filesystem, bvb. ufs (bsd), ext2 (linux), msdos, ...

Het vierde veld bevat een aantal opties. Hierin moet de manier van mounten vermeld staan, en eventueel opties die via -o doorgegeven worden aan het mount programma. Hier moet ook de optie `noauto' vermeld worden: dit zorgt ervoor dat het filesystem in kwestie niet automatisch gemount wordt door `mount -a' en bij de systeemstart.

Het vijfde veld heeft betrekking tot backups en het dump programma.

Het zesde veld bepaalt de volgorde waarin fsck (programma dat de integriteit van filesystems nagaat) de partities moet checken. Aan te raden is dit op 1 te zetten voor het / filesystem, 2 voor de andere filesystems.

Alle filesystems vermeld in /etc/fstab, behalve die met de noauto optie, worden bij het opstarten van het systeem automatisch gemount op de aangegeven mountpoints. Lijnen die beginnen met # worden als commentaar aanzien. Een paar voorbeelden zijn ook hier op hun plaats:

* Enkele voorbeeld /etc/fstab entries van een linux machine:
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                       <dump> <pass>
/dev/hda2       /               ext2    defaults,errors=remount-ro      0      1
/dev/hda5       none            swap    sw                      0       0
proc            /proc           proc    defaults                        0      0
/dev/hda1 /boot ext2 rw                 0       2
/dev/hda6 /usr ext2 rw                  0       2
/dev/hda7 /tmp ext2 rw                  0       2
/dev/hda8 /var ext2 rw                  0       2
/dev/hda4 /home ext2 rw                 0       2

Deze computer bevat dus een aantal ext2 partities. Ook zie je hier het gebruik van een aantal opties.

* Enkele voorbeeld /etc/fstab entries van een FreeBSD machine:
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s2b             none            swap    sw              0       0
/dev/ad0s2a             /               ufs     rw              1       1
/dev/ad0s2f             /usr            ufs     rw              2       2
/dev/acd1c              /cd             cd9660  ro,noauto       0       0
/dev/ad0s5              /disks/fat      msdos   rw              0       0
# ad0s5 = eerste partitie in een extended (dos) partitie

Het plaatsen van regels voor vaak gebruikte filesystems in /etc/fstab heeft het voordeel dat je bijvoorbeeld niet telkens `mount -t cd9660 /dev/acd1c /cd' hoeft te typen, `mount /dev/acd1c' of `mount /cd' volstaat. Bij zo'n commando gaat mount zelf kijken in /etc/fstab voor de overige info.

Meer informatie: man mount, man fstab, man hier

2.2  Hardlinks en softlinks

Een link is (ondermeer) een verwijzing naar een bestand: met het commando ln kun je een link leggen naar een ander bestand, je geeft het als het ware een tweede naam, waardoor je bvb een bestand dat je vaak moet wijzigen, maar dat ergens diep in je bestandssysteem verborgen zit (en daar moet staan voor bvb een bepaald programma) gewoon een tweede naam geven in je home directory, telkens je dan in dat bestand in je home directory wijzigingen maakt, worden die eigenlijk gemaakt in dat verre bestand, en dat neemt slechts enkele bytes in beslag, want het gaat niet om een kopie van het bestand, enkel een link er naartoe (vandaar de naam).

Het probleem is dat er twee soorten links bestaan en dat er sterke verschillen zijn tussen de twee:

Voor een uitgebreidere uitleg kunt u terecht op http://www.cs.uu.nl/~piet/docs/unix.pdf op pagina 32.

Chapter 3
Shells

3.1  Redirection

De tekst die je hier vindt is geschreven voor de bash shell, hoewel hij ook op sommige andere shells van toepassing is, wordt hier niet vanuit gegaan, als je een andere shell gebruikt, kan je kijken bij de tekst specifiek over jouw shell die volgt na deze tekst.

Een programma kan zijn output standaard naar 3 zaken sturen:

Meestal is het stdout die gebruikt wordt (standard out), terwijl stdin (standard in) gebruikt wordt om zaken in te lezen.

Als je de output van 1 programma als input van een tweede wil gebruiken, maak je het best gebruik van het pipe-teken : `|'. Bijvoorbeeld:

~$ find / -type f | sort | head
De output van find (een verzameling bestandsnamen) wordt als input van sort (sorteren van input) gebruikt. De output van sort (gesorteerde verzameling bestandsnamen) wordt als input van head gebruikt (enkel de eerste 10 lijntjes weergeven). De output die de user krijgt is dus deze van head (10 bestandsnamen gesorteerd).

Je kan ook de output in een bestand steken. Dit doe je met het ` > '-symbool:

~$ find / -type f | sort | head > resultaat
Het bestand resultaat bevat hier de 10 gesorteerde bestandsnamen. Er is een output naar het scherm van de gebruiker... tenzij er foutmeldingen gegenereerd zijn. Foutmeldingen komen immers niet op stdout, maar stderr, en zoals al gezegd, `|' redirect enkel stdout naar stdin. Om stderr op te vangen (bv in een bestand steken) moet je het cijfer `2' ervoor plakken. 2 is nl het nummer dat voor stderr staat.
~$ find / -type f 2 > foutmeldingen | sort | head > resultaat
Het bestand foutmeldingen bevat de gegenereerde foutmeldingen. Je ziet dat de redirect staat bij find. Dit is omdat find de foutmeldingen (waarschijnlijk) zal genereren. Als je bij elk programma de foutmeldingen wil opvangen, gebruik je bijvoorbeeld:
~$ find / -type f 2 > findfouten | sort 2 > sortfouten | head > resultaat 2 > headfouten
De files findfouten, sortfouten en headfouten bevat de foutmeldingen van de respectieve programmas.

Een handig-om-te-weten: met ` > ' maak je telkens een nieuw bestand aan. Dus

~$ find / -type f 2 > fouten | sort 2 > fouten | head > resultaat 2 > fouten
Het bestand fouten zou hier dus enkel de foutmeldingen van `head' bevatten. Dit kan je omzeilen door ` >> ' te gebruiken. Die voegt zaken toe.

Soms wil je ook dat er niets verschijnt (geen output). Velen lossen dit op door:

~$ programma > /dev/null
Hierdoor zal alles van stdout in /dev/null gestoken worden (/dev/null mag je gerust een bodemloze put noemen). Deze die weten dat foutmeldingen zullen verschijnen en ze niet willen zien maken daar vaak
~$ programma > /dev/null 2 > /dev/null
van. Het kan echter iets korter:
~$ programma > /dev/null 2 > &1
De `2 > &1' redirect de output van 2 (stderr) naar deze van 1 (stdout) die dus op zijn beurt naar /dev/null gestuurd wordt.

3.2  Shell : Bash - Bourne again shell

3.2.1  Introductie

Bash is GNU's Bourne Again Shell, een complete implementatie van de POSIX.2 shell-specificaties met interactieve command-line, job control (op de besturingssystemen die het aankunnen), csh-achtige features (zoals geschiedenis) en een hele boel andere functies en mogelijkheden:

3.3  Shell : Ksh - Korn shell

Over de Korn shell

3.4  Shell : Csh - C shell

Over de C-shell


Part 2
Basiscommando's


Chapter 4
Navigatie en standaardtaken

4.1  cd - wijzigen van huidige directorie

cd is waarschijnlijk het meest gebruikte commando onder unix-linux, het enige wat dit programma doet is de huidige directory (=map) waarin je je bevindt wijzigen4.
~$ cd directorynaam
waarbij directorynaam staat voor de dir waar naar je wilt verplaatsen. Er zijn 2 soorten van paden (want wat je opgeeft is eigenlijk een pad5) die je kan opgeven: Als je relatief werkt kan je tevens gebruik maken van

Er zijn twee opties voor cd: -L zorgt ervoor dat cd altijd de symbolische namen van directory's gebruikte (als het om gelinkte dir's gaat). -R daarentegen zorgt ervoor dat cd de echte locatie's van directroy's gebruikt, als je dan naar een gelinkte dir cd't en dan cd .. doet kom je dus niet langer meer in de dir waar je vertrokken was.

4.2  ls - weergeven van bestandsnamen

ls is de unix versie van het dos commando dir 6, het is wel heel wat krachtiger. Dit commando toont (zonder argumenten) welke bestanden er zich in de huidige directory bevinden.

Enkele voorbeelden:

~$ ls
ripper jon mike
~$ ls -l
total 2
drwx-- 2 ripper lusers 35 Jun 25 18:52 ripper
drwx-- 2 jon lusers 35 Jun 25 11:52 jon
drwx-- 2 mike lusers 35 May 25 01:52 mike
~$ ls /etc/rc.d/init.d/n* -l
-rwxr-xr-x 1 root root 4006 Mar 13 23:14 /etc/rc.d/init.d/netfs
-rwxr-xr-x 1 root root 7206 Apr 27 22:47 /etc/rc.d/init.d/network
-rwxr-xr-x 1 root root 1412 Apr 5 20:22 /etc/rc.d/init.d/ntpd
Deze informatie staat in de vorm

arwxrwxrwx 6 eigenaar users 1024 maand dag tijd naam

Hierin is a

Dan volgen er drie rijen rwx. Deze kunnen eventueel vervangen zijn door een streepje: - De eerste groep rwx staat voor de rechten van de eigenaar van het bestand, de tweede voor de users die deel uitmaken van de groep en de derde van alle ander gebruikers.

Daarna volgt een getal, dis is het aantal verwijzingen naar de inode waar ook deze verwijzing8 naar verwijst.

Daarna volgen de namen van de eigenaar en de groep

Dan volgt de bestandsgrootte in bytes.

Daarna volgen datum en tijd waarop het bestand in kwestie het laatst is gewijzigd.

En uiteindelijk volgt de naam van het bestand of de directory.

ls heeft een aantal opties:

4.3  dir - weergeven van bestandsnamen

dir is eigenlijk gewoon gelijk aan:
~$ ls -C -b
je kunt er ook de argumenten van ls aan geven en je kunt ook gewoon:
~$ d
draaien, wat het zelfde effect geeft.

4.4  vdir - weergeven van bestandsnamen

vdir is eigenlijk gewoon:
~$ ls -l -b
Je kunt ook hier gewoon de argumenten van ls gebruiken en hier kun je ook
~$ v
draaien, wat hetzelfde effect heeft.

4.5  chown - Veranderen van owner

chown wordt gebruikt om de eigenaar van een bestand te veranderen:
~$ chown jan bestand

Verandert de eigenaar van bestand in jan.

Eventueel kun je na de naam van de eigenaar ook nog een . of : zetten en dan de naam van de nieuwe groep (zonder spaties tussen).

Opties zijn:

4.6  chgrp - Veranderen van groep

chgrp verandert de groep van een bestand:
~$ chgrp users bestand

Verandert de groep waartoe bestand behoort in users.

Opties zijn:

4.7  chmod - Veranderen van permissies

chmod is een tool om de permissies van bestanden in te stellen:
Typ chmod ugo+rwxsg bestandsnaam. Waarbij ugo staat voor user group en others en rwxsg voor Read Write Execute SuperuserID en GroupID en de plus voor toevoegen.
Dit heeft als gevolg: User Group members en Others krijgen alle rechten, natuurlijk kun je ook rechten en gebruikersgroepen weglaten, voor wie je de rechten niet wilt toevoegen, als je de + vervangt door een - heeft dit als effect dat de bestanden die der permissies reeds hadden ze niet langer hebben.

Enkele voorbeelden:

~$ chmod ug+x programma
maakt het bestand programma uitvoerbaar voor de gebruiker en de personen uit dezelfde groep als het bestand.
~$ chmod g-rw bestand
Zorgt ervoor dat de personen uit de groep van het bestand niet langer lees en schrijftoegang hebben tot het bestand.

Interessant detail: als je een de permissions voor zowel ugo wil veranderen kun je die ugo vervangen door a9 of zelfs gewoon weglaten.

Er is nog een andere manier om de permities in te geven: namelijk met de numerieke voorstelling van de permissies. Deze manier heeft het voordeel dat ze over het algemeen sneller is, het nadeel is dat deze methode geen rekening houd met de reeds bestaande permissies, je kunt dus niet een permisie toevoegen of verwijderen aan/van de reeds bestaande permissies, je stelt ze volledig in.

Deze methode werkt als volgt: Elke soort permissie (bvb leestoegang voor others) komt overeen met een getal, om de permissies in te stellen tel je gewoon alle permissies die je wilt toekennen op:

vb.: Het bestand moet lees toegang hebben voor iedereen (4 + 40 +400 = 444), iedreen moet het bestand kunnen uitvoeren (444 + 1 + 10 + 100 = 555) en de eigenaar moet ook schrijftoegang hebben (555 + 200 = 755)
Om deze permissies in te stellen moet je het commando:

~$ chmod 755 bestandsnaam
Uitvoeren.

Opties van chmod zijn:

4.8  cp - kopieren

Met cp kopieer je bestanden of directories van de ene plaats naar de andere.
~$ cp bronbestand doelbestand
Dit kopiëert het bestand bronbestand naar het bestand doelbestand, je kunt hierbij ook directorynamen bijvoegen of bvb.:
~$ cp brondbestand doeldirectory/
gebruiken om een bestand naar de directory doeldirectory te verplaatsen, het heeft daar dan dezelfde naam bronbestand.
Je kunt ook wildcards (*, ?,...) gebruiken om bvb meerdere bestanden in 1 keer te kopiëren, om directorys te kopiëren moet je de optie -r gebruiken.

Opties zijn:

4.9  dd - bitwise kopieren

Met dd kan je op binair niveau gegevens overhevelen van de ene file naar de andere. Default werkt dd met stdin en stdout, maar de meeste mensen voegen er de nodige argumenten aan toe om dd functioneler te krijgen: BLOCKS en BYTES mag gevolgd worden door verschillende suffixen. Raadpleeg de manpage voor dewelke. Ook voor de KEYWORDS raadpleeg je best eens de manpages.

Vaak wordt dd gebruikt om images te maken...

~$ dd if=/dev/fd0 of=$HOME/disk.img bs=1440k

4.10  df - vrije ruimte weergeven

df geeft info weer over het gebruik van opslagruimte, voormanelijk de vrije ruimte10.

Als je df uitvoert met de optie -h11 dan wordt det uivoert getoont in megabyte en gigabyte in plaats van in bytes, dit maak het veel leesbaarder.

Andere opties zijn:

-l
12 Deze optie zorgt er voor dat enkel locale bestandsystemen worden weergegeven, niet deze die over een netwerk gemount zijn.
-m
deze optie zorgt ervoor dat de output in Megabytes gebeurt.
-k
zelfde als -m maar in kilobytes.
-a
deze optie zorgt ervoor dat ook de bestandssytemen met 0 blocks worden getoond.
-T
deze optie zorgt ervoor dat ook het type bestandsysteem wordt getoond.

4.11  du - ruimtegebruik weergeven

du , ofte disk usage, geeft weer hoeveel ruimte een bestand op de harde schijf inneemt. Handige parameters zijn:

4.12  ln - links aanmaken

ln wordt gebruikt om links en symbolische links naar een bestand te leggen.

Illustratief voorbeeld:

~$ ls -l
total 224
-rw--- 1 userA lusers 223539 Jul 29 11:24 My_Posts
-rw--- 1 userA lusers 1687 Jul 29 10:51 My_Replies
~$ ls -al /usr/share/texmf/doc/tetex/README
-rw-r-r- 1 root root 1568 Jun 5 1999 /usr/share/texmf/doc/tetex/README
~$ ln -s /usr/share/texmf/doc/tetex/README hallo
~$ ls -l
total 224
-rw--- 1 userA lusers 223539 Jul 29 11:24 My_Posts
-rw--- 1 userA lusers 1687 Jul 29 10:51 My_Replies
lrwxrwxrwx 1 userA lusers 33 Jul 29 15:34 hallo -> /usr/share/texmf/doc/tetex/README
~$ rm hallo
~$ ln /usr/share/texmf/doc/tetex/README hallo
~$ ls -l
total 224
-rw--- 1 userA lusers 223539 Jul 29 11:24 My_Posts
-rw--- 1 userA lusers 1687 Jul 29 10:51 My_Replies
-rw--- 2 userA lusers 1568 Jun 5 1999 hallo
Je ziet dat een symbolische link aangemaakt wordt door een argument `-s' mee te geven. De file die gecreëerd wordt is niet meer dan een verwijzing naar een andere file. Echter, een hardlink verwijst niet naar een andere file, maar naar een positie op de harde schijf. Het bestand README in het voorbeeld had vroeger 1 verwijzende file (daarom de `1'), maar met de nieuwe hardlink een tweede (daarom de `2').

Opties zijn:

4.13  mkdir - directorie aanmaken

mkdir maakt een nieuwe directory.

~$ mkdir dirnaam

Maakt een dir met de naam dirnaam.

Opties zijn:

4.14  mknod - devicefiles aanmaken

4.15  mkfifo - FIFO aanmaken

4.16  mv - verplaatsen

Met mv verplaats je een bestand van de ene plaats naar de andere.

4.17  rm - verwijderen

Met rm verwijder je bestanden. Gebruik het `-r' om recursief (directories e.a.) te verwijderen.
Voorbeeld:
~$ rm -r TestDirectory/
Dit commando wist de directory met de naam TestDirectory en alle bestanden en directorys die er in zitten.

4.18  rmdir - verwijderen van directories

rmdir wist een directory, maar enkel als hij leeg is.

4.19  sync - buffers wegschrijven

zorgt ervoor dat de kernel alle fs-veranderingen die nog in de buffers zitten neerschrijft en de superblocks update.

Het gebruik is supereenvoudig:

~$ sync

4.20  touch - datum aanpassen van bestanden

4.21  dircolors - kleuren instellen voor ls

4.22  install - files kopieren en permissies zetten

4.23  shred - veilig bestanden verwijderen

4.24  clear - maak die terminal leeg

clear is een klein en simpel commando, het wist gewoon al het gene dat in de console staat, dus zoals cls in dos. Wat je ook kunt doen is Ctrl+l dat heeft het zelfde effect als clear, je kunt ook Ctrl+d doen , dan log je uit.

4.25  find - zoek dat eens

4.25.1  Basic usage

find zoekt in een directory (en eventueel al zijn subdirectory's) naar een bepaald bestand, wildcard's en regular expressions zijn toegestaan.
find . -name "*vis*"
Zoekt naar alle bestanden in de huidige directory en al zijn subdirs naar bestanden die het woord 'vis' in hun naam hebben staan.

4.25.2  Uitvoer verwerken met -exec

find $waar -exec $commando \;
De optie -exec voert het daaropvolgende commando uit op elk gevonden bestand. Je maakt gebruik van {} om het bestand aan te duiden, en \; om het commando te beëindigen.

Bijvoorbeeld:

~$ find /home -ctime 7 -exec tar Avf /mnt/backup/home-backup.tar \;

Dit zorgt ervoor dat elk bestand in /home dat de laatste week gewijzigd was (of aangemaakt) aan een tar-file wordt toegevoegd.

4.25.3  Welk type van bestanden dat find mag vinden

find $waar -type $type
De optie -type zorgt ervoor dat find enkel bestanden van dat type weerheeft, bvb -type d voor directories (of f voor gewone bestanden of l voor links).

Chapter 5
Informatie inwinnen

5.1  man - manual pages

Met man bekijk je de man-page van een commando, functie (vb een C-functie) of ander onderwerp. De manual pages zijn zeer uitgebreide hulpbronnen.

De manpages zijn onderverdeeld in 9 categorien die verdeeld zijn over een zelfde aantal directory's:

/man1 | User programs
/man2 | System Calls
/man3 | Library Calls
/man4 | Special Files
/man5 | File Formats
/man6 | Games
/man7 | Miscellaneous
/man8 | System Administration
/man9 | Additional chapter

5.2  info - info-pages

info is tevens een manier om informatie over een onderwerp te verkrijgen. Alhoewel de man-pages het meest gebruikt worden zijn de info-pages soms iets uitgebreider.
De meeste programma's waarvoor een info page bestaat (vooral de programma's van de Free Software Foundation) hebben een unmaintained man-page, dit wil zeggen dat de man-page niet meer wordt aangepast.

Info-pages zijn geschreven in een speciale versie van TEX, hierdoor zijn ze meestal ook in dvi en ps versie te verkrijgen op het internet, en zijn ze dus meer dan man-pages ook geschikt om af te drukken (druk wel enkel de info pages af die je echt op papier nodig hebt, want ze kunnen een groot aantal pagina's omvatten!)

5.3  --help - snelhulp

Iets leuks in de terminal is dat je bijna bij elk programma13 een klein help berichtje kunt krijgen door het uit te voeren met het argument --help:
~$ mv --help

Geeft bijvoorbeeld een tamelijk korte lijst uitleg van het commando mv , meestal bevatten deze helpberichten een (al dan niet volledige) lijst van 'command line options' en een korte beschrijving van het programma. Dit is vooral handig als je snel nog eens een optie wilt terugzoeken die je vergeten was, of snel wilt weten waarvoor het commando dient.

Chapter 6
Binaire utilities

6.1  addr2line - adressen naar files en omgekeerd

6.2  ar - archives manipuleren

6.3  ranlib - index voor archief genereren

6.4  size - grootte van object of archiefbestanden

6.5  strings - strings uit een binary-file weergeven

Chapter 7
Tekst utilities

7.1  aspell - spellingscontrole

Het komt maar al te vaak voor; je typt een brief, tekst voor webpagina of e-mail en je wil niet voor aap staan met domme spellingsfouten. Met aspell en de Nederlandse bibliotheek is dit verleden tijd...

Het gebruik van aspell is zeer simpel. Eerst moet je wel aspell configureren zodat hij `Dutch' als taal neemt. Dat doe je door een file `.aspell.conf' aan te maken (of /etc/aspell.conf) met daarin:

	 master dutch

Dan kan je een txt-file op fouten controleren door

~$ aspell -c diefile

te typen. Aspell zal dan interactief mogelijke fouten aanduiden en vragen of je die al dan niet wilt verbeteren (en geeft daarbij uiteraard suggesties). Nu is dat gebruik niet gelimiteerd tot cli14. Veel programma's hebben een ingebouwde `spellingscorrectorfunctie' die niet meer is dan een omhulsel die aspell oproept.

Verder heeft aspell ook de mogelijkheid html-code en LaTeX-code op taalfouten te controleren, zodat ze niet bij elke html/LaTeX-syntax een foutmelding geeft.

7.2  vi - de standaard unix editor

7.2.1  Wat is vi?

Momenteel wordt vi aanzien als de standaard unix editor 15. Vi is een editor die niet werkt zoals de meeste andere editors, daarom is hij helemaal in het begin nogal onwennig, maar je went er tamelijk snel aan.

7.2.2  Vi in het gebruik

Er zijn 3 belangerijke modi onder vi:
Als je vi start met:
~$ vi bestandsnaam
Dan wordt vi gestart en het bestand met de naam bestandsnaam wordt geopend, standaard staat vi in de command mode, je kunt nu (ondermeer) de volgende commando's gebruiken:

De volgende commando's werken in ex-mode, waarbij de dubbele punt vi in ex-mode brent.

Voor een meer uitbreide informatie over vim (een uitvoering van vi), zie: p.pageref

7.3  cat - strings inlezen en weergeven

7.4  less - inhoud interactief weergeven

Met less kun je ASCII bestanden inkijken.

Eens je less gestart hebt, krijg je de inhoud van het bestand te zien. Dan kun je commando's uitvoeren: met de pijltjestoetsen bewegen, met spatie een scherm voorwaarts en met b een scherm achterwaarts scrollen, met q kun je het programma afsluiten, maar ook:

7.5  grep - zoek een pattern in een string

Grep leest strings (lijntjes tekst) in, zoekt naar een bepaalde pattern (iets waaraan moet voldaan zijn) en geeft de string weer waarin hij die pattern gevonden heeft.

Je kan grep gebruiken op bestanden:

~$ grep -H /etc/rc.d/init.d/* halt

Dit toont de bestandsnaam (-H) en de string in dat bestand waarin hij de tekst "halt" gevonden heeft.

Je kan grep gebruiken op stdin:

~$ lynx -source http://www.linuxtoday.com | grep title

Dit download de html-source van de index-pagina van linuxtoday en stuurt deze source door naar de stdin van grep. Grep op zijn beurt zoekt dan deze source af en kijkt of hij in een regel "title" tegenkomt. Als dat zo is, geeft hij deze regel weer op het scherm.

Grep kent verschillende argumenten. Een handig argument is -A of -B.
Bijvoorbeeld:

~$ grep -B 5 /var/log/messages eth0

Dit geeft niet alleen de regels weer waarin eth0 staat, maar ook de 5 regels daarvoor (wat handig is voor /var/log/messages omdat de zaken ervoor vaak ook foutmeldingen zijn die je kunnen helpen met het oplossen van een probleem).

Verder kan grep ook om met reguliere expressies, iets wat vele scriptfanaten zalig zullen vinden. Een reguliere expressie geef je in na het -E argument.

7.6  cut - welbepaalde delen van strings manipuleren

7.7  sort - sorteren

7.8  cksum - Checksum genereren

7.9  csplit - splitsen naar inhoud

7.10  expand - tabs naar spaties

7.11  fmt - tekst formatteren

7.12  fold - tekst wrappen

7.13  head - eerste regels weergeven

head is een eenvoudige tool die de eerste lijnen van een bestand op het scherm toont. Standaard zijn het de eerste 10 regels, maar met de optie -lines="x" kun je x lijnen weergeven.
vb.:
~$ head -lines=1 ~/bin/bashish
#!/bin/sh
Zoals je ziet toont dit de eerste lijn van het bestand ~/bin/bashish, op die manier kun je zien dat het een shell script is.

7.14  iconv - codering veranderen

iconv converteert de gebruikte codering, aangegeven met -f codering, van karakters naar een ander opgegeven codering, aangegeven met -t codering. Standaard wordt er naar de stdout gestuurd, maar dit kan je aanpassen door --output te gebruiken.

De mogelijke opties zijn

Je gebruikt iconv dus ongeveer als volgt:

~$ iconv -f ISO-8859-13 -t CYRILLIC tekstbestand

7.15  join - regels bij elkaar brengen

7.16  md5sum - md5sum berekenen

7.17  nl - aantal regels

7.18  od - dumpen in octale of andere formaten

7.19  paste - lines bij elkaar brengen

7.20  pr - tekst klaarmaken voor te printen

7.21  ptx - index van fileinhoud maken

7.22  sha1sum - sha1sum berekenen

7.23  sum - checksum berekenen

7.24  tail - laatste regels weergeven

7.25  tr - karakters manipuleren

7.26  tsort - topologisch sorteren

7.27  unexpand - spaties naar tabs

7.28  uniq - dubbele regels wegwissen

7.29  wc - regels/woorden/lijnen tellen

wc is een commando dat het aantal woorden18, tekens en lijnen in een tekstbestand telt.
~$ wc  /tux/progs.txt
heeft bijvoorbeeld de uitvoer:

1544 13846 72120 progs.txt

Wat betekent dat het bestand progs.txt 72120 tekens bevat, die samen 13486 woorden en 1544 regels bevatten.

Chapter 8
Compressie

8.1  gzip - Comprimeren met Gzip

8.2  bzip - Comprimeren met Bzip

8.3  bzip2 - Comprimeren met Bzip2

8.4  zip - Comprimeren met Zip

8.5  unzip - Decomprimeren met unzip

8.6  tar - Tape archieven aanmaken

tar is het commando dat je gebruikt om .tar, .tar.gz en .tgz archieven aan te maken en te decomprimeren.
~$ tar xvzf bestand.tar.gz

Dit decomprimeerd het archief bestand.tar.gz
xvzf :

tar cvzf bestand.tar.gz directoryofbestand bestandofdirectory

Dit comprimeerd directoryofbestand en bestandofdirectory en alle subdirs, indien die aanwezig zijn in het bestand met de naam bestand.tar.gz.

tar xvf bestand.tar

Als je de z weglaat, dan plaatst tar de bestanden in een archief, maar comprimeerd dat niet, hierdoor neemt het archief meer plaats in, maar is het wel sneller.

Chapter 9
Vergelijkingen en verschillen

9.1  cmp - 2 files vergelijken

9.2  diff - 2 files vergelijken

9.3  diff3 - 3 files vergelijken

9.4  sdiff - interactief verschillen verwijderen

9.5  patch - inhoud updaten

9.6  comm - gesorteerde files vergelijken

Chapter 10
Computer uitdoen en herstarten

10.1  halt - stop this system

Halt zorgt ervoor dat het systeem stopt / herstart .
Men MOET root (superuser) zijn om HALT uit te voeren.
Halt heeft een opdracht aan de kernel, en zo worden alle opdrachten uitgevoerd om het systeem proper af te sluiten.
(bvb: run unmount, sync, netwerk interface, ... en alle draaiende modulles/programma's)
Als je geen runlevel 0 of 6 hebt , dan wordt ßhutdown" gestart.

opties:

10.2  Reboot - restart me please

Zie HALT. Reboot gebruikt dezelfde "wtmp" file zoals "halt" maar herstart het systeem. Halt stopt alles.
Reboot herstart softwarematig het systeem, maar indien je met oudere versies van LINUX kernels19 werkt, kan reboot voor een ßhutdown" zorgen.(alles stoppen)
Reboot is ook afhankelijk van de user runlevel (0 6)
Als je als user geen runlevel 0-6 hebt, kan je altijd met het commando ßu" naar user root veranderen.

Chapter 11
Interessant voor scripts

11.1  awk - patterns scannen en verwerken

11.2  grep - strings uit files halen

11.3  mktemp - veilig een tempdirectory maken

11.4  sed - strings manipuleren

11.5  sleep - slaap maar even

sleep laat de computer gewoon wachten voor een bepaalde duur:
Als argument van sleep geef je gewoon de tijd mee dat je wilt dat sleep 'slaapt'
Je doet dit door een getal mee te geven en daarna een optioneel teken om te zeggen wat het getal voorstelt: s voor seconden, m voor minuten, h voor uren, d voor dagen, standaard (als je niets meegeeft) wordt s gebruikt.

Voorbeelden.:

~$ sleep 10s
~$ sleep 3m 10s

Je kunt sleep voor twee dingen erg nuttig gebruiken:


Part 3
Editors en tekstverwerking


Chapter 12
Editors

12.1  Editors? - Even uitleggen

Wat is een editor?
Dat is een vraag die nog steeds een aantal computergebruikers niet kunnen beantwoorden (echt waar!), ze weten het verschil tussen een editor en een tekstverwerker niet.
Omdat het eigenlijk heel belangerijk het is om hier het antwoord op te weten, zal ik het even kort samenvatten.

Een editor is een programma dat gebruikt wordt om niet opgemaakte tekstbestanden ( ASCII, maar ook UNICODE) te bewerken. In tegenstelling tot een tekstverwerker biedt een editor dus geen mogelijkheid tot het opmaken van tekst, ook kleur kan niet gebruikt worden, hoewel sommige editors de tekst in kleur weergeven, maar deze informatie wordt dan niet opgeslagen en is afhankelijk van de syntax, ze is met andere woorden gebaseerd op bvb een computertaal zoals C (of zelfs gewoon de mogelijke opties in een configuratiebestand). Een editor wordt gebruikt voor programmeren, voor het schrijven van shell scripts (wat eigenlijk ook een vorm van programmeren is) voor het schrijven van HTML en voor het schrijven van systeembestanden , ook andere dingen, zoals dit document (de opmaak gebeurt via code's die je ingeeft, je geeft zoals in html een vorm van commando's in en een ander programma verwerkt die dan, niet de editor) worden ingegeven in editors.

12.2  Vi - VIsual editor

vi was één van de eerste screen oriented 21. Omdat momenteel zowat ieder unix systeem niet langer de standaard vi, maar een verbeterde versie: vim gebruikt die alle functies van vi heeft en nog een hoop meer, zullen we vi hier niet verder bespreken.

12.3  VI iMproved Beyond basics

VI iMproved Beyond basics is een uitgebreide uitleg over vim, voor een inleiding moet je kijken in het hoofdstuk met basiskennis p.pageref, dit hoofdstuk gaat er vanuit dat je deze basiskennis al hebt, ze nog eens herhalen zou een verspilling van bytes of papier en van tijd zijn.
De meeste functies van VIM gaan gepaard met een enorm aantal commando's, meestal zal een beschrijving gegeven worden van de functie, eventueel met een voorbeeld en daarna zal een opsomming van de commando's met een korte uitleg worden gegeven.
In deze handleiding wordt er altijd vanuit gegaan dat je minstens vim 5.6 hebt, de meeste zaken zullen ook werken in oudere versies, maar ik heb hier geen garantie voor, als je een oudere versie dan vim 5.0 hebt is het zowiezo aan te raden om een upgrade te doen omdat vim voortdurend nieuwe fantastische functies bij krijgt (ik draai momenteel zelfs een bèta versie van vim 6.0, omdat die een aantal functies heeft die ik zo indrukwekkend vind dat ik niet wil wachten op een stable release).

12.3.1  :help - referentie

De help functie van vim is één van de meest indrukwekkende die ik al heb gezien. Hij is ongeloofelijk uitgebreid, ik heb dergelijke uitgebreide en perfectionistische help functies zelf nog nooit gezien in programma's die niet (oorspronkelijk) commercieel ontwikkeld waren en ook in commercieele programma's is dit erg zeldzaam, vandaar dat ik hier even wat uitleg wil over geven, zodat je niet zelf hoeft uit te zoeken hoe alle werkt (niet dat het zo moeilijk is, maar ja).

help opvragen

Om de helpfunctie van vim op te vragen gebruik je het commando :help, je kunt dit eventueel aanvullen met een trefwoord, :help mouse geeft bvb onmiddelijk de help over het gebruik van de muis in vim.

move around - bewegen in help

Als je help opvraagt zal automatisch een nieuw venster worden geopend met het help bestand erin.
Als je dit venster groter wilt maken doe je dat met Ctrl-w [+] om het kleiner te maken vervang je + door -, je kunt het venster meerdere lijnen groter (of kleiner) maken in één keer door voor de + (of -) een getal te typen, bvb Ctrl-w 5+ vergroot het venster 5 regels.
Met Ctrl-w [j] ga je naar het onderliggende venster (daar is het bestand dat je aan het edditen was voor je help opvroeg), met Ctrl-w [k] ga je terug naar het bovenliggende venster.
Je kunt het help venster sluiten met Ctrl-w q (zorg ervoor dat je in het help venster bent als je dit uitvoert, zodat je niet het venster sluit met het bestand dat je aan het bewerken bent.

In het help venster kun je bewegen zoals in elke gewoon bestand, als syntax highlighting aan staat22 zal het help bestand veel duidelijker zijn.

Doorheen het help bestand zijn cross-references aangebracht, deze zijn omgeven door |horizontale lijnen|, je kunt er naartoe gaan door er met de cursor 'op' te gaan staan en Ctrl-] te 'doen', als je op een Belgisch toetsenbord werkt, hoef je geen AltGr te gebruiken voor die ], gebruik gewoon de toets waar die op staat en vim doet het ook, meer nog, het zal niet lukken als je de AltGr toets wel gebruikt.
Met behulp van de toetsencombinaties Ctrl-t en Ctrl-o kun je terugkeren naar de plaats waar je laatst zo'n cross reference hebt gebruikt.
(moest je muis werken, via GPM of vanuit een xterm, dan kun je ook op een reference klikken, dat heeft het zelfde effect als Ctrl-])

Dit zou voldoende moeten zijn om je weg te vinden in de help functie, je zult deze waarschijnlijk vaak gebruiken als je zoals ik nogal vergeetachtig bent en nu en dan eens een bepaalde toetsencombinatie of een bepaald commando vergeten bent.

12.3.2  hjkl - moving around

Er zijn in vim verschillende manieren om je cursor in vim te verplaatsen, in insert mode is de gemakkelijkste manier waarschijnlijk om gewoon met de pijltjestoetsen en PageUp en PageDown te werken, maar in de command mode zijn er veel betere methoden.

Om te beginnen zijn er de toetsen h, j, k en l, deze liggen alle vier naast elkaar en zijn het gemakkelijkst om respectievelijk naar links, boven, onder en rechts te gaan (denk eraan: op en neer in het midden, links en recht aan de buitenkant), als je voor het indrukken van één van deze toetsen een getal ingeeft zal de actie zoveel keer worden uitgevoert als het getal groot is.

Nog even ter herinnering, voor alle commando's in vim kun je een getal invoeren, waardoor dat commando evenveel keer als dat getal wordt uitgevoerd, dit kan handig zijn om bvb 5 regels te dalen.
Andere mogelijkheden om je te verplaatsen in een vim zijn:

Dit zijn zo ongeveer de belangerijkste manieren om je te verplaatsen in een bestand in vim. Nogmaals, vergeet niet dat je er een getal kun voorzetten om ze meerdere malen te laten uitvoeren.

12.3.3  search - zoek en gij zult vinden

Naast de al vermelde manier om te zoeken met behulp van / zijn er nog enkele andere mogelijkheden:

In zoektermen kunnen een aantal speciale tekens gebruikt worden, die dan niet identiek gezocht worden, maar een invloed hebben op de zoekactie:

12.3.4  markers - markeerstiftjes

Terwijl je een vim bestand aan het maken bent, kun jer er posities in markeren, je doet dit met behulp van m :

Op een plaats die je wilt markeren duw je op m en geeft onmiddelijk daarna een letter in, deze letter is het amrkeerteken, dit moet een letter zijn en dit is case sensitive26.
Om dan van gelijk waar in je bestand rechtstreeks naar die plaats te gaan moet je gewoon vanuit commando modus op ` duwen en dan de letter die overeen komt met de marker ingeven.

Met het commando :marks kun je alle markeringen in je bestand weergeven.

12.3.5  insert - invoeren

Om een bestand in een reeds geopend bestand in te voeren gebruik je het commando :r < file > .
Om de standaard uitvoer van een commando in een reeds geopend bestand in te voeren gebruik je het commando :r! < commando > .

12.3.6  visual mode

De visual modus is een modus waaring je tekst kun selecteren om er vervolgens hepaalde acties op uit te voeren.

Door op v of V te drukken kom je in visual mode, je kunt nu met behulp van de pijltjestoetsen selecteren (je moet v indrukken aan de plaats waar je je selectie wil beginnen of eindigen).
Met behulp van Ctrl-v kom je ook in visual mode, maar dan wel een nog krachtigere versie, hiermee kun je namelijk rechthoeken selecteren, probeer het eens en je zult zien wat ik bedoel.

Als je per ongeluk in visual mode zou geraken kun je die altijd beëindigen met behulp van Ctrl-C.

Als je in visual mode bent kun je naar het andere eind van je selectie gaan met behulp van de toets o .

Eens je alle hebt geselecteerd geef je het commando in dat je wilt uitvoeren:

12.3.7  Undo/Redo

In VIM kun je oneindig ver ongedaan maken met u . Redo doe je me Ctrl-R

12.4  Joe - Joe's own editor

12.4.1  joe? wat is dat nu weeral

is een editor die tamelijk eenvoudig is in gebruik, maar toch noch een degelijke kracht kan bieden, goed voor als je geen weg kunt met vi of emacs.
Bovendien eist Joe zeer weinig van je systeem, zodat het een perfecte editor is voor zeer zwakke systemen27.

12.4.2  Gebruik

is een editor die gebaseerd is op , als je wilt dat joe nog meer op wordstar lijkt, kun je hem starten met , indien je de voorkeur geeft aan , dan kun je joe starten met en indien of jouw favoriet is, dan kun je joe starten met respectievelijk en .

Joe in Joe-modus

Start Joe met :

joe bestandsnaam

om het betand met de naam bestandsnaam te openen, je zit nu in indexjoe en kunt beginnen editen, je moet nie eerst naar een speciale modus gaan zoals bij vim. Met de pijltjestoetsen kun je bewegen en met Ctrl-KH krijg je een help schermpje. Daarin staat [^] voor Ctrl. 28

Je kunt nu de volgende commando's gebruiken:

.joerc - Configureer joe

In het bestand in je kun je persoonlijke instellingen voro joe ingeven.

Meer info volgt later (hoop ik ;-)

12.5  ed - de oudste

12.5.1  ed - ?

ed is de standaard editor onder unix, standaard, omdat hij al bij de eerste versie van unix zat (en nog altijd bij zowat iedere unix versie wordt geleverd), want eigenlijk is momenteel vi de standaard unix editor geworden, om de simpele reden dat ed ouderwets geworden is, achterhaald.
Dit is omdat ed een wat men noemt line oriented editor is: dit betekent dat hij niet zoals de meeste huidige editors gebaseerd is op een scherm, waarbij je scherm kan gezien worden als een soort venster (zoals in een venstersysteem als X), maar op 1 lijn, je hele editor is gebaseerd op commando's, nog veel meer dan in emacs of vi
Hoewel ed eigenlijk achterhaald is, wil ik het hier toch nog vermelden, omdat ik een beetje nostalgisch ben en omwille van zijn historische waarde, want heel lang (tot in het begin, of zelfs het midden van de jaren 80) was ed de enige editor die je echt moest kennen, want hij was de enige waarvan je zeker was dat je hem op ieder unix systeem aantrof, hoewel er andere editor beschikbaar waren, waren die niet op elk systeem te vinden, dit duurde tot dat vi volledig gestandaardiseerd was.

12.5.2  ed - een voorbeeldje

Ik zal eerlijk zijn, eigenlijk wist ik voordat ik begon aan deze tekst zelf niet hoe ed werkte en met behulp van de man-pages heb ik het concept ook niet echt begrepen, maar de GNU-infopages gaven me wel een duidelijk genoeg uitleg om ed onder de knie te krijgen. Ik vind het persoonlijk geen slecht idee om ed te leren, omdat je dan weer iets meer kunt en omdat je er dan een idee van krijgt hoe men vroeger met unix moest werken, als je dat al deed zul je nooit meer zeggen dat vi(m) ingewikkeld is!

Juist omdat ed zo'n ongewone manier van editten is, zal ik het stap voor stap uitleggen met een voorbeeld, op deze manier zou het eigenlijk zeer makkelijk moeten zijn ed te leren. Ik zal hierbij gebruik maken van de volgende 'conventies': $ stelt een unix prompt voor en # stelt commentaar voor, dit wordt niet ingegeven in je pc en verschijnt ook niet op het scherm. Al de rest is tekst die je in ed op je scherm krijgt, ofwel omdat je ze hebt ingegeven met je toetsenbord, ofwel omdat dat uitvoer van ed is.

~$ ed
# als je ed start, ben je in command modus,
# je kunt nu naar input mode gaan met behulp
# van een commando, omdat we een bestand willen
# aanmaken, zullen we eerst tekst toevoegen aan
# de buffer van ed, deze is nu nog leeg, omdat
# je ed niet hebt gestart met een bestandsnaam als
# argument en je ook nog geen tekst hebt ingegeven
#
# tekst toevoegen aan het eind van de tekst is 'appenden'
# je gebruikt hier dus voor de append modus, die je berijkt
# met het commando 'a' . Typ dus 'a' na de 'prompt' en druk
# op enter.
a
# je bent nu in de input modus en kunt een tekst ingeven.
Dit is de tekst die ik toevoeg aan de buffer.
Ze bestaat uit drie regels tekst.
Die wordt beeindigt door een punt op een apparte lijn.
.
#
# De punt op de laatste lijn sluit de input modus af
# hij wordt dus niet toegevoegt aan het einde van de
# Hij is te vergelijken met [ESC] in vi
#
# Nu wil je het bestand opslaan, de buffer wegschrijven
# naar een bestand, dit doe je met het commando w
# (van write natuurlijk)
w bestandsnaam
#
# waarbij je bestandsnaam natuurlijk vervangt door de gewenste
# bestandsnaam, bvb test
#
# ed zal na het opslaan tonen hoe groot het opgeslane bestand is,
# in bytes
135
#
# beeindig ed met het commando q (quit)
q
$
$ ls -l
total 5
-rw-r-r- 1 jan users 3500 Aug 19 20:51 ed.tex
-rw-r-r- 1 jan users 135 Aug 19 20:51 test
# zoals je kunt zien in de uitvoer van ls -l is de grootte van
# test inderdaad 135 bytes.
#
# We zullen nu het bestand opnieuw openen om er wijzigingen
# in aan te brengen, want dat moet je natuurlijk ook kunnen
# met een editor.
#
$ ed test
135
# als je ed start met een bestandsnaam, wordt dit bestand in de
# buffer geladen en wordt het aantal tekens (= bytes) afgedrukt
# We willen nu natuurlijk zien wat er in het bestand staat: dit
# doe je met het commando 'p', je moet hierbij ook aangeven welke
# regels je wilt tonen, ',' staat voor alle lijnen, '3,7' staat
# voor lijn drie tot zeven, de lijnen moet je voor het commando
# ingeven.
,p
Dit is de tekst die ik toevoeg aan de buffer.
Ze bestaat uit drie regels tekst.
Die wordt beeindigt door een punt op een apparte lijn.
# Op de eerste lijn staat 'de tekst die ik toevoeg aan
# de buffer, je voegt deze tekst echter niet toe, hij
# is al lang toegevoegt, je wilt deze fout natuurlijk
# verbteren, dit is het vervelendste aan ed, de manier
# waarop dit gebeurt is veel omslachtiger dan in screen-oriented
# editor.
# Eerst moet je naar de juiste regel gaan, nu is dit gemakkelijk
# het is de eerste, maar soms moet je wat tellen, best kun je dan
# nog eens lijnnummerp doen, waarbij je lijn nummer vervangt door
# het nummer dat je denkt dat het is, als controle.
# Je gaat naar de lijn door het nummer in te geven en dan
# op [enter] te duwen:
1
Dit is de tekst die ik toevoeg aan de buffer.
# Zoals je hebt gemerkt wordt de lijn nog eens afgedrukt.
# Je doet dit moet nu toevoeg vervangen door heb toegevoegd.
# dit doe je met het commando s (substitute):
s/toevoeg/heb toegevoegd
Dit is de tekst die ik heb toegevoegd aan de buffer.
# zoals je ziet wordt de nieuwe tekst afgedrukt op het scherm.
# Je kunt het bestand opnieuw opslaan:
w test
142
# En ed verlaten.
q
$

Dit voorbeeldje zou genoeg moeten zijn om je een idee te geven van hoe ed werkt en om ervoor te zorgen dat je er zelfs iets mee kunt doen. De uitleg was nogal uitgebreid zoals je hebt kunnen merken, dit was omdat ik zeker wou zijn dat je alles begrijpt, de rest van de tekst over ed zal weer meer in een pocket-reference stijl zijn. Normaal zou de voorgaande, uitgebreide uitleg voldoende moeten zijn om de rest met slechts een kleine toelichting te begrijpen.

12.5.3  ed - en de rest?

Hier volgen nog een aantal commando's (en manieren van commando's vormen), tenslotte kan ed nog veel meer:

Mischien vraag je je af of je aan de buffer van ed kan, terwijl het programma aan het draaien is. Dit kan je: in /tmp staan de bufferbestanden, ze hebben een naam van de vorm ed.*
Dit kan interessant zijn om te weten: als ed om 1 of andere manier abnormaal wordt beeindigt, heb je een kans dat dat bufferbestand er nog is en dat je werk dus niet verloren is, normaal wist ed wel het bufferbestand als het beëindigt wordt.

Natuurlijk zijn er ook een aantal command line options voor ed:

Dit is ongeveer alles dat er te vertellen is over ed, (ik heb tijdens het schrijven van de tekst splitvt gebruikt op mijn console-only systeem, met bovenaan de info pages van ed en onderaan vi (neen, niet ed), en ik heb slechts een minimaal aantal zaken weggelaten (ze waren me te ingewikkeld om uit te leggen), als je ze toch perse wilt weten kun je info ed opvragen en dan in 'menu' Regular expressions kiezen.

Ik hoop dat je nu een idee hebt van hoe men vroeger een tekst in unix typte, ik begrijp het systeem in ieder geval en hoewel ik het zou kunnen, ben ik toch wel blij dat VI iMproved mijn computer heeft verrijkt :-)
btw, ik heb trouwens ook ondekt dat ed waarschijnlijk nog altijd interressant kan worden gebruikt in shell scripts, met behulp van de hier niet vermelde regular expressions, op een manier die met screen oriented editors niet mogelijk zou zijn, hoewel ik ervan overtuigd ben dat de zelfde zaken met behulp van cat, grep, find, cut,... en wat redirection ook mogelijk moeten zijn, denk ik toch dat ze met ed gemakkelijker moeten zijn. Op dit gebied is ed dus nog altijd interessant, en is het mischien wel de moeite waard voor mensen die veel shell scripts schrijven om er eens mee te gaan experimenteren.

12.6  emacs - de grootste

12.7  aee - easy editor

aee (another (easy) editor) editor is een console editor. Er is ook een Xversie Xaee.
Veel is er niet over te zeggen. Het is supper gemakkelijk, en zeker doordat de menu's in console met een popup werken.

hoofd menu:


Esc  menu       ^P   prev page  ^K   del char   ^O   end of lin ^Y   adv word   ^G^P prev buff  ^G^V forward    ^J   carrg rtrn
^E   command    ^L   del line   ^G^K und char   ^U   mark       ^Z   replace    ^G^X fmt parag  ^G^R reverse    ^H   backspace
^T   top of txt ^G^L und line   ^F   search     ^X   cut        ^G^Z repl prmpt ^G^X fmt parag  ^G^B append     ^G   GOLD
^B   end of txt ^W   del word   ^G^F srch prmpt ^C   copy       ^G^C clear line ^A   adv char   ^G^D prefix
^N   next page  ^G^W und word   ^D   beg of lin ^V   paste      ^G^N next buff  ^G^Y prev word  ^R   redraw



 
                                                           +---------------------+
                                                           | main menu           |
                                                           |                     |
                                                           | a) leave editor     |
                                                           | b) help             |
                                                           | c) edit             |
                                                           | d) file operations  |
                                                           | e) redraw screen    |
                                                           | f) settings         |
                                                           | g) search/replace   |
                                                           | h) miscellaneous    |
                                                           |                     |
                                                           | press Esc to cancel |
                                                           +---------------------+



Dus zoals je ziet, alles wijst zichzelf uit. Het heeft zijn naam easy niet zomaar.

Chapter 13
LaTeX

13.1  LaTeX - Een introductie

13.1.1  Latex - Wat is dat nu weeral?

LATEX is een geavanceerd systeem om tekst op te maken, het is in tegenstelling tot de meeste moderne tekstverwerkers zoals word en StarOffice niet wywiwyg 30 maar dit maakt het niet minder goed, in tegendeel, velen (waaronder ikzelf31) vinden het veel beter.

LATEX schrijf je als LaTeX in ascii, dus niet latex of Latex, maar meestal houd men daar geen rekening mee.

Naar schatting 50 % van alle boeken en 90 % van alle wetenschappelijke werken is opgemaakt in LATEX en dit heeft zo zijn redenen: LATEX32 is zodanig ontwikkeld dat het niet zo zeer mooie, maar vooral duidelijk en aangenaam leesbare en goed gestructureerde werken zou af leveren.33
Bovendien is LATEX enorm geschikt voor het opmaken van wiskundige formules, want het is gebaseerd op het virtueel34 bugfree programma TEX dat speciaal gemaakt werkt voor het mogelijk maken van opmaak met een pc, op het eind van de jaren 70 (dus nog voor de ibm pc).

Velen die voor het eerst in contact komen met LATEX vinden dat het ouderwetse brol is die ongebruiksvriendelijk is, maar zowat iedereen die erop doorgebeten heeft is er vol lof over, ik vind persoonlijk zelfs dat het hier gaat om een toonbeeld van gebruiksvriendelijkheid, ook al heeft het geen flashy GUI interface, dit is wel op voorwaarde dat je het systeem goed kent, anders wordt het een beetje vervelend (ik heb dat zonet ervaren, ik kreeg namelijk een eenvoudig tekentje als [^] in dit document, dat is dan weer het nadeel van LATEX, je moet voor alles commando's kennen en als je net zoals ik slechts een beginner bent, doet het nu en dan wel eens vervelend.

13.1.2  Intro - essentieel om te weten

LATEX maakt gebruik van bestanden met de extentie .tex . Het resultaat, de uitvoer is standaard .dvi , maar kan met behulp van speciale programma's ook html, pdf of nog een ander formaat zijn, dvi kun je omzetten naar ps met dvips , dvi bestanden kun je bekijken met xdvi en in terminal modus met dvisvga of tmview (ik kon hier helaas geen homepage voor vinden, maar ik heb de auteur gemaild met een vriendelijk verzoek een homepage adres te geven indien hij er een heeft. Als je de programmas wilt brengt een search op yahoo of een andere zoekmachine je al heel ver.)

In een LATEX document plaatst men commando's die de tekst opmaken. Elk (of toch bijna elk) commando begint met \, dit teken kan ook niet zomaar gebruikt worden, indien je het toch wilt geruiken, geef dan $\backslash$ in.

Andere tekens die je niet zomaar kunt gebruiken zijn: $, &,%, #, _, {, }, ~,[^]. (Er zijn er nog meer, maar dit zijn de meest voorkomende). Je kunt deze tekens verkrijgen met:
\$, \&, \%, \#, \_, \{, \}, \~, $\hat{}$

Een regel beëindig je met \\, een niewe paragraaf begin je door een regel open te laten. Meerdere spaties, tabs en meer dan één lege regels worden genegeerd, als je een lijn wilt overlaten zonder een nieuwe paragraaf te beginen, kun je het commando \newline ingeven.

Leuk om weten: met het commando \TeX{} voeg je TEX in en met \LaTeX{} voeg je LATEX in. LATEX spreek je uit als lei - tich (korte i zoals in zit) of als lach-tich.

Commentaar voeg je in met % dan wordt de tekst niet weergegeven, ik geef bijvoorbeeld aan de top van de meeste van mijn tex bestanden aan wat ze bevatten.

Ieder LATEX tex bestand ziet er als volgt uit: \documentclass{article, report, book of slide}
Commando's (dit gedeelte heet men de preamable).
\begin{document}
De inhoud van het document.
\end{document}

De commando's in de preamable geven info over de layout van het document, over auteur, titel en geven de mogelijk om extra info in te voegen en LATEX uit te breiden.
Vlak na \documentclass kun je nog opties invoegen tussen [ en ] en gescheiden door komma's. De belangerijkste optie is a4paper die ervoor zorgt dat er papier van het formaat a4 wordt gebruikt, andere mogelijkheden zijn a5paper, b5papaer, letterpaper; andere veelgebruikte opties zijn 10pt,11pt,12pt (die de grote van de letters bepalen, standaard is 10pt), twocolumn zorgt ervoor dat het document in twee kolommen is in plaats van in een.
Tussen de { en } plaats je het type document:

In de preamable kun je ook nog \author{auteur \and eventuele tweede auteur} en \title{titel van het document} ingeven. Dan kun je in het document \maketitle ingeven om een titelpagina (of titel in article's en slide's) je kunt ook een table of contents invoegen met \tableofcontents.

13.1.3  .tex - een voorbeeldje

Is het allemaal niet erg duidelijk? Geen nood, hier komt een eenvoudig LaTeX bestandje.
%latexvoorbeeld.tex
\documentclass[a4paper]{article}
\usepackage{latexsym}
\usepackage[dutch]{babel}
\author{Jan Keirse}
\title{Een simpel LaTeX Voorbeeld}

\begin{document}
\maketitle
\tableofcontents

\chapter{ LaTeX voorbeeldjen}
Dit is een \emph{simpel} LaTeX voorbeeldjen.\\
\section{Dit is een sectie in het eerste hoofdstuk}
boem\\
\LaTeX{} is goed want:
\begin{itemize}
\item Het draait op alle pc's
\item Het is snel
\item Het is free
\item Het genereert mooie proffesioneel ogende en duidelijke, overzichtelijke documenten.
\item NOg onoemelijk veel meer redens.
\end{itemize}

\chapter{Tweede, lege hoofdstuk, dada}
Dat was het, I hope you like it
\end{document}
\tth_fileclose0x80e8468  


Part 4
Bestanden en directory's


Chapter 14
Algemene informatie over bestanden

14.1  Hoe herken je configuratiebestanden?

Veel configuratiebestanden beginnen of eindigen met rc, in de home directory zijn ze over het algemeen verborgen (de naam begint met andere woorden met een punt).

14.2  Waar vind je configuratiebestanden?

Er zijn 2 belangerijke verzamelplaatsen voor configuratiebestanden:

Daarnaast zijn er ook een aantal programma's die hun config files elders opslaan, zoals TEX, KDE, GNOME,... Het programma locate kan vaak helpen bij het localiseren van die bestanden.

14.3  Algemeen geldende conventies voor configuratiebestanden

Bijna alle programma's bieden de mogelijkheid om comments35 in te geven door er een # teken voor te plaaten, in sommige gevallen is het een %.

14.4  Welke extenties vind je in een unix systeem?

Hier volgt een tabel met `alle' extenties die er zijn en die je dus kunt tegenkomen op een unix systeem. De lijst is nog ver van volledig. Er wordt telkens vermeld wat het bestand is (of kan zijn) en eventueel één of meer verwijzingen naar programma's die iets te maken hebben met die formaat.

extentieProgramma-infoMeer info...
.cC sourcecodegcc
.cppC++ sourcecodeg++
.oObject bestandgcc/make
.sdwStarOffice documentconvertor-console reader?
.shShell scriptp.pageref
.texTEXof LATEXbestandp.pageref
.vimVim scriptp.pageref

Chapter 15
User configuratie bestanden

15.1  Algemene bestanden

Er zijn een aantal algemene bestanden die nie specifiek bij een programma horen:

15.2  Programmaspecifieke bestanden

Zie de info over het betreffende commando voor meer uitleg.

ProgrammaBestand(en)Meer info...
Bash /.bashrcp.pageref
 /.bash_history
Emacs~/.emacsp.pageref
Fetchmail~/.fetchmailrcp.pageref
Ftp~/.netrcp.pageref
Pine /.pinercp.pageref
Vim~/.vimrcp.pageref
~/.vim/

Chapter 16
Systeem configuratie bestanden

16.1  General

16.1.1  kernel

16.1.2  Opstarten

Bij het opstarten zijn vooral de initscripts belangerijk, deze hebben bij verschillende distributies van linux een andere plaats. Een overzicht:
DistributieLocatie
SuSE (vroeger)/sbin/init.d
/etc/rc.d (symlink)
SuSE (nu)/etc/init.d
/etc/rc.d (symlink)
De Rest: normaalgezien/etc/init.d
Andere belangerijke bestanden zijn:
/etc/profile (scripts die worden uitgevoerd bij het inloggen van de gebruikers)
/etc/profile.d (directory met nog meer zo'n scripts)

16.1.3  other

16.2  Programma specifiek

ProgrammaBestand(en)Meer info...
cron/etc/crontab...
/var/cron/tabs
man/usr/local/manp.pageref
samba/etc/smb.conf...

Chapter 17
Logbestanden


Part 5
Administratieve tools


Dit Hoofdstuk moet nog een onderverdeling krijgen, alle voorstellen zijn welkom op mailto:jan.keirse@pandora.be

Chapter 18
Software managment

18.1  RPM - Eenvoudige software-managment

RPM 36 staat voor RedHat Package Manager. Het is een tool die voornamelijk gebruikt wordt om rpm-files te extracten en de inhoud ervan te installeren op een systeem. RPM heeft talloze mogelijkheden. We beginnen bij het begin...

18.1.1  Software manipuleren

Om met de deur in huis te vallen: hier zijn de meest gebruikelijke commando's die je best van al kent:

18.1.2  Software manipuleren : Installatie

Je installeert een rpm-file met het commando rpm -i rpm-file. Omdat dit niet veel zegt (output naar het scherm) is het handig om er de opties -v (verbose) en -h (hash-display) bij te plaatsen. Bijvoorbeeld:

~# rpm -ivh moonwalk-6.2.4-2.i386.rpm
moonwalk ####################

De 50 (hier 20) hashes tonen in welke mate de installatie voltooid is.

18.1.3  Software manipuleren : Upgraden

Er zijn 2 manieren op te upgraden.

Bijvoorbeeld:

~# rpm -Fvh moonwalk-6.2.4-2.i386.rpm
~# rpm -Fvh moonwalk-6.2.6-1.i386.rpm
moonwalk ####################

Je ziet dat hij de eerste keer moonwalk niet wou installeren. Dit is omdat moonwalk al geinstalleerd is, en wel met eenzelfde versie (dus niet ouder). De tweede keer werkt het wel : 6.2.6-1 is groter dan 6.2.4-2.

18.1.4  Software manipuleren : Verwijderen

Je verwijderd software door het -e-argument mee te geven. Echter, nu werk je niet meer met een rpm-file als argument, maar met de softwaretitel. Bijvoorbeeld:

~# rpm -e moonwalk

Zoals je ziet wordt er geen melding gegeven. Dit is normaal. Als je werkelijk informatie wenst, kan je -vv gebruiken, maar dit zal meestal wel meer informatie geven dan dat je wenst.

18.1.5  Software manipuleren : Informatie inwinnen

Je wint informatie in over een package door eerst het argument -q mee te geven (query). Daarnaast geef je mee welke informatie je wenst. De meest courante zijn:

Verder moet je ook meegeven waarvan je informatie wenst (welke package). De meest courante zijn:

Zoals je al kan vermoeden, kan je maar 1 optie meegeven over _welke packages_ je wil queryen, maar wel meerdere over _wat_ je wil weten. Bijvoorbeeld:

~# rpm -qi moonwalk
~# rpm -qf /usr/bin/moonwalk -il

18.1.6  Packages verifieren

Elke package bevat informatie over de files die hij omvat. Dergelijke informatie is zeer handig om later de integriteit van je systeem te controleren. Grootte van de file, eigenaar, permissies, modificatie-tijd, md5sum, ... worden allemaal bijgehouden. Om de files van een package te verifieren gebruik je het -V-argument. Om aan te duiden welke packages je wil verifieren gebruik je dezelfde argumenten als deze van hierboven... Interpretatie van de output van deze commando's zijn te vinden in de man-page van RPM. Bijvoorbeeld:

~# rpm -V moonwalk
~# rpm -V -f /usr/bin/moonwalk

18.1.7  Signatures controleren

Vele packages zijn gesigneerd door hun maker (met PGP/GPG). Je kan dus deze packages controleren op fouten, kijken of ze werkelijk van die persoon zijn enzomeer... Hiervoor moet je het --checksig-argument meegeven. Bijvoorbeeld:

~$ rpm --checksig moonwalk-6.2.4-2.i386.rpm

18.1.8  Dependencies

RPMs hebben ook iets wat velen als `erg' beschouwen maar eigenlijk een goede aanwinst zijn tov source-compiling e.d. Maar je moet wel de logica erachter zien.
Dependencies zijn zaken (files, package-namen of functies) die een systeem moet bevatten alvorens een rpm die die dependencie heeft correct wil installeren. Neem als voorbeeld moonwalk dat afhankelijk is van libmoonwalk en ld-linux.so.6. De dependencies van moonwalk zijn dus
Als libmoonwalk nog niet op het systeem geinstalleerd is, zal RPM dat melden met een dependencie failure. Als ld-linux.so.6 niet op het systeem staat, of niet door een rpm werd geleverd, zal RPM dat ook melden met een dependencie failure . Het probleem is dat libmoonwalk bijvoorbeeld ook afhankelijk is van iets anders, en dat er zo een grote ketting wordt gevormd van dependencies... Een manier om dit op te lossen (behalve manueel de dependencies te resolven) is gebruik maken van tools die dat voor jouw doen. Meer daarover later.
Er is natuurlijk een manier om deze dependencies te overrulen (wat handig is als je bepaalde files manueel hebt toegevoegd zonder RPM):

18.1.9  Special arguments

Nog enkele argumenten die vaak voorkomen (in sommige gevallen):

18.1.10  Handige tools

Er zijn verschillende tools in omloop die voornamelijk dienen om eenvoudig rpm's te installeren. Ikzelf heb weinig ervaring met deze, dus uitgebreid kan ik er nog niet op voortgaan.

18.1.11  Handige tools : urpmi

urpmi 37 handelt dependencies af door een lijst op te stellen van alle RPMs die beschikbaar zijn, en daar de dependencies op te zoeken. urpmi wordt gebruikt door RPMDrake, die eigenlijk een grafische front-end is van urpmi.

18.1.12  Handige tools : apt-get

Apt-Get 38 is recent geport naar RPM door Conectiva 39 en wordt vaak beschouwd als de beste package manager add-on die een console-freak maar kan wensen. En idd, apt-get is zeer simpel in gebruik.

18.2  ldconfig - libraries beheren

ldconfig is een relatief belangrijke tool die de nodige links en cache aanmaakt, gericht naar de meest recente libraries die hij kan vinden in de directories gespecifieerd door /etc/ld.so.conf (en /lib en /usr/lib, die hij standaard al doorzoekt). Om de juiste versies te weten controleert ldconfig de headers en namen van de libraries die hij tegenkomt. Symbolische links worden genegeerd.

Chapter 19
Process managment

19.1  kill - process killen bij PID

kill stopt een programma onmiddelijk en onvoorwaardelijk, handig bij een programma dat vast loopt.
Je voert het als volgt uit:
~$ kill -9 < PID >
waarbij < pid > het process ID is van het programma dat je wilt 'killen', je kunt dit te weten komen met behulp van het programma ps.
-9 is optioneel, maar zonder werkt het soms niet, dus gebruik het maar gewoon.

19.2  killall - process killen bij naam

killall doet hetzelfde als kill, maar op een eenvoudigere manier:

~$ killall programmanaam

Stopt het programma dat zich aan linux voorstelt aan programmanaam (dit is niet perse het commando).

Chapter 20
User managment

20.1  su - superuser

su is een heel eenvoudig, maar zeer handig programma: het heeft je superuser rechten als je als gewone gebruiker ingelogd bent (let wel, je hebt het root paswoord nodig).
Typ gewoon su in een terminal, geef je root paswoord in en je werkt als root, als je su start met het argument -p worden de meeste environment variables van de gewone gebruiker behouden, dit is handig omdat je bvb zo direct toegang hebt tot de x-server.

Je kunt ook

~$ su username
doen, zo log je in als een specifieke user.

su kun je verlaten met behulp van het commando exit.
Met de optie -p blijven alle environment variables behouden, ze worden dus niet veranderd naar die van de gebruiker, deze optie gebruiken is de handigste manier om onder su toegang te hebben tot de X-server, indien je die standaard hebt (het gaat ook met een setenv commando eens je al su hebt uitgevoerd).

Interessant detail: sommigen zeggen dat inloggen als gewone user en dan su gebruiken voor systeemadministratie veiliger is dan gewoon inloggen als root, ik weet niet of het waar is, maar zeker als je xterm's gebruikt in plaats van enkel eenconsole (zoals ik, ik vind dat handiger omdat je dan meer terminals hebt), is het handiger, omdat je dan bvb makkelijker een BitchX kunt starten, als root doe je dit namelijk best niet (want dat is wel zeer onveilig!)

Chapter 21
Gegevens opvragen

21.1  getent - systeeminformatie

getent haalt informatie uit een systeemdatabase. De manier van opereren is:
~$ getent database [key ...]

De mogelijke databases zijn aliases, ethers, group, hosts, netgroup, networks, passwd, protocols, rpc, services of shadow.

getent doet eigenlijk niet veel meer dan de nodige database greppen op een bepaalde key, of gewoon compleet weergeven.

Voorbeeld:

~$ getent passwd root
root:x:0:0:root:/root:/bin/bash

~$ getent services ssh
ssh 22/tcp

21.2  locale - locale instellingen

Het commando locale geeft informatie weer over lokale instellingen (geografisch aspect). Zonder argumenten geeft locale een samenvatting weer over de huidige lokale settings, gedefinieerd door de LC_*-variabelen.

Argumenten zijn:

De variabelen die locale kent staan vermeld in de manpage (man locale.

Enkele voorbeelden:

~$ locale -a | grep be
be_BY
be_BY.utf8

~$ locale -k LC_MESSAGES
yesexpr=``[^][yY]''
noexpr=``[^][nN]''
yesstr=``''
nostr=``''
messages-codeset=``ANSI_X3.4-1968''

21.3  tload

tload is een programma dat `grafisch' het gemiddelde systeemgebruik weergeeft (op een tty naar keuze).

Het gebruik is zeer eenvoudig: typ gewoon eens tload, als je niet onmiddelijk begrijpt wat er bedoeld wordt: start eerst tload, terwijl er niets anders draait, begin vervolgens een hele reeks zware programma's te starten, dan zul je het onmiddelijk begrijpen.

Syntax:

~$ tload [-V] [-s schaal] [-d vertraging] [tty]

21.4  uname

uname is een commando om systeeminformatie op te vragen, het kan verschillende gegevens over je systeem weergeven:

Met de optie -a heeft het programma alle informatie weer die ze kent.
vb.:

~$ uname -a
Linux www.mylinux.local 2.2.14 #1 SMP Thu Feb 17 11:19:33 MST 2000 i586

Uitleg: ik zal telkens zeggen wat iedere uitvoer is en welke command line option je moet gebruiken om enkel deze info op te vragen (tussen haakjes).

21.5  zdump - tijd elders

Met zdump kan je zien hoe laat het is in een andere tijdzone. Dit doe je door simpelweg

~$ zdump < tijdzone >

te typen. Als je bijvoorbeeld wil weten hoe laat het is in New York (tijdzone is daar America/New_York ), dan type je

~$ zdump America/New_York

Als je niet weet welke tijdzone je moet nemen moet je tzselect gebruiken.

21.6  gegevens over gebruikers

21.6.1  who

who geeft informatie over de gebruikers die zijn ingelogd. Als je twee argumenten meegeeft die geen optie zijn (bvb am i = > who am i), dan geeft who enkel informatie over de user die het commando aanroept.

vb.:

~$ who
jan tty1 Aug 27 12:58
jan tty2 Aug 27 13:04
root tty3 Aug 27 13:07
De output spreekt voor zich: de username, op welke terminal hij is ingelogd en wanneer.

Mogelijke opties zijn:

21.6.2  whoami

whoami , Who Am I?, drukt de username af, identiek aan logname en id-un.

21.6.3  id

id geeft informatie weer over de gebruiker:
~$ id
uid=100(jan) gid=100(users) groups=100(users),126(extragroepken)

hierbij is uid=100(jan) het uid en de username (je kan deze opvragen met de optie -u, -user), gid=100(users) is de group id en naam (op te vragen via -g -group), en groups=100(users), 126(extragroepken) is een lijst van andere bgroepn waartoe de user behoort (op te vragen via -G, -groups)
Als je aan één van deze commando's nog eens -name of -n toevoegt, krijg je enkel de namen, zonder de ID's.
Als je aan de in plaats van -n of -name -r of -real toevoegt, dan krijg je enkel de ID, niet de naam.

21.6.4  groups

groups heeft de groupen weer waarvan een gebruiker lid is, zonder argumenten, de groupen van de huidige gebruiker, als je een username meegeeft als argument (groups username) alle groepen waarvan de gebruiker in kwestie lid van is.

21.6.5  users

users heeft de naam van de gebruikers die ingelogd zijn.

21.6.6  logname

logname heeft de inlognaam weer, dit werkt echter niet altijd, ik heb het bvb geprobeerd in een twin term (deel van de Text WINdows manager, een tekst-modus window manager), en daarin werkte het niet, id -u -n doet het hier echter wel en heeft identiek dezelfde output.

Chapter 22
Locale instellingen maken

22.1  tzselect - selecteer de timezone

tzselect vraagt de gebruiker informatie over zijn geografische ligging, waarmee hij dan de juiste tijdzone geeft. Deze kan de gebruiker dan in bijvoorbeeld  /.bashrc steken zodat alle programma's deze informatie kunnen gebruiken.


Part 6
Networking en Internet


Chapter 23
Standaard netwerk-tool

Chapter 24
Security

24.1  GnuGPG - encryption

24.1.1  GnuPG

GnuPG 40is een open-source en gratis tool die PGP 41 vervangt. GnuPG valt onder de GPL-licensie.

GnuPG maakt gebruik van de OpenPGP-standaard 42, dieook door recentere versies van PGP gebruikt wordt. Hierdoor zijn GnuPG en PGP onderling compatible. Met OpenPGP is het mogelijk files (incl gewone teksten, binaries enzomeer) te encrypteren met een bepaald algoritme.

kort

OpenPGP vereist dat de persoon die ge-encrypteerde zaken wil decrypteren 2 zogenaamde sleutels heeft, een publieke sleutel en een geheime sleutel.

De publieke sleutel wordt aan anderen gegeven zodat deze boodschappen (over het algemeen e-mails) kan encrypteren alvorens deze naar de ontvanger te sturen. Hierdoor voorkomt men dan mensen (met al dan niet minder vriendelijke bedoelingen) de inhoud van die boodschap kunnen lezen. Mijn publieke sleutel kan je op swift.pubkey.asc bekijken.

De geheime sleutel (of private sleutel) houd elke persoon voor zich. Men moet er dan ook voor zorgen dat niemand deze private sleutel kan kopieren, bekijken of bemachtigen. Deze sleutel is beveiligd met een paszin (passphraze ) maar als iemand al jouw sleutel heeft kunnen bemachtigen is het risico groter dat hij deze sleutel kan `kraken' dan als deze persoon deze sleutel niet heeft.

Met de geheime sleutel worden geencrypteerde zaken gedecrypteerd. Het is quasi onmogelijk om een geencrypteerde boodschap te decrypteren met de publieke sleutel. De technologie die hierachter zit wordt uitgelegd in verschillende papers en guides. Een aan te raden guide is de `GNU Privacy Handbook' 43 waar ook het gebruik van GnuPG deftig onder de loupe wordt genomen.

Verder is het ook mogelijk om een handtekening te plaatsen onder een file of boodschap (signature). Hierdoor kunnen mensen, die jouw publieke sleutel hebben, zeker zijn dat jij deze file of boodschap verzonden hebt, omdat enkel de persoon met de geheime sleutel deze handtekening kan aanmaken.

Je kan ook beide combineren 44, nl een file of boodschap encrypteren en signeren. Hierdoor is de inhoud versleuteld en weet de persoon die de file/boodschap ontvangt dat jij hem deze file/boodschap verstuurt hebt.

Instellingen

Sleutel aanmaken

Om GnuPG in te stellen moet je eerst een geheime sleutel aanmaken (ik veronderstel dat GnuPG al geinstalleerd is op uw systeem), en dat doe je als volgt (~$ is de prompt die je krijgt op je console):

~$ gpg
gpg: /home/user/.gnupg: directory created
gpg: /home/user/.gnupg/options: new options file created<BR>
gpg: you have to start GnuPG again, so it can read the new options file

GnuPG heeft de nodige files aangemaakt in je HOME-directorie.

~$ gpg -gen-key
gpg (GnuPG) 1.0.6; Copyright (C) 2001 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: /home/user/.gnupg/secring.gpg: keyring created
gpg: /home/cju/.gnupg/pubring.gpg: keyring created
Pleaseselect what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection?

1 is hier een goede keuze...

DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)

Ook hier is de standaardwaarde (1024) een goede keuze. Zwaardere sleutels zijn vaak te zwaar om te decrypteren (voor uw systeem) waardoor het gebruik van encryptie niet meer vloeiend werkt, maar als storend ervaren wordt. Ook is het gebruik van zwaardere sleutels hier niet echt nodig, daar 1024 bit al zeer veilig is.

Requested keysize is 1024 bits
Please specify how long the key should be valid.
0 = key does not expire
(n) = key expires in n days
(n)w = key expires in n weeks
(n)m = key expires in n months
(n)y = key expires in n years
Key is valid for? (0)

Ook hier is de standaard-waarde 0 een goede keuze, maar dit hangt natuurlijk af van persoon tot persoon. Met 0 ben je niet verplicht om na een bepaalde periode een nieuwe sleutel aan te maken en iedereen te verwittigen dat je een nieuwe sleutel hebt.

Key does not expire at all
Is this correct (y/n)?

Verifieer je keuze met y.

You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form:
Heinrich Heine (Der Dichter) heinrichh@duesseldorf.de

Real name:

Vul hier je naam in, bijvoorbeeld Jan Jansens.

Email address:

Vul hier je e-mailadres in, bijvoorbeeld jan.jansens@foo.be.

Comment:

Vul hier bij voorkeur je nickname in, bijvoorbeeld janneke.

You selected this USER-ID:
Jan Jansens (janneke) jan.jansens@foo.be

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

Verifieer alles en druk op O om verder te gaan.

You need a Passphrase to protect your secret key.

Enter passphrase:

Type hier je passphraze in. Alles wat je typt komt niet naar het scherm, dus wees absoluut zeker van wat je typt (en ja, je moet hem bevestigen).

Repeat passphrase:

Bevestig je passphraze door hem nogmaals in te geven.

We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy.
.++++++++++..++++++++++++++++++++++++++++++++++++++++

Hier worden randomgetallen gegenereerd. Er wordt gebruik gemaakt van vanalles en nog wat, maar voornamelijk van zaken die jij als user doet op dat moment (typen, muis bewegen, scripts uitvoeren, ...) omdat deze zaken werkelijk als random kunnen genomen worden (mits enkele randomfuncties te gebruiken). Uiteindelijk krijg je:

public and secret key created and signed.

Voila, je private en publieke sleutel zijn gecreeerd.

Revocation Certificate

Voordat we verder gaan creeren we eerst een `revocation' certificate. Dit is een klein bestandje dat de nodige gegevens bevat om jouw sleutel als `compromised' te beschouwen. Als je later je publieke sleutel op keyservers plaatst 45 en je geheime sleutel wordt door iemand anders gekopieerd, gebruikt, verwijderd of zo meer op dusdanige wijze dat het niet meer als veilig kan gezien worden om nog jouw sleutel te gebruiken, dan kan je je revocation certificaat naar die server doorsturen. De server zal dan jouw sleutel markeren als `revoked', zijnde `niet meer te gebruiken'.
Je begrijpt wel dat deze certificaat ook schade kan aanbrengen als iemand anders deze heeft (ze kunnen jouw sleutel in ongebruik maken ook al is ze veilig te gebruiken), dus deze revocation certificaat moet goed bewaard worden. Omdat ze zo klein is kan je ze ook afprinten en indien nodig later manueel intypen

~$ gpg -output revoke.asc -gen-revoke janneke

sec 1024D/F5C0C013 2001-07-10 Jan Jansens (janneke) jan.jansens@foo.be

Create a revocation certificate for this key?

Type yes.

Please select the reason for the revocation:
1 = Key has been compromised
2 = Key is superseded
3 = Key is no longer used
0 = Cancel
(Probably you want to select 1 here)
Your decision?

Geef hier de reden van revokatie aan. 1 zal meestal goed zijn omdat je nog niet op voorhand weet waarom je de sleutel wil revokeren.

Enter an optional description; end it with an empty line:

Hier kan je additionele informatie geven. Dit is niet nodig, dus wij geven een lege regel in...

Reason for revocation: Key has been compromisedid
(No description given)
Is this okay?

Bevestig door yes in te typen.

You need a passphrase to unlock the secret key for
user: Jan Jansens (janneke) jan.jansens@foo.be
1024-bit DSA key, ID F5C0C013, created 2001-07-10

Enter passphrase:

Type hier je passphraze in.

ASCII armored output forced.
Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets access to this certificate he can use it to make your key unusable. It is smart to print this certificate and store it away, just in case your media become unreadable. But have some caution: The print system of your machine might store the data and make it available to others!

Je revocation-certificate zit nu in de file revoke.asc. Plaats deze ergens op een diskette of print ze af, en leg ze op een veilige plaats.

Publieke sleutel

Om je publieke sleutel te verkrijgen, type je het volgende:

~$ gpg -armor -output my-pubkey.asc -export janneke

In de file my-pubkey.asc zit nu jouw publieke sleutel die je aan iedereen mag doorgeven. Als je je publieke sleutel op een keyserver wil plaatsen, type je het volgende in:

~$ gpg -keyserver www.keyserver.net -send-keys janneke

Nu staat jouw publieke sleutel op de server www.keyserver.net. Om jouw sleutel-nummer te kennen doe je het volgende:

~$ gpg -list-keys janneke
pub 1024D/F5C0C013 2001-07-10 Jan Jansens (janneke) jan.jansens@foo.be
sub 1024g/CE72C0D4 2001-07-10

Jouw sleutelnummer staat rechts van de /, hier F5C0C013. Met dat nummer kunnen mensen jouw publieke sleutel van de keyserver halen:

~$ gpg --keyserver www.keyserver.net --recv-keys F5C0C013
gpg: requesting key F5C0C013 from www.keyserver.net ...
gpg: Total number processed: 1

Zo wordt de publieke sleutel gedownload en direct geinstalleerd.

sleutels signeren

Nu moet je wel nog de sleutels van andere mensen signeren. Met signeren maak je aan gnupg duidelijk dat je de sleutel voor 100% aanvaard, omdat je 100% zeker bent dat die sleutel van die persoon komt. Dit doe je door de fingerprint van een sleutel te controleren. Vraag dus aan die persoon, of aan een persoon die je vertrouwt, om de fingerprint van die sleutel te verkrijgen (hoe stricter je het vraagt, hoe minder kans dat het vervalst is). Je weet de fingerprint van een sleutel (ook de jouwe) door:

~$ gpg --fingerprint janneke
pub 1024D/F5C0C013 2001-07-10 Jan Jansens (janneke) jan.jansens@foo.be
Key fingerprint = 90F3 71F6 D87A 3534 DD00 DFFF 7B74 976F F5C0 C013
sub 1024g/CE72C0D4 2001-07-10

Als deze fingerprint gelijk is aan deze die je van die persoon krijgt (in real life, via telefoon, whatever) dan kan je deze sleutel signeren:

~$ gpg --edit-key iemand
(Veel informatie die je zegt welke sleutel bij 'iemand' hoort)
Command:

Type hier sign. GnuPG zal je om confirmatie vragen, en dan om je passphraze. Met het commando quit ga je uit deze edit-mode.

Meerdere IDs

Er rest ons nog 1 zaak te doen, nl extra IDs toevoegen aan onze sleutel. Immers, iedereen heeft wel meerdere e-mailadressen met bijhorende nicknames. Die moet je ook in je sleutel steken, anders kunnen die mensen (eigenlijk hun programmas) zeer moeilijk de link leggen tussen jouw e-mail en jouw publieke sleutel. Je voegt ID's toe als volgt:

~$ gpg --edit-key janneke
(Informatie over janneke)
Command:

Typ hier adduid. Er wordt gevraagd naar je naam (die meestal dezelfde blijft, maar soms wil je wel meerdere namen hebben :), je e-mail (dus nu een ander e-mail) en commentaar (nickname). Na confirmatie wordt je passphraze opgevraagd waarna je extra ID toegevoegd wordt (wat je zal zien aan de output).
Meer commando's in de edit-mode vind je door help in te typen.

Warning : Using insecure memory

De kans is groot dat je de melding Using insecure memory krijgt van GnuPG. De reden is dat gpg niet als root gedraaid wordt (maar als jouw, de user) waardoor gpg niet geheugen van vastleggen. Hierdoor bestaat de kans dat het geheugen waarin gpg zit naar de harde schijf wordt weggeschreven, zodat gebruikers met de juiste tools deze kunnen bekijken en mogelijk jouw passphraze teweten komen. Als je dit niet wenst, moet je de gpg-binary SUID root maken. Dit doe je door de volgende commando's in te geven (paswoord van de root-account moet je ingeven):

~$ su Password: ~$ chown root.root /usr/bin/gpg
~$ chmod 4755 /usr/bin/gpg ~$ exit

Als je de melding zelf niet meer wil krijgen, voeg je de volgende regel toe aan /home/user/.gnupg/options (met user = jouw login):
1 no-secmem-warning

i

E-mailclients

Er zijn verschillende e-mail-clients beschikbaar voor Linux, en verscheidene clients hebben PGP/GPG-ondersteuning (GPG = GnuPG). Ik bespreek voorlopig enkel pine en mutt.

Pine

Pine is een vaak gebruikte, maar jammergenoeg niet-GPL, e-mailclient voor onder de console. Om GnuPG te doen werken onder Pine is er een speciaal scriptje dat pinegpg-install noemt. Dit is meestal bij je Pine-package bijgeleverd. pinegpg-install doet niet meer dan de volgende zaken in je .pinerc toevoegen:

sending-filters=/usr/bin/gpg-sign,
/usr/bin/gpg-encrypt _RECIPIENTS_,
/usr/bin/gpg-sign+encrypt _RECIPIENTS_

Het is wel aangeraden om hier nog iets aan te veranderen. Immers, als je dit zo laat, worden mails die jij verzend geencrypteerd, en kan jij, tussen de sent-mail, niet meer die mails lezen (want jij hebt de private sleutel niet van de recipient). Dit kan je oplossen door er het volgende van te maken (in .pinerc):

sending-filters=/usr/bin/gpg-sign,
/usr/bin/gpg-encrypt _RECIPIENTS_ jan.jansens@foo.be,
/usr/bin/gpg-sign+encrypt _RECIPIENTS_ jan.jansens@foo.be

met uiteraard jouw e-mailadres ipv jan.jansens@foo.be... De sending-filters zorgt ervoor dat je de keuze krijgt om gpg-sign, gpg-encrypt of gpg-sign+encrypt toe te passen op je e-mail.
Ook wordt door pinegpg-install het volgende in .pinerc gezet:

display-filters=_LEADING(``-----BEGIN PGP MESSAGE-----'')_

/usr/bin/gpg-check,
_LEADING(``-----BEGIN PGP SIGNED MESSAGE-----'')_ /usr/bin/gpg-check

De display-filters zorgen ervoor dat je, als je een geencrypteerde e-mail krijgt, deze automatisch (wel, je moet wel nog je passphraze intypen) gedecrypteerd worden, of dat de signature van een persoon geverifieerd wordt (hiervoor moet je uiteraard geen passphraze ingeven).

Als je nu onder Pine een e-mail wil verzenden (dus [^]X drukken nadat je je e-mail gemaakt hebt) kan je nu tussen de filters bladeren door [^]P of [^]N te drukken. De filternamen komen onderaan te staan in het beeld. Meestal wil je dan sign+encrypt nemen. Druk dan op Y om de mail te encrypteren (passphraze wordt gevraagd) en te verzenden.

Mutt

Met mutt 46 is het zeer simpel om mails te encrypteren en decrypteren. Het gebruik zit er nl al ingebouwd. Je creert gewoon een mail, drukt op p, selecteert wat je wil doen (encrypteren, signeren of beide), geeft desnoods je passphraze in, en klaar is kees. Geen instellingen nodig. Het voordeel is ook dat Mutt de encryptie volgens de RFC doet, itt Pine (btw, de rfc is nummer 2015). Jammer genoeg wil dat ook zeggen dat geencrypteerde mails (van Pine) niet gedecrypteerd worden door Mutt, en omgekeerd.

Chapter 25
Mail and news related

25.1  mail - standaard mail programma

25.1.1  Inleiding

25.1.2  Gebruik

Mail verzenden

Als je mail wil gebruiken om emails te verzenden, zul je een mailserver moeten installeren. Veel gebruikt mailservers zijn bv. sendmail en exim. Deze kun je wel instellen dat ze als smarthost opereren. Ze zullen dan gewoon de mails doorsturen naar je gebruikelijke mailserver.

Je kan mail op 2 manieren gebruiken om mail te versturen:

Als je bij een emailadres het domein weglaat bv foo@foo.bar wordt dan foo@ of zelfs foo, zal het programma er van uit gaan dat je naar foo in jouw domein wilt mailen.

Mail lezen

Je kan je mailbox openen door gewoon mail in te typen als er nieuwe mail is. Heb je geen nieuwe mail, dan moet je mail -f ingeven

~$ mail
mail -f

Hierdoor kom je in de interactieve modus van mail. De meest gebruikte commando's zijn hier:

25.1.3   Opmerkingen

Als je toevallig je mailbox verwijdert hebt, en je kan mail niet meer opstarten doe dan:

~$ touch ~/mbox

Dit maakt een leeg bestand aan in je homedir: mbox.

25.2  fetchmail - mail ophalen

Fetchmail haalt e-mails van een pop- of imapserver. Je kan fetchmail direct commandline gebruiken, bijvoorbeeld

~$ fetchmail -u username server

Fetchmail zal je dan achter je paswoord vragen die overeenkomt met de gebruiker `username' op de server `server'. Als je denkt dat fetchmail niet het server-type kan raden (pop3 of imap) kan je dat altijd meegeven:

~$ fetchmail -u username -p pop3 server

Als je een ssl-verbinding wil gebruiken moet je `--ssl' erbij plaatsen:

~$ fetchmail -u username -p imap --ssl server

Maar fetchmail zou fetchmail niet zijn als je het niet eenvoudiger kan doen. Je kan immers werken met een .fetchmailrc-bestand (dat de permissies 600 _moet_ hebben) waarin (bijvoorbeeld) staat:

defaults proto imap ssl
poll mailandnews
user 'foo' there with pass 'password' is 'bar' here

Dit zorgt ervoor dat, als je gewoon fetchmail intypt, de mails van de server mailandnews voor de gebruiker foo met paswoord password binnengerijfd worden en aan de locale user bar gegeven worden (meestal zet je hier je eigen login). Als je dan nog fetchmail -d 60 typt, zal fetchmail op de achtergrond draaien (in daemon-mode) en om de 60 seconden uw mail controleren (en desnoods binnenhalen).

PS De mails zullen dan meestal in /var/mail/ < username > terecht komen.

25.3  sendmail - mail verzenden

25.4  leafnode - local news server

25.5  slrn - nieuwslezer voor console

slrn (http://www.slrn.org) staat voor `s-lang read news'. Het is een ncurses-gebaseerde newsreader.

Om met de deur in huis te vallen : het lastigste in het begin is het wennen aan de gebruikte keybindings (alhoewel die wel manueel aan te passen zijn). Maar voor de rest is slrn een zalige newsreader.

slrn ondersteund threads en binaries (MIME), wat ongeveer toch het belangrijkste is aan een newsreader.

Ook hier wordt alle configuratie in een config-file gedaan. Het beste is je te baseren op een bijgeleverde voorbeeld-slrnrc. Verder moet je 1 variabele globaal definieren, nl je nntp-server. Het beste is hiervoor een melding in /etc/profile of in een lokale file (bv .bashrc of zo) te plaatsen, ala:

	export NNTPSERVER="news.provider.be"

Verder wijst het gebruik van slrn zichzelf uit...

25.6  mutt - helemaal geen stront!

Mutt 47 is een zeer uitgebreide mailclient (MUA - Mail User Agent) die gebruik maakt van je locale mailserver (MTA - Mail Transport Agent) en dus zelf niet de mogelijkheid biedt om de smtp-server van je provider te gebruiken. Dit laatste is geen fout, maar een feature48.

Het instellen van mutt gebeurt compleet in de configuratiefile .muttrc in je home-directory. Met een beetje hulp van de muttrc-manpage en voorbeeld-muttrc-bestanden van de Mutt website geraak je al heel ver.

Een minimalistische muttrc-inhoud om mail van een imap-server te halen vind je hieronder. Echter, het is het meest aangeraden te werken met fetchmail (= om je mails binnen te rijven) en procmail (om ze te filteren). Standaard werkt mutt immers met je locale spoolfile (/var/mail/$USER).

-- .muttrc-bestand
set realname="Jan Jansens"
my_hdr From: Jan Jansens < jan.jansens@foo.be >
my_hdr X-Operating-System: `uname -sr`
set spoolfile={jjansens@mailserver.be}inbox
--

Het leukste is echter - zoals al eerder gezegd - de enorme uitgebreidheid. Je kan overal kleuren aan geven, speciale functies aan toetsen geven (`binden'), mailinglists beheren, meerdere mailboxen beheren, threads zien zoals je ze moet zien, ...

Nog leuker is de integratie van PGP-support. Zenden en ontvangen van gesigneerde en/of geencrypteerde e-mails (allemaal volgens de rfc), zenden en ontvangen van PGP keys, ... gaat allemaal zonder problemen.

Het lastigste zijn de default keys... Standaard werkt mutt met moeilijke keybindings, en het eerste wat je dan ook doet zijn de keybindings aanpassen (wat je in je .muttrc-bestand doet).

25.7  Pine - the verry best communication center

25.7.1  pine - wat is dat nu weer al?

Pine is een programma voor mail en nieuws (pine staat voor Program for Internet News and Email), persoonlijk vind ik het het beste programma dat er beschikbaar is voor dergelijke doeleinden, het heeft een intuitieve interface waar je uitzonderlijk snel mee leert werken (eigenlijk moet je het zelfs niet leren, je kunt het gewoon)..
De homepage van pine is: http://www.washington.edu/pine

Iets leuks aan pine is dat het standaard nogal eenvoudig is, een stel standaard functies geeft, maar als je zelf meer eisen gaat stellen, of als je die al stelde

25.7.2  pine - hoe werkt dat?

Pine is erg eenvoudig, typ gewoon het commando pine en je komt in een screen oriented mail client terecht, alles wijst zichzelf uit, je kunt onmiddelijk beginnen mailen, als je ook toegang wilt to usenet moet je eerst nog een nieuws server ingeven dit kan (zoals bij mij) een locale server zijn, ofwel die van je provider, het voordeel van een locale server is dat je mail maar één keer moet afhalen en dan alle users op je systeem en alle nieuws clients dat nieuws kunnen berijken zonder ze eerst nog eens zelf af moeten halen, het nadeel is dat je nieuws moet afhalen met het commando fetchnews en dat dat meestal enkel kan als root, je kunt hiervoor natuurlijk ook een crontab invoegen (zo doe ik het).

Als je pine wilt gebruiken voor nieuws doe dan het volgende: druk op S, of ga met je pijltjestoetsen naar SETUP en druk op enter kies dan C (voor config) dan kom je in een configuratie menu, daar geef je eerst je eigen naam in (indien dit niet standaard juist staat), ga gewoon naar personal-name en druk op enter, geef uw naam in en druk nogmaals op enter, ga dan naar beneden, naar nntp-server en geef daar je localhost naam in indien je een locale nieuwsserver hebt (localhost of iets anders, bij mij is dit mylinux.local, dat hangt af van je systeem) of de naam van de nieuwsserver van je provider, vb.: news.pandora.be of nntp.provider.com

Nog een aantal andere essentiele instellingen voor je kunt beginnen:
In Setup - Config moet je het volgende instellen:
Indien je sendmail of qmail of een gelijkaardig programma hebt geconfigureerd op je systeem, kun je smtp-server ind e setup laten staan op localhost, anders moet je de smtp server van je provider ingeven, dit kan bvb smtp.pandora.be zijn.
In form-letter-folder geef je gewoon je eigen naam in.
Een signature is een klein stukje tekst dat je onderaan iedere mail plaatst, je kunt dit automatisch laten doen, meestal plaatst met zijn signature in het bestand ~/.signature pine leest standaard ook dit bestand voor de signature, indien je een ander wilt gebruiken kan dat.
Je instellingen kun je opslaan met eerst E en dan y te typen, eventueel kun je pine herstarten om zeker te zijn dat de nieuwe instellingen gebruikt worden.

Je kunt nu pine gaan gebruiken, omdat de standaard mogelijkheden zichzelf uitwijzen, zal ik die niet uitleggen, je kunt ze allemaal begrijpen door enkel en alleen je scherm te bekijken (dat vind ik net het leuke aan pine, het is zo verdomd simpel, maar toch volledig en snel werkend).

25.7.3  Setup - enkele geavanceerde instellingen van pine

In de optie Setup in het opstartscherm van pine kun je een aantal gewone en geavanceerde opties instellen, die zullen hier worden besproken. Ze worden in volgorde van verschijnen beschreven.

Printer - ik wil dat op papier

In het Setup scherm kun je met P je printer configureren, indien je op P drukt krijg je de volgende opties:
Ik weet eigenlijk zelf niet zeer goed hoe dit werkt, dus wil iemand zo vriendelijk zijn om het stukje voor mij te schrijven

Newpassword - wijzig mijn wachtwoordjen

Via N (Newpassword) kun je je paswoord (je unix login wachtwoord) wijzigen, het is een front end dat gewoon het unix commando passwd start.

Config - mijn persoonlijke instellingen

Via C kom je in je persoonlijke instellingen, hier kun je een deel van de echte kracht van pine bezichtigen. Het aantal opties is enorm.

25.7.4  from: - Changing the from header

Pine gebruikt normaal als from adres je inlognaam met daarachter een @ en daarna een hostname die wordt bepaald door sendmail, in mijn geval is dit pandora.be, maar het kan ook localhost, localhost.local of je gewone hostname (in mijn geval mylinux.local) zijn. Het vervelendste (en als je het mij vraagt een grote vergissing van de makers van pine) is dat je nogal wat moeite moet doen om dit email adres ter veranderen, de standaar setup is namelijk niet genoeg.

Hoe maak jij het mogelijk?

Eerst en vooral dit, mischien werkt deze procedure niet: het is mogelijk om de broncode van pine zodanig aan te passen dat de gebruikers het from adres niet kunnen veranderen, dit wordt soms gedaan op 'publieke' pc's om misbruik te vermijden of door mensen die willen dat bvb hun kinderen geen mails verzenden als Bill Gates of iemand anders die ze eigenlijk niet zijn. Maar indien dit het geval is zal de systeembeheerder (die het zo ingesteld heeft) dit wel weten en hij zal wel beslissen of hij deze wijziging zal ongedaan maken of niet (als je wilt weten hoe je pine zo kunt compileren kun je eens kijken op http://www.washington.edu/pine in de faq van pine, daar staan de nodige links.)

Om voor jou account (daarmee bedoel ik je linux/unix account) mogelijk te maken om zelf het email adres in te stellen, moet je het bestand ~/.pinerc openen, in de feature-list (in mijn geval regel 97, je kunt hem natuurlijk ook altijd zoeken, in vi doe je dat met /feature-list) moet je de lijn
allow-changing-from
toevoegen, dan kun je je from adres veranderen, sla de wijziging op en sluit je editor.

Hoe stel je het in?

Nu heb je het wijzigen mogelijk gemaakt, maar daarmee is het email adres dat je wilt gebruiken nog niet ingesteld. Je kunt dit als volgt doen:
Start pine, ga naar Setup (met S of de pijltjestoetsen en enter), Kies C voor Config, geef bij customized-hdrs = < No Value Set > de waarde From: yourname < youremail@somewhere.org > in, nu verzend je via je eigen adres, sla de wijzigingen op en je verzend via je eigen adres.

Als je via verschillende email-adressen wilt verzenden, kun je dit gemakkelijk door:

25.8  elm - easy mailing!

Chapter 26
www and ftp related

26.1  ftp - standaard ftp client

Het programma ftp zorgt ervoor dat je als user van en naar een ßerver" "client" files kan versturen. Er zijn verschillende opties en varianten mogelijk, zoals :

pftp : Dit zorgt ervoor dat je passief files kan doorsturen van de ene pc naar de ander in een netwerk. Dit is handig wanneer je niet via een ``outside'' verbinding kan ftp'en, of als je achter een firewall zit.

De normale syntax is : ~$ ftp [option] [ < username > @]host

Waaronder host verstaan wordt als ftp server
Host kan een url zijn zoals http://web.wanadoo.be
of een ipadres zoals 127.0.0.0

Commando's in ftp zijn:

Handige tips :

Zet in je .netrc je favoriete ftp server alsook je account en paswoord. Zo hoef je niet telkens in de command line alles telkens opnieuw in te geven. Je geeft de info als volgt in:
machine < ftp.domain.name >
login < username >
password < dendeen >

je kunt zoveel 'machines' toevoegen als je wilt, het is wel belangerijk dat enkel de user leestoegang heeft tot .netrc, andere gebruikers mogen geen enkele vorm van toegang tot dit bestand hebben, anders zal ftp het niet gebruiken en zouden die andere gebruikers je wachtwoorden kunnen lezen.

lees ook : RFC 959

26.2  wget - www zonder browser

wget
Wget is een tooltje om bestanden van het net te plukken, dit kan over het ftp en het http protocol.

De basis syntax is

~$ wget [options] URL

De opties kun je meegeven aan langs de commandline, maar kun je ook permanent maken door ze in ~/.wgetrc te zetten.
De URL is in het standaardformaat: [ftp|http]://[user:password@]host[:port]...

Enkele van de meestgebruikte opties zijn:

Opties specifiek voor http:

Opties specifiek voor ftp:


Part 7
Ontwikkeltools


Chapter 27
Diagnose-tools

27.1  catchsegv - segmentation faults

catchsegv is een script die segmentatiefouten (segmentation faults) van programma's debugged. De output is de inhoud van de registers op het moment van de crash en een backtrace.

27.2  memusage - geef informatie over geheugengebruik

Met memusage kan je het geheugengebruik van een programma teweten komen. Gebruiken doe je het best als volgt:

~$ memusage 2> memusage-output programma

waarbij `memusage-output' de file is waar de gegevens van geheugengebruik worden gesaved en `programma' het programma is waarvan je het geheugengebruik in kaart wil brengen.

De data bevat ook escape-karakters om kleuren en dergelijke weer te geven. De beste manier om de file te viewen is dan ook ofwel dmv `cat' (en dan page-up/down om alles te zien) ofwel head (de meest interessante gegevens staan bovenaan).

Met deze tool kom je bijvoorbeeld teweten hoeveel malloc, realloc, calloc en free-calls er gemaakt zijn, alsook hoe groot de aangesproken geheugenblokken zin...

Deze tool kent de volgende argumenten:

De volgende argumenten zijn mogelijk als je een PNG-grafiek maakt:

Chapter 28
gencat

~$ gencat catalog_file source_file

stdin en stdout kan ook gebruikt worden.

Een berichtensourcefile is een bestand dat je aanmaakt waarin de berichten staan die je programma kan/zal geven. Je kan eender welke editor gebruiken om een dergelijke berichtensourcefile aan te maken. Berichten kunnen onderverdeeld worden in sets, meestal gebruikt om subsecties van je programma te representeren. De berichtensourcefile kan ook commando's in zich houden die door gencat gekend zijn en gebruikt worden om sets en individuele berichten te manipuleren.

Sommige versies van gencat kunnen werken met symbolische namen ipv nummers (standaard is het nummers). Indien jouw versie dat niet kan moet je eerst de berichtensourcefile door mkcatdefs voeren die de symbolische namen omzet in nummers en daarbij een mapfile aanmaakt waarin je snel het overeenkomende nummer bij een symbolische naam (en vice versa) kan terugvinden.

De berichtensourcefile kan de volgende commando's bevatten. Elke keyword of nummer moet gevolgd worden door een (en enkel 1) spatie of tab. Indien gevolg door meerdere spaties of tabs, en de tekst wordt niet gequote, dan worden de spaties meegerekend als tekst. Gencat negeerd regels die beginnen met een spatie, een tab of een $ gevolgd door een spatie, tab of newline. Je kan ook commentaar plaatsen achter de commando's $delset, $quote, $len, $set omdat gencat alles achter deze commando's (en hun argumenten) negeert :

Escape-karakters mogen gebruikt worden in de berichtensourcefile. Het backslashkarakter kan gebruikt worden om aan te duiden dat de tekst doorloopt op de volgende regel.

Chapter 29
getconf

~$ getconf variabele

getconf geeft de waarde die in de systeemvariabele `variabele' zit weer. Indien een bepaalde specificatie nodig is, moet deze meegegeven worden met het `-v' argument:

~$ getconf -v specificatie variabele

Een andere manier om getconf te gebruiken is met behulp van een path:

~$ getconf [-v specificatie] pathvariabele path

Hierdoor wordt de inhoud van de variabele `pathvariabele' die bij het pad `path' hoort weergegeven, desnoods met een bepaalde specificatie.

Enkele voorbeelden:

~$ getconf NGROUPS_MAX
32

~$ getconf NAME_MAX /usr
255

Chapter 30
glibcbug

Met glibcbug vul je een glibc-bug-report in, waarna die naar de glibc-ontwikkelaars gestuurd wordt (of kan gestuurd worden).

Chapter 31
ldd - libraries die door een programma worden gebruikt

Met ldd kan je te weten komen welke `shared libraries' een programma of librarie nodig heeft.

De opties die je kan meegeven zijn:

Het gebruik is zeer simpel:

~$ ldd bestand

Bijvoorbeeld:

~$ ldd /bin/ls
libtermcap.so.2 = > /lib/libtermcap.so.2 (0x4001a000)
libc.so.6 = > /lib/libc.so.6 (0x4001e000)
/lib/ld-linux.so.2 = > /lib/ld-linux.so.2 (0x40000000)
Sommige code is dusdanig gecompileerd dat er overal absolute adressen in staan (sprongen, adressen van variabelen, ...). Als de code dus ergens anders moet geladen worden moeten eerst alle absolute adressen aangepast worden. Dat heet relocatie. Ook bij het linken van objecten moet relocatie gebeuren. Immers, de objecten zijn gecompileerd voor eenzelfde vast adres, terwijl ze eigenlijk achter elkaar moeten komen (linken).

Code, gecompileerd met de PIC-optie, werkt niet met absolute adressen maar relatieve. PIC = Position Independent Code. ELF shared libraries moeten bv PIC-gecompileerd worden (a.out niet).

Chapter 32
localedef - genereer locale-definitiebestanden

Met localedef creëer je definitie-bestanden voor locale. Hiervoor gebruikt het gegeven input-bestanden en een karaktermap en maakt het 6 bestanden aan met een layout die begrijpbaar is voor de `locate-functies' van de C-library. Als geen karaktermap gegeven is wordt POSIX gebruikt, en als er geen input-bestanden gegeven zijn (of een ``-'') wordt stdin gelezen.

Argumenten zijn

Chapter 33
sln - symbolische links

sln, (``static ln'') maakt een symbolische link van dest naar source:

~$ sln source dest

De link gebeurd statisch. Dit is handig als je symbolische links wil maken naar dynamische libraries als het dynamische linking-systeem (ldconfig) niet werkt.


Part 8
Vaak gebruikte tools


Chapter 34
Text utility's

Hier staan een aantal tools die te maken hebben met tekst bestanden, maar die niet meer echt als 100% standaard tools kunnen morden beschouwd.

34.1  a2ps - pretty printing

GNU a2ps49 is een erg eenvoudig te gebruiken tool voor het printen van tekstbestanden, het kan ook gebruikt worden om postscript bestanden te maken van txt bestanden, wat in combinatie met bvb.: gv het lezen van deze bestanden een stuk aangenam er kan maken.

34.1.1  zeer eenvoudig gebruik

~$ a2ps < bestandsnaam >
print het bestand tussen < en > af naar de standaard printer, met de standaard instellingen van a2ps.

~$ a2ps -o < bestandsnaam.ps > < bestandsnaam.txt >
converteert het ASCII bestand (hier met de extentie .txt) naar een ps bestand (hier met de extentie .ps).

34.1.2  Opties

-V
heeft de versie van a2ps weer.
--help
heeft een korte helptekst weer.
--guess
a2ps raad tijdens het printen het type van het bestand (vb html), met --guess kun je het geraden type laten tonen, zonder het bestand ook af te drukken.
-q, --quiet, --silent
deze drie opties zorgen ervoor dat a2ps geen uitvoer op het scherm plaatst (bvb error messages).
-M, --medium=NAME
gebruik uitvoer medium met de naam NAME, bvb A4.
-r, --landscape
print horizontale pagina's.
-R, --protrait
print verticale pagina's.
--columns=nummer
bepaal het aantal kolommen per pagina.
--rows=nummer
bepaal het aantal rijen per pagina.
-J, --borders=yes|no
randen rond kolommen afdrukken of niet.
--margin=nummer
binnenmarge instellen.
--line-numbers=nummer
om de hoeveel rijen moet er een lijnnummer worden weergegeven.
--font-size=grootte
bepaal de tekengrootte.
-m, --catman
gebruik deze optie als je man-page's wilt omzetten!
-B, --no-header
zorgt ervoor dat er geen headers worden afgedrukt.
--header=TEKST
stelt de header in op TEKST.
-u, --underlay=TEKST
plaats TEKST onderaan op elke pagina.
--center-title=TEKST
stelt de titel in op TEKST.
--left-title=TEKST
steld de linker pagina titel in op TEKST.
--right-title=TEKST
zie left-title
--left-footer=TEKST
Stel voettekst in op TEKST.
--toc=TEKST
maak een inhoudstafel.

Chapter 35
nohup

nohup voert een commando uit en laat het hangup signals negeren, dit heeft als gevolg dat het actief kan blijven als je uitgelogd bent, waardoor het soms handiger kan zijn dan gewoon een background process starten.
De synopsis is simel:
~$ nohup < COMMANDO [OPTIES] >
De opties zijn er voor het commando, niet voor nohup, want nohup heeft behalve --help en --version geen opties. Standaard start nohup niet in de achtergrond, als je dat toch wilt kun je & toevoegen op het einde van de aanroep.

Alle uitvoer van het programma wordt geredirected naar ~/.nohup.out .
Als het bestand al bestaat wordt de uitvoer toegevoegd aan het einde van het bestand, als er geen schrijftoegang is tot het bestand zal nohup zichzelf afsluiten.


Part 9
Wetenschappelijke programma's


Chapter 36
Wiskundige programma's

36.1  bc - basic calculator

bc is een rekenprogramma die standaard bij iedere *nix alike zit. Zeer eenvoudig:

~$ bc
2+2 < enter > 4

Men sluit af door ``quit'' in te geven. bc ondersteund enorm grote getallen.

(houd er rekening mee dat bc een heel krachtige rekenmachine is, met enorm veel mogelijkheden, niet voor niets is de manpage alleen al 17 pagina's lang, hoeplijk volgt later nog een volledigere beschrijving.


Part 10
Leuke maar onnodige tools en toys


Chapter 37
fortune - bigtalk

fortune is een programma dat een aantal databases bezit met daarin grappige, absurde, soms ook volledig terecte,... statements, als je het programma fortune draait, toont het gewoon willekeurig één van deze statements.
Als je de optie -o toevoegt toont fortune enkel nog offensive statements.

Je kunt ook de naam van een database meegeven om een statement uit een specifieke database te halen, als je wilt weten welke databases er op je systeem staan, kun je het volgende doen:
Eerst moet je bepalen waar fortune zijn databases bewaard, dit kun je doen met het commando whereis, dit heeft als uitvoer al de directory's waar een bestand met de naam fortune staat, en alle directory's met die naam, normaal krijg je één dir met de binary, en nog een (bvb /usr/share/fortune), die laatste bevat de databases, cd naar die directory en voer daar een ls uit, je krijgt dan een lijst bestanden, elke bestand dat zowel bestaat zonder extentie als met de extentie .dat is een fortune-database.

Op het internet kun je allerlei databases voor fortune vinden, zo zijn er met statements uit het boek Open Sources (van O'Reilly and Associates), maar bvb oko met wat Bart Simpson in het begin van een aflevering op het schoolbord schrijft, of met statements uit star trek of the X files.

Chapter 38
eject - opens cd-drives

Eject is een commando om verwisselbare media (bvb , CD-ROM, JAZZ ... ) te laten uitschuiven. Het is altijd beter om een toestel eerst te unmounten, en daarna ëject" uit te voeren. Zo blijft alles lekker net, en kan het linux systeem niet vastlopen/flippen wanneer je dit hardwarematig doet. Als je niet weet hoe het toestel noemt kan je gewoon "mount" intypen. Zo zie je welke drives allemaal gemount zijn.

gebruik:

~$ eject < toestel >
bvb :

~$ eject /dev/hdc

opent de drive hdc (in mijn geval mijn cdrom drive).

~$ eject -t < toestel >

toestel wordt gesloten.

Chapter 39
split - splits files

Iets meer dan een speeltje, maar enfin, het paste niet echt in een andere categorie.

split is een console tool om grote bestande op te splitsen in kleinere bestandje s. Handig om bvb een grote file op verschillende diskettes te zetten. Het wordt niet veel gebruikt , maar een variant ervan csplit kan ook handig zijn. fsplit kan files splitten aan de hand van de tekst in de file.En dus is dit wel handig bij het programmeren.

vb:

~$ split -bytes=1m grootbestand
verdeeld grootbestand in bestanden van 1 megabyte (m = MB, k = KB, b = 512 bytes)

Chapter 40
cal - Kallendertje

cal geeft een eenvoudige kalender weer.
Standaard geeft cal een kalender van de huidige maand weer.
Opties zijn:


Part 11
Appendices


Appendix A
Ergonomie

Omdat veel teminal users nogal veel achter hun pc'tjen zitten, heb ik beslist om hier een stukje over ergonomie in op te nemen.
De belangerijkste bronnen die ik hier heb gebruikt zij een artikel uit PC magazine en hoofdstuk 12 uit de configuration manual van SuSE Linux 7.0.

A.1  RSI - wat is dat?

RSI of repetetive strain injury is een ziekte die veel voorkomt bij mensen die constant dezelfde kleine bewegingen maken, zoals bijvoorbeeld hun hand enkele centimeters bewegen bij het typen (maar bvb ook bij het overschrijven van boekn, in de middeleeuwen waren er al reeds monikken die RSI kregen).
RSI is een zeer ernstige ziekte, het kan er toe lijden dat je bvb geen balpen meer kan vasthouden en niet meer kan typen. Het wordt gekenmerkt door een stekende pijn in polsen, rug en nek.
In het begin is de pijn niet zo erg en na een tijdje rusten gaat het over, je mag het echter niet negeren, anders kan het blijvende gevolgen hebben. Werkgevers zijn overigens wettelijk verplicht om maatregelen te nemen indien werknemers klachten krijgen van RSI waarvan hun werkomgeving de oorzaak is, dus als je op je werk aan een te klein bureautje zit op een slechte stoel en je hebt last van RSI symptomen, dan kun je je baas verzoeken om eens zijn meubilair te laten inspecteren of het wel ergonomisch verantwoord is (ergonomisch, niet esthetisch).

A.2  stress?

Lawaai, trillingen, gasuitstoting, koude en warmte, slechte verlichting en geluid kunnen stresserend werken, dus let er mee op.

A.3  Ergonomy, wat kun je doen?

Dit zijn een aantal tips om RSI te vermijden.

A.3.1  Desk - Het juiste bureau

Een bureaublad moet minimum 160 bij 80 cm zijn.
Een bureaublad dat niet in hoogte kan worden versteld moet normaal 72 cm hoog zijn, indien het wel in de hoogte kan worden versteld, moet dit tussen 68 en 76 cm zijn.
Voor CAD werkstations moet het blad 200 cm breed zijn.
Er moet minimum 60 cm beenruimte zijn.
Indien je grote schermen gebruikt, moet het bureau minimum 100 (of zelfs 120) cm diep zijn.
Het oppervlak van het bureau moet helder zijn in een niet te felle kleur en mag niet al te veel reflecteren.

A.3.2  Chair - De correcte stoel

Een stoel moet in hoogte verstelbaar zijn (tussen 42 en 53 cm), de leuning moet minimum tot aan de schouderbladen komen en moet genoeg steun aan de rug (de achterkant van de ruggegraat).
Een stoel moet zachte kussens hebben die lichtjes 'inzakken' als je erop gaat zitten.
Een stoel moet stabiel zijn en op wielen staan (minstens vijf!), de wielen moeten 'blokkeren' als je recht gaat staan (ik heb zo'n stoel en persoonlijk vind ik dat laatste eerder vervelend, maar ja, de standaards en hun voorafgaand onderzoek zullen wel gelijk hebben zeker).
Als je voeten niet tot aan de grond kunnen, moet er een voetsteun zijn.

A.3.3  Light - Goede verlichting

Het is belangerijk om aan daglicht bloodgesteld te worden, naar buiten kunnen kijken is belangerijk!
De verlichting moet tussen 250 en 1000 lx.
Voor een individueel werkstation omet er 500 - 750 lx uitgezonden worden.
De verlichting mag niet 'flikkeren'
Donkere schaduwen moeten vermijd worden.
Licht: de kleuren warm wit en neutraal wit worden aangeraden.
Oude mensen hebben meer licht nodig.

A.3.4  klimaat - Ook het klimaat is belangerijk!

De kamertemperatuur is best tussen 20 en 22 graden Celcius, in de zomer is de maximum temperatuur 26 graden.
De instellingen van een airco moeten individueel kunnen worden aangepast.
Vensters moeten open kunnen worden gezet en moeten zonneschermen hebben.
Planten zijn aan te raden (luchtfilters, invloed op vochtigheid).
Vochtigheid moet tussen 40 en 65 % zijn. De droogte mag niet over 0.1 tot 0.15 m/s gaan, droogte op individuele delen van het lichaam moet vermeden worden.

A.3.5  noise - geluid veroorzaakt stress!

Een werkplek moet zo stil mogelijk zijn.
55 dB is het absolute maximum, indien meb diep moet nadenken (wetenschappelijk werk, programmeren,...) of moet praten is 35-45 dB het maximum.
Lawaaierige apparaten zoals matrixprinters moeten op lawaai absorberende materialen staan.

A.3.6  screen - het juiste scherm op de juiste plaats

Een scherm dat TCO 99 compliant is wordt aangeraden.
Een scherm van 17 inch is aangeraden bij grafische interfaces (zoals een hoop xterms in enlightenment) voor CAD is een scherm van 21 inch nodig.
Een zeer belangerijk iets is dat het scherm non-interlaced is (niet flikkert), bovendien moet de refresh rate minimum 73 Hz zijn bij 15 inch schermen, 85 Hz wordt echter aangeraden, zeker bij 17 inch schermen. Een 21 inch scherm moet een refresh rate van 100 Hz hebben.
Het scherm moet draaibaar en kantelbaar zijn.

Het midden van het scherm moet vlak voor de ogen staan indien de gebruiker recht voor zich uit kijkt. Het scherm moet minimum op 50 cm van de ogen staan.
Scherm toetsenbord en schouder moeten op een rechte lijn liggen, dus niet het toestenbord voor je en het scherm rechts van je.

A.3.7  keyboard - het juiste toetstenbord op de juiste plaats

Het is nooit bewezen dat een ergonomisch toetsenbord echt helpt, maar het valt wel te verwachten, sommige standaarden raden ze al aan.
Een toetenbord moet een goede aanslage hebben (hangt af van persoon tot persoon), indien de persooon niet blind kan typen moet het toetsenbord een bleke kleur hebben en daarop donkere letters, een zwart toetsenbord is dus onergonomisch!
Een polssteun wordt door de ene studie als overbodige luxe en door de andere als essetieel beschouwd, persoonlijk werk ik liefst met, maar kan ik ook zonder pijn zonder werken.
Tussen de voorste rand van het toetsenbord (dichtst bij de gebruiker) en de rand van het bureau moet minimum de lengte van de onderarm zijn. Hoeken van 90 graden tussen boven en onderbenen, onderbeen en lichaam en boven en onderarm zijn ideaal, de voeten moeten plat op de grond staan.
Bij het indrukken van een toets, moet die tussen 2 en 4 mm bewegen, de middelste toetsenrij (die met qsdfghjklm bij een azerty klavier) mag niet meer dan 3 cm boven het bureaublad zijn.
Het toetsenbord moet verplaatst kunnen worden, maar het mag niet aan het scherm vasthangen en het moet op rubberen 'voetjes' staan, zodat het niet slipt.
Wie veel typt moet regelmatig rusten.
Het toetsenbord van een laptop kan onmogelijk genoeg zijn om dat van een desktop pc te vervangen, een extra extern toetsenbord op het bureau is essentieel bij intensief gebruik.

A.3.8  muis

Een muis moet goed werken en reageren, shortcuts zijn ergonomischer dan de muis!
Een muis moet aangenaam in de hand liggen, je moet er je hand op kunnen ontspannen.
Indien je muis nog een muisbal gebruikt, moet je een goede muismat hebben (persoonlijk geef ik de voorkeur aan papieren muismatten).
De kabel moet lang genoeg zijn, draadloze muize zijn enkel een luxe.
Je moet de axelleratie en dubbelklik snelheid kunnen aanpassen aan je wensen.

Appendix B
Over dit document

B.1  Informatie in verband met dit document

B.1.1  Nieuwe versies

Een nieuwe versie van dit document kun je altijd ophalen op mijn website : http://users.pandora.be/tux

B.1.2  Andere formaten

Dit document wordt verdeeld in pdf, dvi, tex, txt en html formaat, je kunt alle formaten ophalen van mijn website: http://users.pandora.be/tux

B.1.3  Mailinglists

Er zijn 4 mailinglijsten gewijd aan dit boek: Je moet je overigens geen zorgen maken over spam, ik ben geen spammer en andere kunnen niet naar de list zenden.

Appendix C
Changelog

Dit is het changes log:

* Sun Jul 29 2001 : Sven Vermeulen <sven.vermeulen@rug.ac.be>
  - Overgestapt naar eigen layout.
  
* Thu Aug 2 2001 : Jan Keirse <jan.keirse@mailanandews.com>
  - License verandert van GPL naar FDL 
  - Manual volledig aangepast aan nieuwe structuur en layout.
  - Fortune toegevoegt.
  - Shell script gemaakt om datum aan changes.txt toe te voegen (dch.sh).
    (kwestie van gemakkelijk te zijn)
  - MakeIt script aangepast om ook tarball met enkel de sources te maken.
  - MakeIt script aangepast om een nieuwe directory te creeeren bij de-
    compressie in plaats van alles in de actieve dir te plaatsen.
    
* Thu Aug 9 2001 : Jan Keirse <jan.keirse@mailandnews.com> 
  - Een aantal opties aan df toegevoegd.
  - aee toegevoegt (tekst van Blokkie)
  - a2ps toegevoegt 

* Fri Aug17 2001 : Jan Keirse <jan.keirse@pandora.be>
  - SwifT is dagelijks tools aan het inzenden, vandaag heb ik gencat getconf
    catchsegv getent en glibcbug toegevoegd.
    
* Sat Aug18 2001 : Jan Keirse <jan.keirse@pandora.be>
  - SwifT heeft vandaag over iconv geschreven

* Mon Aug20 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Ik heb een handleiding geschreven voor ed, zeer volledig :-)
  - SwifT heeft gisteren over ldd ingezonden

* Wed Aug22 2001 : Jan Keirse <jan.keirse@pandora.be> 
  - SwifT heeft tekst geschreven over locale, in part admin is chapter 
    gegevens opvragen toegevoegd getent werd daarnaar verplaatst (en 
    locale werd erin geplaatst).
  - Typfout in tekstje over wc verbetert. (er stond in het voorbeeldje wx
    in plaats van wc)

* Sun Aug26 2001 : Jan Keirse <jan.keirse@pandora.be>
  - SwifT heeft tekst geschreven over localedef.
  - Thibaut Fernagut heeft tekst geschreven over split, ftp, bc en heeft een 
    toevoeging gedaan aan de tekst over man. Ik heb deze teksten wel een héél
    klein beeke aangepast, omdat ze beter in de handleiding zouden passen.
  - Uit 'noodzaak' heb ik een hoofdstuk 'wetenschappelijke programma's' 
    toegevoegd, het is te vinden in de directory science.

* Mon Aug27 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Ik heb teksten over cal, id, groups, logname, nohup, sleep, uname, who,
    whoami en users toegevoegd.
 
* Wed Aug29 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Ik ben begonnen aan VI iMproved beyond basics, kheb de al bestaande tekst
    over vim veranderd in een tekst over vi en ietsje afgeslankt, en hem
    daarna bij de tekst-utils uit basiskennis gezet, want dat is tenslotte
    basiskennis, in de plaats van de tekst die er stond over vim komt nu een
    enorm uitgebreide tekst over vim, met al zijn capaciteiten.

  - memusage toegevoegt (tekst van SwifT)

* Fri Sep14 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Het project heeft een halve maand stilgelegen, helaas is het schooljaar
    terug begonnen en dus was er even geen tijd. Ik heb vandaag chmod toe - 
    gevoegd, de tekst voor de numerieke toewijzingen was al lang klaar, 
    maar ik vond geen tijd om die toe te voegen, dat heb ik nu dus gedaan
    en aangezien de tekst over rwx er blijkbaar nog niet was heb ik die 
    ook maar toegevoegd.

* Sat Sep29 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Makefile geschreven 
  - README file geschreven (over Makefile)
  - ldconfig toegevoegd (tekst van SwifT)
  - lsn toegevoegd (tekst van SwifT)
  - tzselect toegevoegd (tekst van SwifT)
  - zdump toegevoegd (tekst van SwifT)

* Thu Oct 4 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Opgedeeld in parts (verdere verdeling is nog nodig, 1 hoodstuk voor een
    commando is wat overdreven).
  
* Fri Oct 5 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Begonnen met proofreaden en aanvullen. 
  	Vervoledigd:
	 - ls, cd, chown, chgrp
	 - unix bestandssysteem
  - Informatie toegevoegd voor auteurs, indien je teksten wil schrijven,
    lees dit dan!

* Sat Oct 6 2001 : Jan Keirse <jan.keirse@pandora.be>
  - dd en bash intro toegevoegd (SwifT)
  - Foutje uit Makefile weg.
  - tarball met alles is niet langer beschikbaar wegens nutteloos.

* Mon Oct29 2001 : Jan Keirse <jan.keirse@pandora.be>
  - Files part toegevoegd.
  - Head toegevoegd.
  - Cross references voorbereid (please don't ever make me do that again).  


* Fri Nov 9 2001 : <jan.keirse@pandora.be>
	Vervolledigd:
	 -  euhm, zou je geloven dat ik het niet meer weet, maar enfin, alles
	    tussen chmod en ln is nu volledig, behalve du. (in basics)
	    
* Thu Dec20 2001 : <jan.keirse@pandora.be>
  - examens gehad, lang weggeweest (meer dan een maand :-( )
  - Informatie over drives (/dev/hda en zo) toegevoegd, thanks supc.
  - sync toegevoegd (thanks swift)
  - aspell toegevoegd (thanks swift)
  - tload toegevoegd

* Mon Feb18 2002 : <jan.keirse@pandora.be>
  - klein latexfoutje zorgde voor onbegrijpelijkheid (bedankt, Hugo, voor het
    melden van deze fout).

* Wed Feb20 2002 : <jan.keirse@pandora.be>
  - een grote hoop typo's verwijderd (nogmaals, bedankt Hugo)

* Thu Feb21 2002 : <jan.keirse@pandora.be>
  - Oeps, mijn correcties waren maar povertjes, sorry.

* Sun Feb24 2002 : <jan.keirse@pandora.be>
  - En nog maals typo's.

* Sun Jul14 2002 : <jan.keirse@pandora.be>
  - Het houd niet op het houd niet op, typo's (bedankt kris)

* Tue Aug27 2002 : <jan.keirse@pandora.be>
  - Typo's of wat had je gedacht (alweer bedankt kris)

\tth_fileclose0x80e7878  

Appendix D
GNU Free Documentation License

Version 1.1, March 2000

Copyright © 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble

The purpose of this License is to make a manual, textbook, or other written document ``free'' in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of ``copyleft'', which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

D.1  Applicability and Definitions

This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The ``Document'', below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as ``you''.

A ``Modified Version'' of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A ``Secondary Section'' is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The ``Invariant Sections'' are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.

The ``Cover Texts'' are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.

A ``Transparent'' copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not ``Transparent'' is called ``Opaque''.

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LATEX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.

The ``Title Page'' means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, ``Title Page'' means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

D.2  Verbatim Copying

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

D.3  Copying in Quantity

If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

D.4  Modifications

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section entitled ``Endorsements'', provided it contains nothing but endorsements of your Modified Version by various parties - for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

D.5  Combining Documents

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections entitled ``History'' in the various original documents, forming one section entitled ``History''; likewise combine any sections entitled ``Acknowledgements'', and any sections entitled ``Dedications''. You must delete all sections entitled ``Endorsements.''

D.6  Collections of Documents

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

D.7  Aggregation With Independent Works

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an ``aggregate'', and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

D.8  Translation

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

D.9  Termination

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

D.10  Future Revisions of This License

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License ör any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

Copyright © YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled ``GNU Free Documentation License''.

If you have no Invariant Sections, write ``with no Invariant Sections'' instead of saying which ones are invariant. If you have no Front-Cover Texts, write ``no Front-Cover Texts'' instead of ``Front-Cover Texts being LIST''; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Index (showing section)

.joerc, 12.4
/dev/fd0, 2.1

a2ps, 34.1
aee, 12.7
Apt-Get, 18.1
ASCII, 12.1
aspell, 7.1

bash, 3.2
bc, 36.1
Bcc:, 25.7
bestanden kopiëren, 4.8

cal, 40.0
catchsegv, 27.1
Cc:, 25.7
cd, 4.1
changing from: in pine, 25.7
chgrp, 4.6
chmod, 4.7
chown, 4.5
clear, 4.24
cls, 4.24
comprimeer, 8.6
configuratiebestanden, 14.1
cp, 4.8
dd, 4.9
decomprimeerd, 8.6
default-composer-hdrs, 25.7
dependencie failure, 18.1
Dependencies, 18.1
df, 4.10
dir, 4.2, 4.3
directory, 4.1
directorystructuur, 2.1
drives, 2.1
du, 4.11
dvi, 13.1
dvips, 13.1
dvisvga, 13.1

ed, 12.5
editor, 12.1
eject, 38.0
elm, 25.1
emacs, 12.4
email, 25.7
fetchmail, 25.2
fetchnews, 25.7
find, 4.25
fortune, 37.0
From:, 25.7
from:, 25.7

gencat, 28.0
getconf, 29.0
getent, 21.1
glibcbug, 30.0
GNU a2ps, 34.1
GnuPG, 24.1
grep, 7.5
groups, 21.6

halt, 10.1
hardlink, 2.2
head, 7.13
home directory, 12.4
HTML, 12.1
iconv, 7.14
id, 21.6
info, 5.2

jmacs, 12.4
Joe, 12.4
joe, 12.4
jpico, 12.4
jpine, 12.4
jstar, 12.4

kill, 19.1
killall, 19.2
kopiëeren, 4.8

LaTeX, 13.1
ldconfig, 18.2
link, 4.2
links, 4.12
ln, 2.2, 4.12
locale, 21.2
localedef, 32.0
logname, 21.6
ls, 4.2
Mail, 25.1
mail, 25.7
mail printen, 25.7
mailbox, 25.1
man, 5.1
meerdere email adressen in pine, 25.7
memusage, 27.2
mkdir, 4.13
modi, 7.2
mutt, 25.6
mv, 4.16, 5.3

news, 25.7
nieuwe versie, B.1
nieuws, 25.7
nohup, 35.0

passphraze, 24.1
passwd, 25.7
password, 25.7
pico, 12.4
pine, 12.4, 25.1, 25.7
pine printer, 25.7
printer, 25.7
reboot, 10.2
rechten, 4.2
Redhat package manager, 18.1
rm, 4.17
rmdir, 4.18
role, 25.7
rpm, 18.1

screen oriented editors, 12.2
shell scripts, 12.1
sleep, 11.5
sln, 33.0
softlink, 2.2
standaard unix edito, 7.2
StarWriter, 13.1
su, 20.1
Subject:, 25.7
symbolische, 4.12
sync, 4.19
syntax highlighting, 12.3
systeembestanden, 12.1
Tar, 8.6
tar.gz, 8.6
tekstverwerker, 12.1
tex, 13.1
tgz, 8.6
tload, 21.3
to:, 25.7
tzselect, 21.5, 22.1

uname, 21.4
UNICODE, 12.1
urpmi, 18.1
users, 21.6

vdir, 4.4
vi, 7.2, 12.2

wc, 7.29
website, B.1
wget, 26.2
who - wie is aangemeld?, 21.6
whoami, 21.6
word, 13.1
wordstar, 12.4
wysiwyg, 13.1
xdvi, 13.1
xvzf, 8.6

zdump, 21.5

Footnotes:

1Dit is een directory met links naar alle hardware

2voor mensen die nog niet veel weten van unix: een harde schijf wordt opgedeeld in partities, in windows is dat er meestal één, maar je kunt er ook meerdere maken, dan krijg je in windows bvb. C en D die op één harde schijf staan, in unix worden meestal meerdere partities gemaakt, vooral door ervaren gebruikers, omdat dit enorm veel voordelen heeft.

3mounten is het opnemen van partities of devices in de directorystructuur, zodat ze bruikbaar zijn

4Ter informatie: de huidige dir is altijd ./ en de bovenliggende ../

5path in het Engels

6Het commando 'dir' bestaat ook in linux, het heeft als resultaat ls -l

7Bvb. bij een shell-script of een programma

8zie een bestand als een verwijzing naar de ruimte op de harde plaats, dan is de inode die ruimte

9a staat voor all

10df staat voor disk free

11h staat voor human readable

12l staat voor local

13maar wel niet bij elk programma!

14cli: Command line interface

15Vroeger was dat ed

16n staat hier natuurlijk voor een natuurlijk getal

17Dit verwijdert dus een line-break

18wc staat voor word count

19ook sysvinit

20Advanced power management, zorgt er ondermeer voor, in combinatie met apmd, dat je pc na het afsluiten van je OS wordt afgezet

21Dit wil zeggen dat de editor niet line-based is, maar screen based, om het simpel uit te drukken, in een screen oriented editor hebben de omhoog en omlaag pijltjes op je toetsenbord nut, in een line-based editor niet.

22gebruik hiervoor het commando :syntax on , je kunt dit ook instellen in je .vimrc, zodat het standaard aanstaat: voeg een lijn met daarop syntax on toe.

23doe dit met de optie set showmatch, je kunt deze eventueel invoeren in je .vimrc

24Dit doe je met de optie set hlsearch

25tabs en spaties zijn voorbeelden van witkarakters

26case sensitive: Hoofdletter is niet gelijk aan Kleine letter

27bvb. een 386 met 2 mb ram en kernel 1.9

28dit is trouwens bijna altijd het geval in helpbestanden en menus.

29+ en - stellen eigenlijk ook de volgende en vorige lijn voor, je kunt ze dus ook gebruiken in bvb het move commando

30wysiwyg: what you see is what you get

31In dit geval gaat het om Jan Keirse, niet per se om een van de andere auteurs

32Dit is overigens niet lateks maar Lach-Tech of Lei-Tech uitgesproken

33Wat dan weer niet wil zeggen dat het resultaat lelijk is, velen vinden dat ze er professioneel en zelfs mooi uitzien, maar flashie zullen ze meestal wel niet zijn

34virtueel, want je kunt enkel bewijzen dat er een bug is, niet dat er geen is

35Dit is achtergrondinformatie, die de gebruiker kan lezen om de opties te begrijpen, maar die genegeerd worden door het programma zelf

36http://www.rpm.org

37http://www.linux-mandrake.com/cooker/urpmi.html

38http://bazar.conectiva.com.br/ godoy/apt-howto/index.html

39http://www.conectiva.com

40http://www.gnupg.org

41http://www.pgpi.com

42http://RFC.net/rfc2440.html

43http://www.gnupg.org/gph/en/manual.html

44dat is eigenlijk aangeraden

45bijvoorbeeld http://www.keyserver.net

46http://www.mutt.org

47http://www.mutt.org

48Je kan gebruik maken van simpele MTAs om dit probleem te overkomen. SMTP is hiervoor zeer geschikt.

49 "http://www.inf.enst.fr/ demaille/a2ps/"

50maand = een getal van 1 - 12, niet de naam van de maand


File translated from TEX by TTH, version 3.04.
On 27 Aug 2002, 10:23.