Ik Van Linux

Je Eerste Stapjes In De Terminal


Hoe je in de terminal komt maakt niet uit. Je wilt gewoon commando’s gaan uitvoeren om de computer te gaan besturen. Maar welke commando’s?
Laten we eerst maar even gaan rondkijken in onze computer. Ik ga er dus even van uit dat je de terminal hebt gestart en dat je zo nodig al bent ingelogd.

De Prompt


Je wordt altijd begroet door de Prompt. De Prompt is een stukje tekst aan het begin van de laatste regel op het scherm, met daarachter een al dan niet knipperende cursor. De tekst van de Prompt is geheel configureerbaar. Maar standaard geeft de Prompt aan welke gebruiker is ingelogd en welke machine je aan het bedienen bent.

pi@raspberrypi:~ $

Daarachter staat in welke directory (map) je op dat moment staat (ik gebruik de term directory en map door elkaar, maar ze betekenen hetzelfde). In het voorbeeld is dat een ~ symbool, wat een alternatieve schrijfwijze is voor je home directory. In het geval van de Raspberry Pi is dat de directory /home/pi . Het dollar teken geeft aan dat je maar een normale gebruiker bent. De systeembeheerder, met de standaardnaam root, heeft doorgaans het # symbool als laatste letter van de Prompt.
De Prompt nodigt je uit om commando’s te gaan intypen. Zodra de computer weer klaar is met zo’n commando komt er weer een nieuwe Prompt, waarop je het volgende commando weer kunt intypen.

Type maar eens een commando in. Laten we dit eens proberen:

pi@raspberrypi:~ $ console
-bash: console: command not found

Hmmm. Dat ging al fout. Geen nood, dat doe ik expres. Het eerste deel hoef je natuurlijk niet in te typen, pi@raspberrypi:~ $ was de Prompt. Alles wat je in moet typen is het woord console, en dan mag je op Enter drukken.
Als antwoord krijg je een foutmelding, in het Engels. Maar het lijkt me niet moeilijk te begrijpen wat die foutmelding betekent. Het commando wat je gegeven hebt bestaat gewoon domweg niet.

Opmerking: Commando’s in Linux zijn hoofdlettergevoelig. Verreweg de meeste commando’s bestaan uitsluitend uit kleine letters.

Commando’s in Linux komen meestal in de vorm van een uitvoerbaar bestand. Er zijn ook wat ingebouwde commando’s, maar dat verschil merken we hier niet.
Voor het zoeken naar de uitvoerbare commando’s maakt Linux gebruik van een zoekpad. Dit zoekpad is een lijst met meerdere pad namen, die een voor een afgezocht worden naar het ingetypte commando. Wordt dat commando nergens in een van de paden gevonden dan zou het nog een ingebouwd commando kunnen zijn. Maar als dat ook niet het geval is krijgen we dus de command not found fout te zien.

ls Ons Eerste Echte Commando


Laten we iets anders proberen. Gewoon op de volgende regel, want zoals je ziet is er weer een nieuwe Prompt afgedrukt, met daarachter een al dan niet knipperende cursor.
Vanaf nu geef ik alleen aan wat je in moet typen, en eventueel wat de output van het programma is. Wat je in moet typen staat steeds vet gedrukt.

ls

Het bovenstaande commando (el-es, dus niet i met een hoofdletter) geeft wellicht meteen een nieuwe Prompt terug. Maar het kan ook zijn dat je wat tekst te zien krijgt.
Het ls commando geeft de directory listing van de huidige directory weer. Dat kan gewoon niets zijn als de directory leeg is, maar het kan ook een hele lange waslijst van bestanden en andere directories zijn als je toevallig heel veel in die directory hebt staan.
In Linux zie je vaak commando’s die afkortingen zijn van wat ze werkelijk doen. Veel van die commandos’ zijn slechts 2 of 3 letters lang. Dan hoef je niet zo veel te typen. Hier is ls de afkorting van LiSt bijvoorbeeld.

Parameters

Meestal kun je nog parameters opgeven na een commando. Soms zijn die parameters zelfs verplicht, gewoon omdat het commando anders niet weet wat je bedoelt.

ls /
bin  boot  dev  etc  home  lib  lost+found  media mnt
opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Dit keer geeft het ls commando de inhoud van de zogenaamde root directory weer. Root is hier het engelse woord van wortel, zoals die van een boom of struik. De takken zijn dan de directories die daar weer aan gekoppeld zijn. Bestanden kun je beschouwen als de bladeren aan die takken.

ls /etc

Dit commando geeft de inhoud weer van de directory /etc . Dat is dus de directory die etc heet en direct gekoppeld is met de root directory. Wanneer een pad (een aangesloten lijst van directories) begint met een / dan hebben we het over een absoluut pad. Ongeacht in welke directory je je ook bevindt, een absoluut pad wijst je altijd de weg naar hetzelfde doel.
Het tegenovergestelde van een absoluut pad is een relatief pad. Zo’n pad begint dus NIET met een / teken. Bijvoorbeeld:

ls Documents/Userguides

Wijst dus naar de directory Documents vanuit het huidige pad, en dan ook nog eens naar de directory Userguides vanuit de directory Documents. Het is dus heel belangrijk dat je al op het goede punt vertrekt om op de juiste bestemming aan te komen.

Switches

En dan zijn er ook nog de switches. Switches geven opties aan die je aan een commando kunt meegeven.
Ik heb switches hier expres niet vertaald naar schakelaars, want dat slaat m.i. nergens op. Dat is een mooi voorbeeld van onnodige vertalingen denk ik. Als je switches dan toch perse zou willen vertalen, maak er dan opties van.

Korte switches bestaan meestal uit een - teken gevolgd door een enkele letter. Soms wordt een switch ook nog gevolgd door een getal. Maar daarover later meer.
Lange switches beginnen meestal met twee - tekens, gevolgd door een woord. Lange switches worden vaak gebruikt als alternatief voor korte switches. Een lange switch is namelijk vaak leesbaarder. Maar soms zitten er simpelweg te weinig (zinvolle) letters in het alfabet om alle korte switches te kunnen definiëren die je wilt.
Enkele voorbeeld switches voor het ls commando zijn hier wel op zijn plaats denk ik.

ls -l
ls -l -a
ls -la
ls -al
ls --all -l

Het eerste voorbeeld heeft een switch die ons de lange versie van de directory inhoud toont. Hierbij wordt niet alleen filenaam getoond, maar ook de rechten, de filelengte, het filetype en de laatste datum waarop de file is beschreven.
Het tweede voorbeeld heeft twee switches. De -l switch toont weer de lange versie, en de -a switch toont alles, dus ook verborgen bestanden. Wanneer een bestandsnaam of directorynaam met een punt begint is het altijd een verborgen bestand in Linux. Deze bestanden worden normaal dus niet getoond. Maar door de -a switch te gebruiken bij het ls commando krijg je ze wel te zien.
Het derde voorbeeld toont het combineren van twee switches. Vaak kun je meerdere switches achter elkaar plaatsen. Dat is dus minder typewerk. Dus ls -l -a is gelijk aan ls -la, en het is ook gelijk aan ls -al of ls -a -l . De volgorde van de switches is dus niet belangrijk.
Het laatste voorbeeld toont een mix van korte en lange switches. De --all switch is een lange switch. In dit geval is dat een equivalent van het de korte -a switch. De -l switch heeft bij het ls commando geen lange variant.

Help

De meeste commando’s kennen de --help switch. Deze voert het betreffende commando dus niet uit, maar geeft een help pagina. Deze pagina’s zijn meestal in de taal van je OS, maar je moet niet vreemd opkijken als niet alle help pagina’s vertaald zijn in het Nederlands. Dat is dus weer een mooi voorbeeld van het niet consequent zijn van de vertalingen.

Switches en parameters zijn ook te combineren. Over het algemeen maakt de volgorde niet uit, maar dat is helaas niet altijd zo.

ls -l /var/log

Dit commando geeft bijvoorbeeld de lange versie van de directory /var/log weer.

Zo, we hebben ons eerste commando in de terminal leren kennen, samen met zijn meest gebruikte switches. Het ls commando kent nog een paar dozijn switches meer, maar die worden niet heel vaak gebruikt. Je kunt ls --help opgeven om ze eens door te nemen als je daar behoefte aan hebt. Maar voor nu is het voldoende zo.

Als je nu wilt stoppen type je het exit commando en je terminal wordt gesloten. Wil je meteen verder gaan kan dat ook natuurlijk. Je kunt op elk gewenst moment exit intypen achter de Prompt om ermee te stoppen.

Helemaal stoppen


Het kan ook zijn dat het nu bedtijd is. Je wilt de computer uitzetten en gaan slapen. Je kunt natuurlijk gewoon de stekker trekken. De Raspberry Pi, en andere moderne Linuxen maken gebruik van een journalling file system. Dat zijn file systemen die je niet kapot kunt krijgen als de spanning onverwacht wegvalt.
Maar het is natuurlijk veel netter om de computer eerst uit te schakelen. Dat doe je met het commando:

sudo shutdown now

Standaard hoef je bij de Raspberry Pi dan geen wachtwoord op te geven. Maar als je je systeem wat veiliger gemaakt hebt moet dat wel, om te voorkomen dat je dit soort commando’s per ongeluk uitvoert.
Je hoeft nu nog niet te begrijpen wat hier gebeurt, maar ik zal het toch even uitleggen, voor het geval je nieuwsgierig bent. Het eigenlijke commando om je computer uit te schakelen is het commando shutdown (er zijn er nog meer, maar die doen allemaal hetzelfde, met een iets andere schrijfwijze). Het shutdown commando mag echter niet worden uitgevoerd door een normale gebruiker. Linux is een multi-user systeem en je wilt niet hebben dat de ene gebruiker het systeem uitschakelt, terwijl er nog andere gebruikers met de machine bezig zijn. Daarom moet je het commando vooraf laten gaan door het sudo commando. Dat staat voor Super User DO (uitvoeren als administrator heet zoiets in Windows). Meestal moet je dan eerst nog je wachtwoord intypen om superuser te mogen worden. En weer worden de tekens van je wachtwoord niet op het scherm getoond, maar daar zijn we inmiddels wel aan gewend hoop ik.
Tenslotte staat er nog het woordje now achter het commando. Normaal gesproken wordt de computer pas na een vertraging van 1 minuut uitgeschakeld. Het idee daarachter is dat andere gebruikers dan een bericht krijgen van het systeem dat het zeer binnenkort uitgeschakeld gaat worden. Je kunt dan nog ingrijpen met het commando sudo shutdown -c om het uitschakelen ongedaan te maken (cancel). Door de parameter now mee te geven vertel je de computer dat je geen bedenktijd wenst te hebben. Het systeem gaat dan meteen uit.

Overigens gaat de Raspberry Pi niet echt uit. Het systeem wordt gestopt en doet helemaal niets meer, maar de spanning blijft er op staan. Een normale PC met Linux erop zou wel helemaal uitschakelen. Om de Raspberry Pi weer aan de gang te krijgen moet je dus zelf even de voeding loskoppelen en weer opnieuw aankoppelen.