Het commando echo toont tekst op het scherm. Je kunt er gewone tekst mee printen, maar ook de waarde van variabelen weergeven.
Linux heeft ingebouwde omgevingsvariabelen (environment variables):
$HOME -- je homedirectory (/home/user)$USER -- je gebruikersnaam (user)$PWD -- de huidige werkdirectory$PATH -- de zoekpaden voor commando'sJe kunt ook eigen variabelen maken:
naam="Linux"
echo "Hallo $naam"
Let op: bij het toewijzen van een variabele mag er geen spatie staan rond het = teken. Gebruik dubbele aanhalingstekens als je variabelen wilt laten vervangen in tekst.
Toon de tekst Hallo wereld op het scherm.
Je wilt weten wat je homedirectory is. Toon de waarde van de omgevingsvariabele die je homedirectory bevat.
Toon je huidige gebruikersnaam door de juiste omgevingsvariabele weer te geven.
Sla de waarde Linux op in een zelfgekozen variabele en toon vervolgens de tekst Welkom bij Linux. De waarde moet uit de variabele komen, niet hardcoded in de tekst staan. Doe dit op een enkele regel.
Toon de huidige werkdirectory op twee verschillende manieren in een enkele regel. Gebruik eerst een omgevingsvariabele en daarna een commando dat de werkdirectory toont. De uitvoer moet twee keer hetzelfde pad tonen.
Je kunt meerdere commando's op een regel zetten met speciale operatoren:
| Operator | Betekenis | Voorbeeld |
|----------|-----------|-----------|
| ; | Voer altijd het volgende commando uit | cmd1; cmd2 |
| && | Voer het volgende commando alleen uit als het vorige slaagde | cmd1 && cmd2 |
| \|\| | Voer het volgende commando alleen uit als het vorige faalde | cmd1 \|\| cmd2 |
Met commando-substitutie $(commando) kun je de uitvoer van een commando gebruiken als tekst:
echo "Er zijn $(ls | wc -l) bestanden"
echo "Vandaag is het $(date)"
Toon eerst de tekst Stap 1 en daarna de tekst Stap 2, allebei op een eigen regel. Beide opdrachten moeten altijd uitgevoerd worden, ongeacht of de eerste slaagt of faalt. Doe dit op een enkele regel.
Probeer de inhoud van de map /home/user/bestaatNiet op te vragen. Deze map bestaat niet, dus dat zal mislukken. Zorg ervoor dat als dat mislukt, de tekst Map niet gevonden wordt getoond. Doe dit op een enkele regel.
Maak de map /home/user/testmap aan. Alleen als dat lukt, moet de tekst Map aangemaakt worden getoond. Doe dit op een enkele regel.
Tel hoeveel bestanden er in /home/user/Documents/ staan en toon het resultaat in het formaat Aantal: N (waarbij N het werkelijke aantal is). Het getal moet automatisch berekend worden, niet handmatig ingevuld.
Maak een bestand /home/user/Documents/info.txt aan dat de tekst Gebruiker: user bevat. De gebruikersnaam mag niet hardcoded zijn, maar moet automatisch uit het systeem komen.
Voer de volgende drie stappen uit op een enkele regel. Stap 1: maak de map /home/user/backup aan. Stap 2: kopieer het bestand /home/user/Documents/readme.txt naar die map. Stap 3: toon de tekst Backup klaar. Elke stap mag alleen uitgevoerd worden als de vorige is geslaagd.
Met een for-loop kun je een commando herhalen voor een reeks waarden. Op de commandoregel schrijf je dit als one-liner:
for variabele in lijst; do commando; done
Voorbeelden:
for i in 1 2 3; do echo "Nummer $i"; done
for bestand in *.txt; do echo "Gevonden: $bestand"; done
for naam in jan piet klaas; do echo "Hallo $naam"; done
Je kunt ook een reeks getallen genereren met seq:
for i in $(seq 1 5); do echo "Stap $i"; done
Binnen de loop kun je elk commando gebruiken, zoals touch, mkdir, echo, enzovoort.
Toon de getallen 1, 2 en 3 elk op een aparte regel, met behulp van een herhalingsstructuur.
Begroet drie personen: alice, bob en charlie. Voor elke persoon moet de tekst Hallo <naam> verschijnen op een aparte regel. Gebruik een herhalingsstructuur.
Maak drie lege bestanden aan in /home/user/Documents/: deel1.txt, deel2.txt en deel3.txt. Gebruik een herhalingsstructuur zodat je niet drie losse commando's hoeft te schrijven.
Maak vijf mappen aan in /home/user/: project1 tot en met project5. De nummers moeten automatisch gegenereerd worden; schrijf ze niet handmatig uit. Gebruik een herhalingsstructuur.
Geef een overzicht van alle .txt-bestanden in /home/user/Documents/. Voor elk gevonden bestand moet de tekst Bestand: <pad> getoond worden. Gebruik een herhalingsstructuur.
Maak drie bestanden aan in /home/user/Documents/: log1.txt, log2.txt en log3.txt. Elk bestand moet als inhoud de tekst Logbestand N bevatten, waarbij N het bijbehorende nummer is. Gebruik een herhalingsstructuur.
In dit hoofdstuk heb je de basis van shell-scripting op de commandoregel geleerd:
echo en variabelen:
echo "tekst" -- toon tekst op het scherm$HOME, $USER, $PWD -- ingebouwde omgevingsvariabelennaam="waarde" -- eigen variabelen aanmaken (geen spaties rond =)echo "$variabele" -- variabele in tekst gebruikenCommando's combineren:
; -- voer altijd het volgende commando uit&& -- voer het volgende uit als het vorige slaagde|| -- voer het volgende uit als het vorige faalde$(commando) -- gebruik de uitvoer van een commando als tekstfor loops:
for i in 1 2 3; do echo $i; done -- herhaal voor elke waardefor i in $(seq 1 5); do ...; done -- herhaal met een getallenreeksfor f in *.txt; do ...; done -- herhaal voor bestanden die matchen