Verder Terug Inhoud

4. Bestanden en programma's

4.1 Bestanden: Opmerkingen vooraf

Linux heeft een directory- en bestandsstructuur die erg veel lijkt op die van DOS/Win. Bestanden hebben namen die aan bepaalde regels moeten voldoen, worden opgeslagen in directory's, een aantal ervan zijn uitvoerbaar, en hiervan hebben de meeste commando-switches. Bovendien kun je gebruik maken van wildcard characters (jokertekens), redirection en piping (het omleiden/doorsturen van uitvoer). Er zijn slechts een paar kleine verschillen:

Je kunt nu naar de sectie Commando's van DOS naar Linux vertalen gaan, maar als ik jou was zou ik verder lezen.

4.2 Symbolische links

UNIX heeft een type bestand dat onder DOS niet voorkomt: de symbolische link. Je kunt hierbij denken aan een verwijzer naar een bestand of directory, en het kan in plaats van het bestand of directory waarnaar het verwijst worden gebruikt; het is vergelijkbaar met de snelkoppelingen van Windows. Voorbeelden van symbolische links zijn /usr/X11, die naar /usr/X11R6 verwijst; /dev/modem, die naar /dev/ttyS0 of /dev/ttyS1 verwijst.

Om een symbolische link aan te maken:

$ ln -s <bestand_of_dir> <linknaam>

Voorbeeld:

$ ln -s /usr/doc/g77/DOC g77manual.txt

Nu kun je naar g77manual.txt verwijzen in plaats van /usr/doc/g77/DOC. Links verschijnen als volgt in directorylistings:

$ ls -F
g77manual.txt@
$ ls -l
(van alles en nog wat...)           g77manual.txt -> /usr/doc/g77/DOC

4.3 Permissies en Eigenaarschap

DOS bestanden en directory's hebben de volgende kenmerken: A (archive = archief), H (hidden = verborgen), R (read-only = alleen lezen), en S (system = systeem). Alleen H en R hebben onder Linux een betekenis: verborgen bestanden beginnen met een punt, en wat betreft het kenmerk R, lees verder.

Onder UNIX heeft een bestand ``permissies'' en een eigenaar, die op zijn beurt weer aan een ``groep'' toebehoort. Kijk naar dit voorbeeld:

$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

In het eerste veld staan de permissies van het bestand /bin/ls, welke aan root toebehoort, groep bin. De resterende informatie latend voor wat het is, onthoud dat -rwxr-xr-x van links naar rechts betekent:

- het bestandstype is (- = gewoon bestand, d = directory, l = link, enz.); rwx zijn de permissies voor de eigenaar van het bestand (read/lezen, write/schrijven, execute/uitvoeren); r-x zijn de permissies voor de groep van de eigenaar van het bestand (read, execute); (Ik ga het niet hebben over het begrip groep, je kunt zolang je beginner bent zonder ;-0 r-x zijn de permissies voor alle andere gebruikers (read, execute).

De directory /bin heeft ook permissies: zie sectie Directory Permissies voor verdere details. Daarom kun je het bestand /bin/ls niet verwijderen tenzij je root bent: je hebt geen permissie om dat te doen. Het commando voor het wijzigen van de bestandspermissies is:

$ chmod <wieXperm> <file>

`wie' is u (user, dat is de eigenaar), g (group), o (other=anderen), X is of + of -, perm is r (read), w (write), of x (execute). Algemene voorbeelden van chmod zijn:

$ chmod +x bestand

hiermee wordt de execute permissie voor het bestand ingesteld.

$ chmod go-rw bestand

hiermee wordt de read en write permissies voor iedereen behalve de eigenaar ingesteld.

$ chmod ugo+rwx bestand

dit geeft iedereen read, write en execute permissie.

# chmod +s bestand

hiermee wordt een zogenoemd ``setuid'' of ``suid'' bestand aangemaakt--- een bestand dat iedereen uit mag voeren met de privileges van de eigenaar. Je zal ongetwijfeld root suid bestanden tegenkomen; dit zijn vaak belangrijke systeembestanden, zoals de X-server.

Een beknoptere manier om naar permissies te refereren is met cijfers: rwxr-xr-x kan worden uitgedrukt als 755 (iedere letter correspondeert met een bit: --- is 0, --x is 1, -w- is 2, -wx is 3...). Het ziet er moeilijk uit, maar met wat oefening zal je het concept begrijpen. root, als superuser, kan de bestandspermissies van iedereen wijzigen. LMP.

4.4 Bestanden: Commando's vertalen

Links de DOS-commando's; rechts de Linux tegenhanger.

ATTRIB:         chmod
COPY:           cp
DEL:            rm
MOVE:           mv
REN:            mv
TYPE:           more, less, cat

Omleidings- en andere operatoren: < > >> |

Wildcards: * ?

nul: /dev/null

prn, lpt1: /dev/lp0 of /dev/lp1; lpr

Voorbeelden

DOS                                     Linux
---------------------------------------------------------------------

C:\GUIDO>ATTRIB +R FILE.TXT             $ chmod 400 file.txt
C:\GUIDO>COPY JOE.TXT JOE.DOC           $ cp joe.txt joe.doc
C:\GUIDO>COPY *.* TOTAL                 $ cat * > total
C:\GUIDO>COPY FRACTALS.DOC PRN          $ lpr fractals.doc
C:\GUIDO>DEL TEMP                       $ rm temp
C:\GUIDO>DEL *.BAK                      $ rm *~
C:\GUIDO>MOVE PAPER.TXT TMP\            $ mv paper.txt tmp/
C:\GUIDO>REN PAPER.TXT PAPER.ASC        $ mv paper.txt paper.asc
C:\GUIDO>PRINT LETTER.TXT               $ lpr letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ more letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ less letter.txt
C:\GUIDO>TYPE LETTER.TXT > NUL          $ cat letter.txt > /dev/null
        n/a                             $ more *.txt *.asc
        n/a                             $ cat section*.txt | less

Opmerkingen:

4.5 Programma's uitvoeren: Multitasking en Sessies

Om een programma uit te voeren, typ je net als onder DOS de naam ervan in. Als de directory (Sectie Gebruik van directory's) waarin het programma is opgeslagen in het PATH is opgenomen (Sectie Systeem initialisatiebestanden), zal het programma worden opgestart. Uitzondering: in tegenstelling tot DOS, zal een programma in de huidige directory niet worden uitgevoerd, tenzij de directory in het PATH is opgenomen. Je kunt hieraan ontsnappen: als prog je programma is, typ dan ./prog.

Zo ziet een typische commandoregel eruit:

$ commando [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< invoer] [> uitvoer]

waar de -s1, ..., -sn staan voor programma-switches. par1, ..., parn zijn de programma parameters. Je kunt verscheidene commando's op de commandoregel aanroepen:

$ commando-1 ; commando-2 ; ... ; commando-n

Dat is alles over het draaien van programma's, maar het is eenvoudig een stap verder te gaan. Eén van de belangrijkste redenen om Linux te gebruiken is dat het een multitasking os is--- het kan verscheidene programma's tegelijkertijd draaien (van nu af aan, processen). Je kunt processen in de achtergrond opstarten en gewoon door blijven werken. Bovendien staat Linux toe dat je meerdere sessies hebt lopen: het is alsof je veel computers tegelijk aan het werk zet!

Met deze commando's kun je tegelijkertijd een disk formatteren, een boel bestanden zippen, een programma compileren en een archief uitpakken en nog steeds de prompt tot je beschikking hebben. Probeer dit eens met Windows, enkel om het verschil in performance te zien (als het niet crasht, uiteraard).

4.6 Programma's op Remote computers uitvoeren

Voor het uitvoeren van een programma op een remote computer met de naam remote.machine.edu:

$ telnet remote.machine.edu

Start na het inloggen je favoriete programma. Onnodig te zeggen dat je een shell-account op de remote computer nodig hebt.

Als je X11 hebt, kun je zelfs een X-applicatie op een remote computer uitvoeren en het op je X scherm weergeven. Stel dat remote.machine.edu de remote X-computer is en local.linux.box je Linux-computer. Om een X-programma vanaf local.linux.box dat zich bevindt op remote.machine.edu uit te voeren, doe je het volgende:

En ziedaar! Nu zal prognaam op remote.machine.edu worden opgestart en op je computer worden weergegeven. Probeer dit echter niet via een modem, aangezien dit zo langzaam is dat het niet meer werkbaar is. Bovendien is dit een grove en onveilige methode: lees alsjeblieft de ``Remote X Apps mini-HOWTO'' op http://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html.


Verder Terug Inhoud