In Linux kun je alles met de muis doen. Dat werkt prima en het ziet er nog goed uit ook. Mensen die al langer met Linux werken, geven er echter de voorkeur aan om veel op de opdrachtregel (commandline) te doen. En dat is niet voor niets.
Wanneer je een opdracht aan je Linux-systeem wilt geven, je wilt bijvoorbeeld een bestand naar een andere map verplaatsen, dan kan dat via het intoetsen van een opdracht (commando), of door het bestand met je muis in een grafische bestandsbeheerder te verslepen. De laatste manier met de muis, lijkt eenvoudiger. Maar zoals altijd ligt ook hier de Wet van Behoud van Ellende op de loer: geen voordeel zonder nadeel. Het voordeel van het gebruiken van een muisgestuurd systeem is vooral dat je er weinig kennis voor nodig schijnt te hebben. Je hoeft geen moeilijke opdrachten uit je hoofd te kennen of handleiding te raadplegen. Toch geven ervaren Linux-gebruikers de voorkeur aan het intypen van opdrachten.
De kracht van Linux bestaat uit het achter elkaar kunnen knopen van een aantal kleine programma's. Er wordt gezegd dat in Linux de filosofie wordt aangehangen dat een programma maar één ding moet doen en dat het dat zo goed mogelijk moet doen. Kleine programma's zijn minder complex, waardoor ze minder bugs zullen bevatten. Het aan elkaar kunnen knopen van verschillende programma's blijkt in de praktijk tot een zeer krachtig en flexibel systeem te leiden. Je kunt dit echter alleen via het intypen van opdrachten bewerkstelligen, of door scripts te maken. In een click-omgeving lukt dit niet.
Een groot voordeel van werken met de opdrachtregel is dat je deze opdrachten ook door een script kunt laten uitvoeren. Wanneer je een nieuwe gebruiker op je systeem moet aanmaken dan lijkt het intypen van opdrachten ingewikkelder dan een paar muisklikken in een point-&-click-omgeving, zodra je echter vijfhonderd nieuwe gebruikers aan moet maken, begrijp je al snel het grote voordeel van het kunnen werken met een script.
Een ander groot voordeel van werken via de opdrachtregel is dat je dit ook gemakkelijk van een afstand kunt doen. Het maakt niet uit of je rechtstreeks op de terminal van je systeem zit te werken, of dat je via het internet ingelogd bent op een machine die misschien wel op een ander continent staat.
De oorspronkelijke bedenkers van het Linux besturingssysteem waren programmeurs die dit systeem ook zelf moesten gaan gebruiken. Zij kozen er daarom vaak voor, opdrachtnamen zo kort mogelijk te houden. Het gevolg daarvan is dat we in Linux veel opdrachten van minder dan vier letters tegen komen. Voor een buitenstaander lijkt het daardoor al snel abacadabra, maar wie er zich een tijdje mee bezig houdt, komt er al snel achter dat het minder erg is dan het lijkt. Vaak bestaat er wel degelijk een verband tussen de betekenis en de naam van de opdracht.
Windows 7, Moderne Unices en Linux ondersteunen ACL (Access Control Lists). ACL is een nieuwere vorm voor het toekennen van gebruikersrechten op bestanden. Het heeft als voordeel dat je permissies van meerdere gebruikers en groepen kan koppelen aan een bestand (het is flexibel). ACL onder Linux is een uitbreiding op de Linux bestandspermissies. Zelfs indien er ACL voorhanden is, kan het nog altijd nuttig zijn om kennis te hebben van de structuur van Linux toegangsrechten.
Voor een bestand zijn er drie soorten gebruikers: owner (eigenaar), group (groep), other (rest).
Owner
Staat voor de gebruiker zelf. De gebruiker kan
instellen welke rechten hij of zij op de bestanden heeft.
Group
Je kunt hiermee instellen welke rechten de
gebruikers hebben die in dezelfde groep zitten als de gebruiker.
Other
Hier kan men de toegangsrechten instellen van iedere
andere gebruiker.
Aan ieder van deze drie soorten gebruikers kun je volgende rechten toekennen: read (lees), write (schrijf) en execute (uitvoeren).
Voorbeeld: Na het uitvoeren
van de opdracht `ls -l
` staat de
volgende regel op het scherm:
-rw-r--r-- 1
sntcursist users 2042 jul 14 14:24 Fiets.gif
De eerste kolom bevat de toegangsrechten en heeft de volgende structuur:
De eerste letter bepaald of we te maken hebben met een bestand (-), een directory (d) of een koppeling (l).
Dan volgen drie groepen van drie letters met de toegangsrechten voor respectievelijk de Eigenaar (Owner), de Groep (Group) en de Rest (Other).
De drie letters stellen respectievelijk de volgende rechten voor:
Recht |
Recht aanwezig |
Geen recht |
---|---|---|
Read |
r |
- |
Write |
w |
- |
Execute |
x |
- |
Linux laat toe om bestandsnamen te gebruiken met zowat alle karakters, maar algemeen aangenomen vermijd je spaties, tabs en karakters met een speciale betekenis zoals:
& ; ( ) | ? \ ' " ' [ ] { } < > $ - ! /
Wil je toch speciale tekens in een bestandsnaam gebruiken dan moet je speciale trucs toepassen. Om een spatie in een bestandsnaam te plaatsen, kun je gebruik maken van aanhalingstekens ("bestandsnaam met meerdere woorden") of nog beter de spatie door een backslash laten voorafgaan (bestandsnaam\ met\ meerdere\ woorden). Een backslash betekent, interpreteer het volgende teken letterlijk.
De lengte van een bestandsnaam hangt af van het gebruikte bestandssysteem. Zowat ieder systeem ondersteunt een bestandsnaam van 256 karakters of meer.
Het is ook van belang te weten dat bestandsnamen hoofdlettergevoelig zijn, bijvoorbeeld bestand en BESTAND wordt aanzien als een verschillend bestand.
Bestanden die beginnen met een "." worden als verborgen beschouwd.
Bij het opvragen van bestanden kunnen enkele "wildcards" gebruikt worden:
* Komt overeen met een willekeurig aantal opeenvolgende willekeurige tekens
? Eén willekeurig teken
[..] Specificeert een teken uit de door vierkante haken omsloten verzameling. Bijvoorbeeld [a-z] wil een teken uit de verzameling letters van a tot z zeggen.
Bijkomende lijst met speciale tekens en hun betekenis:
\ Het teken dat na de "\" komt wordt letterlijk geïnterpreteerd
' Aanhalen van een string
" Aanhalen van een string en opdracht substitutie
` (backquote) Opdrachtsubstitutie
$ Referentie naar een (shell)variabele
{} Opdrachtgroepering in een functie (bij scripts)
# Commentaar
& Voert een opdracht uit in de achtergrond
() Groepeert opdrachten of identificeert een functie
| Pipe
> Redirection van de uitvoer
>> Redirection als toevoeging
< Redirect vanuit de standaard invoer
Linux laat toe om de uitvoer van de
ene opdracht als invoer te gebruiken voor een andere opdracht. Dit
noemt men een "pipe". Bijvoorbeeld: ls
| more
(opvragen inhoud map, met gebruik van pagina's).
Pipes laten toe om meerdere opdrachten aan mekaar te koppelen (denk aan een gereedschapskist waarmee je complexere opdrachten kan opbouwen).
Met redirections kunnen we de uitvoer van een opdracht naar een bestand schrijven.
Voorbeeld: ls >
lijst
(we schrijven de lijst van de map naar het bestand
"lijst").
Er bestaat ook een ">>" teken dat bijna dezelfde functie heeft als ">". Bij ">" wordt eerst het bestand leeggemaakt, met ">>" wordt er achteraan het bestand verder geschreven.
cat
De inhoud van een bestand tonen. Vb: cat
bestandsnaam
Meerdere bestanden samenvoegen tot één bestand. Vb: cat
bestand1 bestand2 > samen
cd
Veranderen van de actuele map. Vb: cd
/usr/bin
mkdir
Het aanmaken van een nieuwe map. Vb: mkdir
map
ls
Geeft een overzicht van de bestanden.
Gebruik de vorm `ls -l
` om een "lange"
lijst van je bestanden te verkrijgen. Een voorbeeld van uitvoer met
een verklaring van de getoonde informatie vind je hieronder.
sntcursist@l092pc03:~>
ls -l
totaal
24
drwxrwxrwx
1 sntcursist users 43 16 jul 16:44 Afbeeldingen
drwxr-xr-x
2 sntcursist users 4096 11 mrt 20:30 bin
drwxr-xr-x
2 sntcursist users 4096 11 mrt 20:31 Bureaublad
drwxrwxrwx
1 sntcursist users 30 16 jul 16:44 Documenten
drwxr-xr-x
2 sntcursist users 4096 11 mrt 20:30 Downloads
drwxrwxrwx
1 sntcursist users 37 16 jul 16:44 Muziek
drwxr-xr-x
2 sntcursist users 4096 11 mrt 20:30 Openbaar
drwxr-xr-x
2 sntcursist users 4096 11 mrt 20:30 public_html
drwxr-xr-x
2 sntcursist users 4096 11 mrt 20:30 Sjablonen
drwxrwxrwx
1 sntcursist users 38 16 jul 16:44 Video's
1 2 3 4 5 6 7
1 = toegangsmodi/permissies
2 = aantal koppelingen (hard links)
3 = eigenaar
4 = groep
5 = grootte (in bytes)
6 = datum en tijdstip van de laatste wijziging
7 = naam van het bestand
cp
Kopieert een bestand of map. Vb: cp
bronbestand doelbestand
Je kunt ook hele mappen kopiëren met het argument "-r".
Vb: cp -r brondirectory doeldirectory
mv
Verplaatst een bestand of map. Deze opdracht kan ook
gebruikt worden om bestanden te hernoemen. Vb: mv
bronbestand doelbestand
chmod
Wijzigen van bestandspermissies.
chown
Wijzigt de eigenaar (gebruikersnaam en/of groep) van
een bestand.
dd
Converteert en kopieert bestanden. Meestal wordt deze
opdracht gebruikt om "images" te maken van een schijf. Vb:
dd if=/dev/dvd of=bestandsnaam.iso
file
Bepaalt tot wat voor type een bestand behoort. Vb:
file foto.jpg
find
Zoekt naar bestanden in mappen. Vb: find
. -name zoekbestand
locate
Heeft ongeveer dezelfde functie als `find
`,
maar in plaats van de mappen te doorlopen werkt locate met een
database die regelmatig wordt bijgewerkt.
ln
Maakt een bestand bekend onder een andere locatie.
Het argument "-s" dient om een "soft symlink" te
maken. Hierbij is het zichtbaar dat het bestand eigenlijk een link
is. Vb: ln -s bestandsnaam symlinknaam
nl
Laat ingelezen regels voorafgaan door regelnummers.
pwd
Laat de actuele map zien, de map waarin je werkt.
rm
Verwijdert bestanden. Vb: rm
teverwijderenbestand
Met het argument "-r" kun je ook mappen en hun inhoud verwijderen.
head
Drukt de eerste regels van een bestand af.
tail
Drukt de laatste regels van een bestand af.
Met het argument "-100" (waarbij 100 ook een ander getal kan zijn), druk je de laatste 100 regels af.
Het argument "-f" volgt continu het einde van het bestand.
Zo kun je op een gemakkelijke wijze bijvoorbeeld logbestanden
volgen. Vb: tail -f .xsession-errors
tar
Dit is een opdracht om backups van bestanden en mappen
te maken.
Om een backup te maken van een map gebruik je: tar
-cf log.tar /var/log
Om een .tar bestand uit te pakken gebruik je: tar
-xf log.tar
Met het argument -v (verbose) kun je volgen welke bestanden worden gelezen of uitgepakt.
gzip & gunzip
Deze opdrachten dienen om
bestanden te comprimeren. Gzip gebruik je om gecomprimeerde
bestanden te maken, gunzip om ze uit te pakken. Gzip kan maar één
enkel bestand per keer comprimeren, daarom wordt het vaak in
combinatie gebruikt met tar. Dit verklaart waarom .tar.gz bestanden
een populair formaat is (tar beschikt ook over het argument -z om
automatisch gzip bestanden aan te maken).
touch
Actualiseert de creatie-, benaderings- en
wijzigingsdatum.
De "touch" opdracht wordt ook vaak gebruikt om een leeg bestand aan te maken.
wc
Word Count. Telt het aantal woorden, tekens en regels
in bestanden.
cmp
Vergelijkt de inhoud twee bestanden.
diff
Zoekt de verschillen tussen twee bestanden.
grep
Zoekt naar een bepaalde tekenreeks in bestanden.
Vb: grep "gezochte tekenreeks"
bestand
uniq
Verwijdert dubbele regels uit gesorteerde bestanden.
sort
Sorteert de regels van samengevoegde bestanden.
echo
Toont een tekenreeks op het scherm.
df
Het opvragen van een lijst van alle "gekoppelde"
partities. Bij de uitvoer wordt ook getoond hoeveel vrije ruimte er
beschikbaar is. Met het argument "-h" krijg je een
duidelijkere uitvoer.
du
Toont de hoeveelheid schijfruimte in gebruik voor een
opgegeven map.
su
Dit staat voor "Switch User". Je hebt de
mogelijkheid om van gebruiker te veranderen.
Vb: su gebruikersnaam
Indien geen gebruikersnaam (aanmeldnaam) wordt opgegeven wordt er vanuit gegaan dat "root" wordt bedoeld. Voor het wijzigen van de gebruiker heb je wel het wachtwoord van die andere gebruiker nodig.
De opdrachtregel wissen
Typ een reeks willekeurige tekens
aan de prompt. Druk niet op Return. Wis de volledige regel met de
controletoets Ctrl-u.
Een opdracht afbreken
Geef de opdracht `sleep
300
` in (doe niets gedurende 300 seconden). Nadat het gestart
is, kun je eens proberen een andere opdracht in te geven. Stop nu de
sleep opdracht door op Ctrl-c te drukken. Nu kun je terug
opdrachten intypen.
Tekens wissen
Typ een reeks van willekeurige tekens aan de
prompt. Druk niet op Return. Probeer nu Ctrl-h te gebruiken
om tekens te wissen. Vele toetsenborden laten ook toe om Del
of Backspace te gebruiken.
Autocomplete
Je kunt namen van bestanden automatisch laten
aanvullen. Typ bijvoorbeeld de opdracht `ls
Doc
`. Druk nu op Tab. Je zult merken dat Linux de
bestandsnaam aanvult naar Documenten.
Vorige opdracht
Druk op de pijltoets omhoog om de vorige
opdracht uit het geheugen te halen. Dit werkt meerdere malen na
elkaar (pijl omlaag keert terug naar recentere opdrachten).
Om onze Persoonlijke map niet al te veel te vervuilen met onze probeersels, maken we eerst een submap aan. Start een terminalprogramma (of start Dolphin en activeer het paneel Terminal) en voer de volgende opdrachten uit:
mkdir
probeersels
cd probeersels
De opdracht `mkdir
`
(make directory) maakt een map aan. Met de opdracht `cd
`
(change directory) gaan we de map openen. Dit kunnen we controleren
met de opdracht `pwd
` (print working
directory). Het systeem reageert hierop met het tonen van de 'working
directory'. Dit is de map waar je je op dit moment bevindt.
We beginnen met het maken van een bestand.
echo
"
Dit
is een bestand.
"
> mijnbestand
De opdracht `echo
`
doet wat zijn naam reeds zegt. Probeer maar eens:
echo Hallo
Met het symbool > (groter-dan-teken) stoppen we de uitkomst van de voorafgaande opdracht in het hiernavolgende bestand; als dit bestand al bestaat, overschrijf het dan.
Nu hebben we een bestand gemaakt en
er iets ingestopt, maar dat willen we ook kunnen zien. Hiervoor
gebruiken we de opdracht `cat
`
(concatenate).
cat mijnbestand
cat kunnen we gebruiken om de inhoud van een bestand te laten zien of om bestanden aan elkaar te knopen. Dat gaan we meteen proberen en we maken daarom snel een tweede bestand aan:
echo "Dit
is het tweede bestand." > tweedebestand
Ter controle vragen we met `ls
`
(list) op, welke bestanden in de huidige map aanwezig zijn:
ls
We zien nu onze twee bestanden. Nu gaan we onze bestanden aan elkaar knopen:
cat mijnbestand
tweedebestand > derdebestand
en vragen de inhoud van het derde bestand op:
cat
derdebestand
We zien nu dat we beide bestanden aan elkaar geknoopt (gecat) hebben. Van een aantal van de hier gebruikte opdrachten kunnen we de werking beïnvloeden door middel van zogenaamde argumenten. Dat zijn toevoegingen aan een opdracht die er een nauwkeuriger richting aan geven. Zo kent cat het argument -n:
cat -n
derdebestand
We zien dat cat nu bij het tonen van de inhoud van het bestand de regels voorafgegaan worden door een volgnummer.
Wie wil weten welke argumenten cat allemaal kent en wat hun werking is, vraagt dat eenvoudig aan cat:
cat --help
Bestanden zijn ook eenvoudig te kopiëren.
cp derdebestand
vierdebestand
Met `cp` (copy) maken we een kopie van het derdebestand en noemen dat vierdebestand. Bij de meeste opdrachten waarbij een bronbestand en een doelbestand gebruikt worden, komt het bronbestand als eerste argument in het rijtje en het doelbestand als tweede. Of onze kopieeractie geslaagd is, kunnen we vaststellen met behulp van
ls
waarmee we de inhoud opvragen van de map waarin we ons bevinden en natuurlijk met
cat
vierdebestand
waarmee we vaststellen dat
'vierdebestand' dezelfde inhoud heeft als 'derdebestand'. We kunnen
bestanden ook een andere naam geven of verplaatsen. Dit doen we met
de opdracht `mv
` (move):
mv
vierdebestand vijfdebestand
ls
Voor het verplaatsen maken we nog
even een nieuwe map in de Persoonlijke map aan. Daarvoor moet je
eerst uit probeersels teruggaan naar die map. Dat doe je met `cd
`
en de tekens '..' (bovenliggende map):
cd ..
Daarna maak je met
mkdir nieuwemap
een nieuwe directory aan en vervolgens verplaats je 'probeersels' naar die map door middel van
mv probeersels
nieuwemap
We gaan weer naar 'probeersels' met
cd
nieuwemap/probeersels
We hebben daar nu de volgende bestanden in staan: derdebestand, mijnbestand, tweedebestand en vijfdebestand. Nu wil je niet steeds die lange bestandsnamen intikken. Filename completion helpt je daarbij. Dit doe je door een stukje van de bestandsnaam in te typen en dan op de Tab-toets te drukken. Probeer maar eens:
ls vijf[Tab]
Onze shell neemt ons op deze weg veel
werk uit handen. Probeer het eens met minder letters, bijv. ls
v[Tab]
.
Omdat het nogal saai is om twee bestanden met dezelfde inhoud te hebben, gaan we er één verwijderen:
rm
vijfdebestand
Ook bij `rm` (remove) hoeven we maar
één of enkele letters van de bestandsnaam vijfdebestand in te
typen, via filename completion doet het terminalprogramma voor ons de
rest. Houd er wel rekening mee dat Linux opdrachten geen 'prullenbak'
kennen of een andere vorm van voorwaardelijk verwijderen. Wat je met
`rm
` verwijdert hebt, is echt verdwenen!
Voor onze volgende probeersels hebben we wat grotere bestanden nodig. We gaan een bestand maken met op de eerste regel een aaa, op de tweede regel bbb, op de derde regel ccc enz. tot en met de 26-ste regel waar we zzz inzetten. Dit bestand maken we met cat:
cat >
nieuwbestand
De shell toont ons een lege regel en wacht op onze invoer. We kunnen nu een aantal regels tekst typen en sluiten dit af met een einde-invoer-teken, Ctrl+D.
Dus na `cat >
nieuwbestand
` toets je aaa
in,
gevolgd door een Return, dan bbb
gevolgd door een Return, enz. Na de zzz
en Return sluiten we af met Ctrl+D.
We hebben nu een bestand met 26 regels. Die kunnen we tellen met behulp van
cat -n
nieuwbestand
Dat toont ons de inhoud van het
bestand. Maar wie alleen geïnteresseerd is in het aantal regels
neemt hiervoor de opdracht `wc
` (word
count):
wc nieuwbestand
Dit geeft als uitvoer:
26 26 104
nieuwbestand
wat betekent dat we 26 regels, 26
woorden en 104 karakters in het bestand nieuwbestand hebben staan.
Wie alleen het aantal regels wil weten, kiest voor `wc
-l nieuwbestand
`.
We gebruiken dit bestand nu om een bestand van 78 regels te maken:
cp nieuwbestand
langbestand
cat
nieuwbestand >> langbestand
cat
nieuwbestand >> langbestand
Met behulp van het teken >> (twee maal groter-dan-teken) voegen we de uitvoer van de voorafgaande opdracht aan het einde van het navolgende bestand toe.
Wanneer we nu de inhoud van het bestand langbestand opvragen, dan past dat niet meer in ons venster. Dit kunnen we oplossen door de uitvoer van cat te pipen naar de invoer van het programma more:
cat langbestand
| more
Met pipen bedoelen we de uitvoer van het ene programma gebruiken als invoer voor het andere. Met de opdracht more en de spatiebalk kunnen we nu scherm voor scherm de inhoud van dit bestand bekijken. Willen we alleen het begin of juist alleen het einde van dit bestand zien, dan gebruiken we de opdrachten head en tail:
head
langbestand
tail
langbestand
Zijn we alleen in de eerste 3 regels geïnteresseerd, dan doen we dat met behulp van:
head -3
langbestand
Slimmeriken hebben in de gaten dat je op de volgende wijze de 12e regel kunt opvragen:
head -12
langbestand | tail -1
We kunnen ook alle identieke regels bij elkaar zetten, of sorteren, met:
sort
langbestand | more
We zien direct dat een aantal regels meerdere malen voorkomen en vragen ons af hoeveel verschillende unieke regels er zijn. Die unieke regels krijgen we te zien met:
sort
langbestand | uniq
Maar we willen natuurlijk niet
tellen. Als we de uitkomst als invoer voor `wc
-l
` gebruiken, dan krijgen we dus het antwoord op onze vraag
kant en klaar voorgeschoteld:
sort
langbestand | uniq | wc -l
Wanneer we willen weten of de lettercombinatie ccc in ons bestand voorkomt, dan gebruiken we hiervoor grep:
grep ccc
langbestand
Weten we niet precies in welk bestand we willen zoeken, dan kiezen we voor een jokerteken:
grep ccc *
Willen we alleen maar weten in welke bestand(-en) deze combinatie voorkomt, dan doen we dat door:
grep -l ccc *
We keren terug naar de Persoonlijke map met (twee mappen omhoog):
cd ../..
en onze Persoonlijke map ruimen we op door de map nieuwemap te wissen met:
rm -r nieuwemap
Open een shell (Terminalprogramma).
Met welke opdracht kom je te weten in welke map je werkt?
Welke opdracht toont een lijst van de bestanden en mappen in die map?
Welk bestand staat
op de laatste plaats na het uitvoeren van de opdracht `ls
-a
` (alle bestanden in een map tonen)?
Wat stelt de
laatste kolom voor als je de opdracht `ls
-al
` uitvoert?
Toon de inhoud van het bestand '.bashrc' en schrijf de laatste regel over:
Maak de map 'opdrachtmap'.
Open de map opdrachtmap/.
Ga terug naar jouw Persoonlijke map.
Verwijder de map opdrachtmap/.
Kopieer het bestand '.bashrc' naar het bestand met als naam 'bashconfiguratie'.
Tel het aantal lijnen, woorden en tekens in het bestand 'bashconfiguratie':
Tel enkel het aantal lijnen in het bestand 'bashconfiguratie' met de opdracht
Verwijder het bestand 'bashconfiguratie'.
Kopieer het bestand '.bashrc' naar het bestand met de naam 'bashinstellingen'.
Toon de inhoud van het bestand 'bashinstellingen'. Schrijf de eerste regel over:
Met de opdracht
`ls -l bashinstellingen
` kun je de
details van het bestand opvragen.
Hoe groot is het?
Verwijder het bestand 'bashinstellingen'.
Vraag nogmaals de details van het bestand op. Welke foutmelding krijg je?
Je kunt gemakkelijk
naar de Persoonlijke map gaan met de opdracht `cd
`
zonder argumenten.
Zorg ervoor dat je in je Persoonlijke map (home-directory) werkt.
Maak een leeg bestand met als naam 'leeg' aan.
Toon met de opdracht .............................................. alle bestanden met een naam met vier karakters.
Maak het bestand 'eerste' met de tekst “alpha” (inhoud) aan.
Maak het bestand 'tweede' met de tekst “beta” aan.
Maak het bestand 'derde' met de tekst “gamma” aan.
Voeg de drie bestanden samen tot het bestand met de naam 'grieks'.
Toon de inhoud van het bestand 'grieks'.
Zorg ervoor dat je in de Persoonlijke map werkt.
Hoeveel bestanden
bevat de map? ................. (probeer ook eens de `dir
`
opdracht).
Gebruik nu ls met het -a argument. Hoeveel bestanden zie je nu? ............ (merk op dat de bijgekomen bestandsnamen allemaal beginnen met een .........., het zijn dus verborgen bestanden.
Recentere
linuxdistributies gebruiken kleuren om het onderscheid tussen
mappen en bestanden te tonen. Indien je niet beschikt over een
kleurenterminal kan het -F argument nuttig zijn. Welk verschil merk
je op tussen de weergave van de opdrachten `ls
`
en `ls -F
`?
Met welke toetscombinatie kun je een lopende opdracht afbreken
Recursieve lijsten kunnen zeer nuttig zijn. Probeer volgende opdrachten. Breek ze indien nodig af.
ls
-R /usr/
ls
-R1 /usr/
Wat merk je in de uitvoer?
Gebruik de more
opdracht om het bestand services te lezen: more
/etc/services
Merk bij het lezen de “--Meer--(0%)” prompt op onderaan de bladzijde.
Druk op de Return of Enter toets. Wat gebeurt er?
c. Druk éénmaal op de Spatiebalk. Wat gebeurt er?
Typ een letter b. Wat gebeurt er?
Gebruik de
voorwaarts zoeken mogelijkheid om het woord “http” te vinden
met de opdracht: /http
(m.a.w. typ
/http[Return])
Ga na welke mogelijkheden er nog zijn door hulp te vragen met het ?-teken.
Welke toetscombinatie doet hetzelfde als drukken op de toets 'b'?
More gaat verder tot het einde van het bestand of tot je q typt om het programma te verlaten.
Typ een q om het programma te verlaten.
Toon het begin van
het bestand '/etc/services' met de opdracht `head
`.
Hoeveel regels tel je?
Welk argument moet je tussenvoegen om de eerste 5 regels te zien?
Toon nu hetzelfde
bestand met de `tail
` opdracht.
In hoeverre is hetgeen getoond wordt verschillend?
Gebruik de
opdracht `tail -f .bash_history
` om de
aanpassingen op het einde van het bestand te volgen. Indien je een
foutmelding krijgt, sluit je het Terminalprogramma en start je het
Terminalprogramma opnieuw op en probeer je nogmaals.
Start een tweede Terminalprogramma.
Typ de volgende opdrachten en bevestig telkens met Return:
pwd
ls
-l
dir
exit
De laatste opdracht heeft het tweede Terminalprogramma
Wat merk je in het venster van het eerste Terminalprogramma?
Breek de lopende tail opdracht af.
Gebruik de opdracht
`cat /etc/services
` om de inhoud van
het bestand te tonen.
Wat gebeurt er?
Probeer nu de
opdracht `cat -n /etc/services
`.
Hoeveel regels bevat het bestand?
De cat opdracht wordt vaker voor andere doeleinden gebruikt dan het zuiver tonen van een bestand.
We gebruiken deze opdracht om twee bestanden te concateneren (samen te voegen) in een derde bestand:
Maak het bestand 'een' met de tekst “One” als inhoud aan.
Maak het bestand 'twee' met de tekst “Two” als inhoud aan.
Toon de inhoud van het bestand 'een'.
Toon de inhoud van het bestand 'twee'.
Voeg de inhoud van de bestanden 'een' en 'twee' samen tot het nieuwe bestand 'engels'.
Toon de inhoud van het nieuwe bestand.
Kopieer het bestand '/etc/services' (in de configuratie folder) naar het bestand 'netwerkdiensten' in jouw Persoonlijke map en lijst de inhoud om na te gaan of de opdracht gelukt is.
Gebruik de kopieer
opdracht `cp -i /etc/services
netwerkdiensten
` (met het "interactive" argument).
Wat gebeurt er?
Gebruik de
recursieve optie (`cp -r /usr/bin kopie
`)
om een volledige submap te kopiëren naar een nieuwe submap.
Lijst de inhoud van beide mappen om na te gaan of het heeft gewerkt. (Bij het kopiëren kunnen er toegangsfouten optreden. Dit is normaal).
De copy opdracht aanvaardt jokers.
Probeer de opdracht
`cp /etc/*conf kopie
`.
Wat gebeurt er? (tip:
doe een `ls *conf
` in kopie)
Zorg ervoor dat je in de Persoonlijke map werkt.
Indien je een bestand kopieert van een andere locatie naar de huidige map en je wil de bestandsnaam behouden, kun je "." gebruiken om de huidige folder aan te duiden.
Probeer `cp
/etc/issue .
`.
De mv opdracht kan
gebruikt worden om bestanden te hernoemen. Gebruik de opdracht `mv
issue begroeting
` om de naam van het bestand 'issue' te
veranderen naar 'begroeting' en lijst dan de bestanden om te tonen
dat de opdracht heeft gewerkt.
De mv opdracht wordt ook gebruikt om folders te hernoemen. Gebruik deze opdracht om de naam van de directory 'kopie' te veranderen naar 'mijnkopie' en controleer of deze gelukt zijn.
Gebruik nu de mv opdracht om het bestand 'netwerkdiensten' te verplaatsen naar de map 'mijnkopie'.
Gebruik de rm opdracht om het bestand 'engels' te verwijderen.
Lijst de folder uit om na te gaan of de opdracht geslaagd is.
Verwijder de map
"mijnkopie" met de opdracht `rm -rf
mijnkopie
`.
Waarvoor zorgt het argument -f?
Verwijder nu de volgende bestanden in jouw thuismap: begroeting, eerste, tweede, derde, een, twee, grieks en leeg.
Gebruik de opdracht
`file /bin/su
` om het type van het
bestand 'su' te bepalen:
Gebruik de file opdracht om het type van volgend bestanden te bepalen:
/etc/shadow
/usr/share/man/nl/man1/*
Gebruik de opdracht find om het bestand shadow te vinden. Doe dit in de /etc/ map.
Zoek nu met `find
. -name "*deny"
` naar bestanden waarvan de naam
eindigt op 'deny'. Hoeveel bestanden worden gevonden?
Zoek enkel mappen (argument '-type d') die beginnen met de letters "rc".
Hoeveel mappen worden gevonden?
Keer terug naar de
Persoonlijke map. Creëer een koppeling naar het bestand
'/etc/issue' en noem deze 'begroeting'. Typ daarna de `ls
-l
` opdracht om te controleren of de opdracht gelukt is.
Welke kleur heeft de naam van een koppeling?
Gebruik de rm opdracht om de koppeling te verwijderen. Merk op dat de originele bestanden hierdoor niet werden beïnvloed.
Kopiëer het bestand '/etc/passwd' naar het bestand 'gebruikers'.
Gebruik de cat opdracht om te kijken naar de inhoud van 'gebruikers'.
Merk op dat de namenlijst niet alfabetisch geordend is.
Gebruik nu de sort opdracht om een elementaire sortering van het bestand uit te voeren.
Voer dezelfde sortering uit, maar stuur de uitvoer naar het bestand 'gesorteerde gebruikers' (let op de spatie in de bestandsnaam).
Gebruik daarna de cat opdracht om het bestand te bekijken.
Wees er zeker van dat je in je Persoonlijke map werkt.
Creëer dan de nieuwe map 'Boeken' met de mkdir opdracht.
Creëer de volgende submappen in Boeken: Handleidingen, Tijdschriften en Literatuur.
Probeer een map te creëren in een map waar je geen rechten hebt (vb: /etc).
Welke melding krijg je?
Verzeker je ervan dat je in je Persoonlijke map bent.
Kopieer de inhoud
(argument -r) met de opdracht `cp -r /etc
~/instellingen
` van de map /etc/ naar de map instellingen/
in uw Persoonlijke map (toegangsfouten mag je negeren).
Open de map ~/instellingen/.
Toon de inhoud van alle bestanden in de lange vorm (veel details) in deze map.
Welke letterpositie in de eerste kolom bepaalt of je te maken hebt met een directory (letter 'd')?
Welke letter bepaalt in de eerste kolom of een bestand uitvoerbaar is?
Welke letterposities in de eerste kolom bepalen de rechten van de eigenaar?
Welke letterpositie in de eerste kolom bepaalt de leesrechten van de groep waartoe je behoort?
Wie is eigenaar van de meeste bestanden?
Tot welke groep behoort de eigenaar van de meeste bestanden?
Welke letterposities bepalen de rechten die de onbekende gebruikers hebben?
Gebruik de
opdracht `ls -l exports
` om de
toegangsrechten van 'exports' te bekijken.
Gebruik de
opdracht `chmod o-r exports
` om de
rechten te wijzigen.
Gebruik nogmaals
de opdracht `ls -l exports
` om de
toegangsrechten van 'exports' te bekijken en te bepalen welk
toegangsrecht aangepast werd.
Achterhaal daarmee de werking van het argument 'o-r' in de vorige opdracht
Ga op de dezelfde manier te werk om de volgende rechten aan te passen en probeer telkens te achterhalen welke rechten door de argumenten werden aangepast:
Gebruik het argument 'ugo+wx' met het programma chmod op het bestand 'exports'.
ugo+wx: aangepaste rechten:
Gebruik het argument 'g-x' met het programma chmod op het bestand 'exports'.
g-x: aangepaste rechten:
De opdracht chown
dient om de eigenaar van een bestand te wijzigen.
Probeer
volgende opdracht `chown root exports
`.
Waarom [lukt dit]/[lukt dit niet]?
Wis de bestanden gebruikers en gesorteerde gebruikers en de mappen instellingen en Boeken in jouw Persoonlijke map (homedirectory).
Opdracht voor supermensen: Stel een opdracht samen waarmee je te weten komt hoeveel bestanden en koppelingen uw persoonlijke map bevat. Deze opdracht moet de verborgen bestanden en koppelingen meetellen. Deze opdracht moet het aantal tellen. Deze opdracht mag de bestanden en koppelingen in submappen niet meetellen.