Hoofdstuk 5. De Unix Shell

Inhoudsopgave
Unix-opdrachten
Jezelf helpen
Informatie opslaan
Informatie verplaatsen

Het is tamelijk eenvoudig onder het UNIX-besturingssysteem bestanden aan te maken. Daarom hebben gebruikers de neiging talloze bestanden aan te maken waarbij ze van grote hoeveelheden diskruimte gebruik maken. Er wordt beweerd dat de message-of-the-day die gebruikers aangeeft hun bestanden op te schonen de enige standaard van alle UNIX-systemen is. System V.2 administrator's guide

Unix-opdrachten

Wanneer je voor het eerst op een Unix-systeem inlogt, wordt je op iets gepresenteerd dat er ongeveer zo uitziet:


/home/larry#

Dat "iets" wordt een prompt genoemd. Zoals de naam al aangeeft, geeft het je de prompt (spoort het je aan) om een opdracht in te voeren. Iedere Unix-opdracht bestaat uit een reeks letters, nummers en tekens. Er zijn echter geen spaties. Een aantal geldige Unix-opdrachten is mail, cat en CMU_is_Nummer-5. Een aantal tekens is niet toegestaan, we zullen hier later op ingaan. Unix is tevens hoofdlettergevoelig. Dit betekent dat cat en Cat verschillende opdrachten zijn. [1] Een aantal besturingssystemen, zoals OS/2 of Windows NT is letterkast behoudend, maar niet hoofdlettergevoelig. In de praktijk maakt Unix zelden gebruik van een verschillende letterkast. Een situatie waarbij cat en Cat verschillende opdrachten zijn, is zeer ongebruikelijk.

De prompt wordt door een speciaal programma, genaamd de shell, getoond. Shells accepteren opdrachten en voeren deze uit. Ze kunnen ook in hun eigen taal worden geprogrammeerd, en programma's geschreven in die taal worden "shell-scripts" genoemd.

Er zijn onder Unix twee belangrijke typen shells: Bourne shells en C shells. Bourne shells zijn benoemd naar hun uitvinder, Steven Bourne. Steven Bourne schreef de oorspronkelijke Unix-shell sh , en de meeste shells eindigen sindsdien op de letters sh om aan te geven dat het uitbreidingen zijn op het oorspronkelijke idee. Er zijn veel implementaties van deze shell, en al die specifieke shellprogramma's worden Bourne shells genoemd. Een ander klasse shell, C-shells (oorspronkelijk geïmplementeerd door Bill Joy ), is ook algemeen in het gebruik. Volgens traditie, werden Bourne shells gebruikt voor shellscripts en compabiliteit met de oorspronkelijke sh terwijl C-shells werden gebruikt voor interactief gebruik. (C shells hadden het voordeel dat ze betere interactieve features bezaten maar wat moeilijkere programmeerfeatures.)

Linux wordt geleverd met een Bourne shell genaamd bash geschreven door de Free Software Foundation. bash staat voor Bourne Again Shell, een van de slechte woordspelingen in Unix. Het is een "geavanceerde" Bourne shell: het bevat de standaardprogrammeerfeatures aangetroffen in alle Bourne shells met veel interactieve features over het algemeen aangetroffen in C-shells. bash is onder Linux de standaardshell.

Wanneer je voor het eerst inlogt, wordt de prompt door bash getoond, en ben je je eerste Unix-programma aan het uitvoeren, de bash-shell. Zolang je bent ingelogd, zal de bash-shell continue actief zijn.

Een typische Unix-opdracht

De eerste opdracht die je moet kennen is cat. Voor gebruik typ je cat en dan op return:


/home/larry# cat

Als de cursor nu op een eigen regel staat, heb je het goed gedaan. Er zijn diverse variaties mogelijk op de in te tikken opdracht, waarvan de een wel en de ander niet het beoogde resultaat op zal leveren.

  • Heb je de opdracht cat niet juist gespeld, dan krijg je te zien:

    
/home/larry#  ct
    ct: command not found
    /home/larry#
    

    Dus de shell informeert je dat het een programma met de naam "ct" niet kon vinden en geeft je een nieuwe prompt om mee te werken. Onthoud daarom dat Unix hoofdlettergevoelig is: CAT is een spelfout.

  • Het zou ook kunnen dat je witruimte voor de opdracht hebt geplaatst, zoals in:[2]

    
/home/larry#     cat     
    

    Dit produceert het juiste resultaat en voert het programma cat uit.

  • Je zou ook de return in kunnen drukken op een lege regel. Ga je gang. Er gebeurt absoluut niks.

Ik veronderstel dat je je nu in cat bevindt. Hoopvol vraag je je af wat het doet. Nee, het is geen spel. cat is een handig utility dat in eerste instantie helemaal niet nuttig lijkt. Probeer iets in te tikken en druk dan op de return-toets. Je zou het volgende te zien moeten krijgen:


/home/larry# cat
Help! Ik zit vast in een Linux programma!
Help! Ik zit vast in een Linux programma!

(De benadrukte tekst geeft aan wat ik in cat intikte.) Wat cat lijkt te doen is de tekst direct naar je terugkaatsen. Dit kan soms handig zijn, maar dat is het nu niet. Dus laten we het programma afsluiten en verdergaan met opdrachten die duidelijkere voordelen hebben.

Veel Unix-opdrachten worden afgesloten door het intikken[3] van Ctrl-d Ctrl-d is het end-of-file teken, of in 't kort EOF. Als alternatief staat het voor end-of-text , afhankelijk van het boek dat je leest. Ik zal er naar refereren als een end-of-file. Het is een besturingsteken dat Unix-programma's (of een ander programma) aangeeft dat je klaar bent met het invoeren van gegevens. Wanneer cat ziet dat je verder niets anders typt, sluit het af.

Probeer ook eens het programma sort. Zoals de naam ervan al aangeeft is het een sorteerprogramma. Als je een paar regels intikt, en dan Ctrl-d, dan zal het deze regels gesorteerd weergeven. Deze typen programma's worden filters genoemd, omdat ze tekst accepteren als invoer, het filteren, en de tekst vervolgens iets gewijzigd uitvoeren. Zowel cat als sort zijn ongebruikelijke filters. cat is ongebruikelijk omdat het tekst inleest en geen wijzigingen op deze tekst aanbrengt. sort is ongebruikelijk omdat het regels inleest en niets als uitvoer geeft totdat het 't EOF teken tegenkomt. Veel filters worden op een regel-per-regel basis uitgevoerd: ze zullen een regel inlezen, wat berekeningen uitvoeren en een andere regel als uitvoer geven.

Noten

[1]

Hoofdlettergevoeligheid is een zeer persoonlijk iets.

[2]

De ` ' geeft aan dat de gebruiker een spatie intikte.

[3]

Houd de toets met het label "Ctrl" ingedrukt en druk dan de "d" in, en laat beiden dan los.