In de vorige les over Shell heb je geleerd hoe je door je mappenstructuur kunt navigeren en hoe je de commando’s uit je terminal kunt legen. In les 2 leer je werken met bestanden in de shell server.

Werken met mappen en bestanden

Mappen aanmaken en verwijderen

Met het commando mkdir kun je een nieuwe directory/map aanmaken. Als voorbeeld maak je eerst een map genaamd test aan:

mkdir test

Je hebt nu een nieuwe map aangemaakt. Als je deze weer wilt verwijderen gebruik je het commando rm -r:

rm -r test

Zoals je ziet is de map weer verwijderd. Je kunt eventueel ook het commando rmdir gebruiken, alleen zal deze geen map verwijderen als er nog bestanden in deze map staan.

rmdir test

Bestanden bewerken met nano

Om bestanden te bewerken gebruik je het commando nano. Typ het volgende:

nano index.html

Zet de volgende voorbeeldtekst erin:

<html>
<head>
<title>Lorum Ipsum</title>
</head><body>
dolor sit never gonna give you up<br>
never gonna let you down amet,<br>
consectetur adipiscing elit....
</body>
</html>

Als de tekst erin staat druk je op CTRL X (hiermee sluit je nano af). Je wordt dan gevraagd of je de invoer wilt opslaan, druk hiervoor op Y. Je wordt nu gevraagd of je de naam van het bestand index.html wilt noemen. Druk gewoon op ENTER om het bestand aan te maken. Je hebt nu een eigen gemaakt index.html bestand.

Bestanden kopiëren met cp

Je gaat nu een kopie maken van het index.html en deze verplaatsen naar de map test. Hiervoor dien je deze map eerst weer even aan te maken. Het kopiëren en verplaatsen gaat als volgt:

cp index.html test

Nu is dit bestand gekopieerd en de kopie ervan is verplaatst naar de map test. Je kan echter ook een kopie van het bestand maken en deze meteen een naam geven (deze blijft dan in de huidige directory staan).

cp index.html hoi.html

Bestanden verplaatsen met mv

Met het commando mv kun je een bestand verplaatsen van de ene map naar de andere map. In het voorbeeld verplaats je een index.html naar de map test:

mv index.html test

Je kunt zelfs met het mv commando de naam van een bestand wijzigen:

mv index.html hoi.html

Bestanden lezen met cat

Aangezien je nu nog steeds in de test map werkt, wil je nog eens kijken welke tekst je ook al weer had gebruikt bij het .html bestand. Hiervoor gebruik je het cat commando.

cat hoi.html [Hier kun je dan wat tekst invullen]

Zoals je ziet, kun je met dit commando bestanden lezen. Maar je kunt meer doen dan alleen lezen met het cat commando. Je kunt er ook bestanden mee aanpassen.

cat > hoi.html [Hier kun je dan wat tekst invullen]

Door cat > hoi.html in te tikken krijg je de mogelijkheid om regels met tekst toe te voegen aan het bestand dat je selecteert. Om het toevoegen van tekst te beëindigen gebruik je CTRL C. Ga je nu kijken wat er met de inhoud van het hoi.html bestand is gebeurd?

cat hoi.html [Hier kun je dan wat tekst invullen]

Oh, dat was niet de bedoeling. We hebben nu de oorspronkelijke tekst vervangen voor nieuwe tekst. Je gaat er nu wat regels aan toevoegen zonder weer de huidige tekst te vervangen.

cat >> hoi.html [Hier kun je dan wat tekst invullen]

Je hebt nu dus extra regels met tekst toegevoegd aan het bestand. Het is echter mogelijk om via cat een nieuw bestand aan te maken en daar regels tekst aan toe te voegen. Typ:

cat > test.html [Hier kun je dan wat tekst invullen]

Zoals je kunt zien kun je op deze manier ook nieuwe bestanden aanmaken en hier tekst aan toevoegen.
Als je met meerdere bestanden wilt werken kun je met veel commando’s een wildcard (*) gebruiken. Hiermee wordt er gezocht naar een willekeurig stuk tekst op de plek van de wildcard. Dit is te gebruiken in combinatie met een gedeeltelijke bestandsnaam.

Voorbeeld:.

cat *
cat *.php

Bestanden verwijderen met rm

Bestanden kun je net zoals mappen verwijderen met het rm commando. Je kunt de bestanden per stuk, meerdere en/of allemaal verwijderen:

rm -r BESTAND
rm -r BESTAND BESTAND
rm -r *

Eerste en laatste regels van een bestand lezen

Met het head commando kun je de eerste 10 regels van een bestand bekijken. Voor het gemak zijn er bij het test.html bestand wat extra regels met tekst toegevoegd. Je gaat nu het head commando gebruiken om slechts de eerste 10 regels van test.html te zien

head test.html

Je kunt echter ook alleen de laatste 10 regels bekijken. Hiervoor gebruiken we het tail commando.

tail test.html

Als je slechts de eerste 5 regels of de laatste 5 regels van een bestand wilt zien gebruik je de optie -n5 naast het commando.

head -n5 test.html
tail -n5 test.html

Wat ook erg handig is, is tail -f. Hiermee laat je de laatste 10 regels zien, maar krijg je ook meteen nieuwe regels te zien als die worden toegevoegd. Dit is bijvoorbeeld erg handig als je bepaalde logs aan het lezen bent en je wilt bijhouden wat er allemaal precies gebeurt.

tail -f test.html

Aantal woorden, bytes en regels tellen met wc

Het commando wc staat voor word count en met dit commando kun je een aantal zaken in een bestand laten tellen.

wc test.html

Het commando heeft nu het aantal regels (21), het aantal woorden (76) en het aantal bytes van het bestand (453) geteld. Met de volgende opties kun je apart de woorden, regels en bytes opvragen via dat commando.

wc -w test.html
wc -l test.html
wc -c test.html

Met grep stukken tekst uit een bestand halen

Met het grep commando kun je bepaalde stukken tekst uit een bestand bekijken. Als voorbeeld doe ik een grep naar het woord never in mijn .html bestand.

grep never test.html

Zoals je ziet krijg je dan twee regels uit het bestand te zien waar het woord never in zit. Was het woord echter met een hoofdletter geschreven dan had de grep het woord niet gevonden. Grep is namelijk hoofdlettergevoelig. Om die reden is het makkelijker om de optie – i bij een grep te gebruiken als je het woord never met een kleine letter n als hoofdletter N wilt vinden.

grep -i never test.html

Je kunt echter ook bepaalde zinnen of combinatie van woorden eruit halen. Als voorbeeld ga je zoeken welke regels ‘Never gonna’ gebruiken.

grep -i 'dolor sit' test.html

Je kunt ook de regels eruit pakken die een specifieke tekst juist niet bevatten.

grep -iv 'dolor sit' test.html

Zoals je ziet kun je opties ook combineren met elkaar (i + v). In het volgende voorbeeld laat je grep tellen hoeveel regels NIET de woorden ‘dolor sit’ bevat.

grep -ivc 'dolor sit' test.html

Symbolic links maken met ln

In sommige gevallen wil je misschien een map in je webruimte automatisch laten doorverwijzen naar een andere locatie binnen je webruimte. Hiervoor kun je gebruik maken van het commando ln. Je kunt dan als het ware een symbolic link maken naar een andere locatie.

Stel: je hebt een subdomein aangemaakt en je wilt een specifieke submap daar naartoe verwijzen. Met het volgende commando kun je dan een submap automatisch naar dat subdomein verwijzen:

ln -s ../subdomein.domein.nl/ submap

Commando’s combineren

Op de Shell server is het mogelijk om verschillende commando’s te gebruiken. Deze commando’s hebben meestal een standaard invoer (bijvoorbeeld een patroon voor het commando grep) en een standaard uitvoer. Het is mogelijk om de standaard uitvoer van het ene commando te gebruiken als standaard uitvoer van een ander commando. Dit wordt gedaan door de commando’s samen te voegen met een “|” teken.
In het volgende voorbeeld zoek je naar “zoekpatroon” in “bestand” en laten alleen de 20 laatste regels zien:

grep never test.html | tail -n 20

Kort samengevat

mkdir                      Nieuwe directory aanmaken
rm bestand                 Bestand verwijderen in de huidige directory
rm -r map                  Map verwijderen in de huidige directory
rm dir map                 Hiermee kun je een map verwijderen in de huidige dir mits deze                            
                           leeg is
nano bestand               Nieuw bestand aanmaken wat je meteen edit of bestaand                            
                           bestand aanpassen         
cp bestand                 Kopieer een bestand
cp bestand1 bestand2       Kopieer een bestand1 en noem deze bestand2
cp bestand dir             Kopieer een bestand en verplaats deze naar een specifieke dir
mv bestand1 bestand2       Hiermee kun je ook de naam van een bestand wijzigen
mv bestand dir             Hiermee kun je een bestand naar een specifieke dir                            
                           verplaatsen  
cat bestand                Lezen van een bestand
head bestand               Laat de eerste 10 regels van een bestand zien
head -n bestand            Laat een specifiek aantal regels zien.
tail bestand               Laat de laatste 10 regels van een bestand zien
tail -n bestand            Laat een specifiek aantal regels zien
tail -f bestand            Hiermee krijg je de 10 laatste regels te zien maar deze                            
                           wordt opgevuld op het moment dat er nieuwere regels                            
                           beschikbaar zijn 
wc bestand                 Aantal regels, woorden en bytes van een bestand zien
wc -w bestand              Aantal woorden van een bestand zien 
wc -l bestand              Aantal regels van een bestand zien
wc -b bestand              Aantal bytes van een bestand zien   
grep woord bestand         Hiermee kun je zien in welke regels van een bestand een                            
                           specifiek woord zit.
grep -i woord bestand      Zelfde als hierboven, alleen negeert de grep                            
                           hoofdlettergevoeligheid
grep -v woord bestand      Laat zien welke regels het woord niet bevatten
grep -c woord bestand      Telt het aantal regels dat een specifiek woord bevat
grep -vc woord bestand     Telt het aantal regels dat een specifiek woord niet bevat
ln -s target linknaam      Je maakt een bestand genaamd linknaam aan en deze verwijst automatisch                            
                           naar target

Andere relevante lessen

10