Voor gevorderden

De Command line (CLI)

Deze pagina is bedoeld voor iedereen die al een beetje bekend is met Linux.

Linux is de laatste jaren zeer gebruiksvriendelijk geworden dankzij de ontwikkelingen in de grafische interface(GUI). Daarmee kunt u de mogelijkheden van de computer echter niet volledig uitbuiten. Bovendien wordt hij er (bij elk besturingssysteem) trager door. Voor diegene die meer uit zijn pc wil halen is er de command line (CLI). Koudwatervrees is niet nodig. Als u maar weet wat u doet als u commando's uitvoert waarin su (superuser, root), sudo (superuser do), shred (shredder), mv (move=verplaats) of rm (remove=verwijder). Dat geldt ook als u een configuratiebestand bewerkt met een tekst-editor zoals gedit, ed, sed, vi, vim of nano. Voer zulke commando's dus dus zeker nooit zelf uit als ze niet van een officiële site van een distro of applicatie komen. Vindt u ze elders, controleer dan minimaal of betrouwbare sites ze ook aanbevelen. Voor het overige kunt u gerust aan de slag. U vindt het benodigde terminalvenster (of console) meestal onder "Hulpmiddelen".

Als de Terminal geopend is verschijnt een zwart knipperend blokje, de prompt, vaak voorafgegaan door wat informatie die eindigt met de symbolen ~$. De tilde (~) betekent dat u in uw home-map (map=directory; zie onder bij Tips) "staat". De $ betekent dat u ingelogd bent als gewone gebruiker (anders staat er een # (hekje). Als een opdracht succesvol is uitgevoerd verschijnt de prompt weer.

U krijgt hier geen complete handleiding voorgeschoteld. Nederlandstalige handleidingen, bijv. van Gnodde, Engelstalige handleidingen zoals 'Introduction to Linux - A Hands on Guide' van Machtelt Garrels, tutorials, boeken, manuals en cursussen zijn er genoeg te vinden op internet of daarbuiten. De bekende LInuxpocketguide kunt u hier inzien en voor ongeveer 10 euro te koop bij de boekhandel (kijkt u meteen even wat er nog meer staat).

Met deze stof krijgt u een idee van de mogelijkheden.

We beginnen met eenvoudige, onschuldige commando's om informatie te vergaren. Probeert u maar eens. Als u een letter verkeerd typt krijgt u hoogstens een foutmelding.

  • Algemeen: man intro, man man, info info, who, whoami,who am i, echo $HOME, echo $USER, whatis firefox, whereis firefox, firefox -h, w, uname -a, pwd, cal, date, ls, du -a ~,
  • Hardware en drivers: lshw, lshw -C display, lsmod (modules, drivers), lspci, lsusb, lshal, lspnp, aplay -l (audioplay optie:list).
  • Netwerk: ifconfig, iwconfig (w=wireless=draadloos), lshw -C network, netstat, netstat -nlp, ping www.ing.nl, ping 62.58.32.90, whois 195.248.87.188.
  • Systeem en processen:: df -h, jobs, ps, pstree, top, lsof (list open files), free, free -M, cat /boot/grub/menu.list, dmesg, tail /var/log/dmesg, locale,
  • Bestanden, etc. zoeken: find, find bestand, locate bestand, cat /etc/fstab,
  • en - als laatste - history.

Informatie over deze commando's vindt u met de commando's man het_commando of info het_commando (zonder toevoegingen zoals -a en bestand). Typefouten hebben bij deze commado's geen ongewenste effecten op uw systeem als u maar niet onverhoeds uw wachtwoord opgeeft als u dat gevraagd wordt. Deze CLI's zijn handig als u informatie wilt doorgeven. U kunt de output eenvoudig kopiëren.

Nog enkele tips en weetjes:

  • Elke distro voegt een aantal distro-specifieke commando's toe aan het Linux-arsenaal. Als uw distro is afgeleid van een andere distro dan zijn de commando's daarvan ook beschikbaar. Zo zijn Ubuntu, Knoppix en Freespire afgeleid van Debian met o.a. deze handige kaart.
  • Een opdracht breekt u af met met de CTR-C-toetscombinatie. Tekstuitvoer sluit u af met de q-toets. In overige gevallen werkt de ESC-toets vaak.
  • Je kunt handig gebruik maken van de TAB-toets.
    Probeer nog maar eens cat /boot/grub/grub.c<TAB> (=TAB-toets). Probeer ook: his<TAB>; of de "pijltje_naar_boven"-toets; of fi<TAB+ESC> of ls<TAB dubbelklikken>.
  • De mappen hebben de bekende boomstructuur. De stam (eigenlijk root) begint met het /-teken. /map1/map2 is een absoluut pad. map1/map2 is het pad vanaf de de map waar u "staat" (voorbeeld in volgende tip).
  • Als u veel teksten wil bekijken in bijv. de map grub dan kunt u in die map gaan "staan" met de opdracht cd /boot/grub/. Vervolgens typt u cat bestand1, enz, enz. (let op: zonder /). Met cd .. gaat u een map lager staan; in dit geval boot. Staat u in de map boot dan kunt u behalve met cd /boot/grub/ ook met cd grub/ weer naar grub. U ziet: hierbij is het /-teken weggelaten voor grub.
    Is de uitvoer zo lang dat die over het scherm flitst zet dan " | less" acher de opdracht. Bijvoorbeeld:dmesg | less. Gebruik vervolgens de spatiebalk. Wilt u alleen de regels waarin, bijvoorbeeld USB staat, type dan dmesg | grep USB. Of dmesg | grep -i usb (-i betekent ignore case: zoek zowel naar hoofd- als kleine letters).
  • Heeft u een toepassing die wel eens vastloopt, probeert u dan de opdracht "xkill" eens in een klein terminalvenster. De muispijl verandert in een doodskop en als u ermee naar een ander venster gaat en klikt dan stopt die toepassing. Let op: doe dit niet boven de werk- of taakbalken of als u uw document nog moet opslaan.
  • Een programma kunt u starten door de juiste naam ervan in te typen, bijvoorbeeld: firefox, firefox linux, firefox watismijnip. Door er na een spatie nog & achter te typen komt de promt direct terug. Bij problemen krijgt u foutmeldingen die u anders misschien niet te zien zou krijgen.
  • Vaak wordt op internet keurig voorgedaan wat u moet doen. U kunt de commando's stuk voor stuk kopiëren naar de terminal. Zorg wel dat u een beetje begrijpt wat u doet.
  • Wat zeker de moeite van het proberen waard is is FISH. Installeer fish met de pakketmanager en type vervolgens fish in de terminal.

Wilt u veranderingen in het systeem aanbrengen dan moet u een commando vooraf laten gaan door sudo, bijvoorbeeld: sudo ifdown eth1. Hiermee schakelt u de netwerkkaart eth1 uit. Sudo is ook nodig voor informatie die extra beschermd moet worden, bijvoorbeeld instellingen van de firewall (sudo iptables –-list) of de harde schijven (sudo fdisk -lu). Met sudo lshw -C network krijgt u meer informatie dan met lshw -C network. Na een sudo-opdracht wordt het wachtwoord van SU gevraagd. Bent u sudo vergeten dan krijgt u de melding: You must be root (o.i.d.).
Weest u voorzichtig met commando's die alleen de "Super User" (root; spreek uit: "roet") kan geven. U kunt het systeem danig in de war schoppen. De pakketmanager die automatisch programma's (de)installeerd komt hierdoor het meeste in de problemen. Die zijn wel op te lossen, maar alleen als u een expert bent.
U kunt ook inloggen als root, bijvoorbeeld met sudo su (uitloggen met su "gebruikersnaam"), maar het is veiliger om alleen sudo "commando" te gebruiken.
Normaliter heeft u als beginner "sudo-commando's" niet nodig. Uitzonderingen zijn:

- de driver van een stukje hardware zit nog niet in de distro en die heeft nog geen grafisch (klik-) programmaatje om die driver te installeren.
- u heeft een eenvoudige distro en wilt meer dan die kan bieden.
- u heeft een zeer goed uitgeruste distro maar wilt toch nog meer; u bent onverzadigbaar.
- u wilt software installeren die nog niet via het automatische installatieprogramma (pakket- of installatiemanager) van de distro binnengehaald kan worden. Meer info hier.
- Tijdens het updaten is de stroom uitgevallen. Probeer dan: sudo dpkg --configure -a om gebroken pakketten te repareren. Baadt het niet dan schaadt het niet.
- uw pc is zo simpel dat geen enkele GUI erop geïnstalleerd kan worden

Bent u enthousiast geworden dan kunt u zich verder bekwamen met een zeer goedkope LPI-cursus.

Het shell-script

Met de CLI kunt u dus alle mogelijkheden van Linux uitbuiten, met het shell-script kunt u dat bij veelgebruikte combinaties van commando's nog gemakkelijker. Hier volgt een versimpeld voorbeeld waarbij snel - met één klik en zonder poespas - een buienvoorspelling van internet gehaald wordt.

#We beginnen met een uitgebreide toelichting. Daar zetten we eerst een hekje voor zodat Linux weet dat dit geen opdrachtregel is.
#Met dit programmaatje (script) dat men bij de opstart
en op regelmatige tijden kan laten lopen, wordt een png-bestand gemaakt die de verwachte buien boven Nederland op het hele uur na het huidige tijdstip laat zien. Dit bestand worden dan in een venster getoond, of staat dan op de Desktop zodat men op het icoontje de buien al kan zien aankomen.
#Geef de datum en uur; verhoog uur met 1 en zet resultaat in $TYD
TYD=$(echo $(date +%Y%m%d%H)+1|bc)00
# De plaatjes worden gehaald uit http://www.buienradar.nl/ waarbij $TYD wordt ingevuld in de URL die de buien weergeeft. De GIF-plaatjes worden in de persoonlijke map opgeslagen.
*De kaart van Nederland:

wget -q -O kaart.gif "http://buienradar.nl/kaart.gif"
#Het plaatje met alleen de buien:
wget -q -O buien.gif "http://buienradar.nl/images.aspx?jaar=-4&bliksem=0&voor=$TYD&soort=loop1uur&tijdid=$TYDID"
# De twee plaatjes worden geconverteerd naar PNG-formaat en op elkaar gelegd.
convert -compose over -composite kaart.gif buien.gif buienkaart.png
# Dit plaatje wordt getoond.
display buienkaart.png

#en/of is zichtbaar als icoon op het bureaublad.
#Zet een hekje voor de opdrachtregel die niet moet worden uitgevoerd.
mv buienkaart.png Desktop

#Eerste ontwerp door Jeroen. Met dank aan: Wietse, Hans, Udo, Bert-Jan, Hugo en Roelandt voor bug-reports en suggesties voor uitbreidingen en verbeteringen (nog niet verwerkt om het voorbeeld simpel te houden).
#Iedereen die zich houdt aan de GPL-licentie mag dit programma gebruiken, aanpassen, doorgeven of verkopen.

Kopiëer dit script naar een nieuw tekstbestand dat u gemaakt hebt met een simpele tekstverwerker (kladblok; let op eventuele, geïntroduceerde Enters, e.d.). Haal eventuele bugs (wat als het programma na 23.00 uur wordt gestart!?) en de vele schoonheidsfouten eruit, breidt het uit, geef het bestandje een naam, zorg dat het uitvoerbaar (executable) wordt en maak een opstart-icoontje voor de taakbalk.

Op de Linux-mailinglijst zijn al enkele suggesties gedaan en zelfs nieuwe scripts geschreven. Want dat is het voordeel van open source, iedereen wordt geprikkeld om mee te doen.

Misschien groeit dit uit tot een groot project met een eigen website, wie weet! Er komt dan ook een moment dat het programma naar machinetaal gecompileerd wordt omdat het anders te traag wordt. Dank zij de GPL-licentie blijft de broncode open en het script vrij te gebruiken en aan te passen.

Er zijn tal van scripts te bedenken, bijvoorbeeld uw wilt met een muziekje gewaarschuwd worden wanneer een nieuwsbrief van uw kruidenier binnenkomt met daarin de kreet ¨twee halen, één betalen¨ staat. Of de computer moet automatisch uitgeschakeld worden als op een getoonde webpagina staat: ¨Sinterklaas bestaat niet¨

.