Bash-scripts: Uitgebreide Uitleg en Voorbeelden¶
Wat is Bash?¶
- Bash = Bourne Again SHell, de meest gebruikte shell op Linux-systemen.
- Je kunt er zowel interactief commandoβs mee uitvoeren als scripts schrijven.
- Bash is standaard aanwezig op bijna elke Linux-distributie.
Je eerste script¶
Voorbeeld: Hallo wereld
- De eerste regel (
#!/usr/bin/env bash) heet een shebang en vertelt het systeem dat dit script met Bash moet worden uitgevoerd. echois een commando dat tekst naar het scherm schrijft. Het is een basis-commando van Linux, niet PHP.
Uitvoeren:
Variabelen gebruiken¶
- Je definieert variabelen zonder spaties rond
=. - Je roept ze aan met
$NAAM.
If/Else-condities¶
#!/usr/bin/env bash
BESTAND="/etc/passwd"
if [[ -f "$BESTAND" ]]; then
echo "Bestand $BESTAND bestaat."
else
echo "Bestand $BESTAND bestaat NIET."
fi
[[ -f ... ]]test of een bestand bestaat.- Handig voor checks voordat je een script uitvoert.
Loops¶
Voorbeeld: over bestanden loopen
- Dit script loopt door alle
.txtbestanden in de huidige map. - Voor elke iteratie print het de bestandsnaam.
Voorbeeld: while loop met tellen
#!/usr/bin/env bash
teller=1
while [[ $teller -le 5 ]]; do
echo "Iteratie $teller"
((teller++))
done
Functies¶
- Functies maken je script overzichtelijker.
$1is het eerste argument dat je meegeeft.
Backups maken¶
#!/usr/bin/env bash
set -euo pipefail
SRC="/data/app"
DST="/data/backup"
ARCHIVE="$DST/backup-$(date +%Y%m%d-%H%M%S).tar.gz"
mkdir -p "$DST"
tar -czf "$ARCHIVE" -C "$SRC" .
echo "Backup gemaakt: $ARCHIVE"
- Maakt een gecomprimeerde
.tar.gzbackup. - Handig voor cronjobs of systemd-timers.
Logging toevoegen¶
#!/usr/bin/env bash
LOG="/var/log/mijnscript.log"
echo "$(date) - Script gestart" >> "$LOG"
sleep 1
echo "$(date) - Script klaar" >> "$LOG"
>>betekent: append (regel toevoegen).- Met logs kun je later terugzien wat er is gebeurd.
Bestanden bewerken met grep, sed, awk¶
Zoeken in bestanden (grep):
Tekst vervangen in bestand (sed):
Specifieke kolommen tonen (awk):
grepβ zoeken in tekstsedβ zoeken & vervangenawkβ kolommen en tekst verwerken
Best practices¶
-
Gebruik altijd een shebang:
-
Fouten laten stoppen:
-
Commentaar toevoegen om uit te leggen wat je code doet.
-
Scripts uitvoerbaar maken:
-
Exit-codes gebruiken:
exit 0β succesexit 1β fout
Veelgebruikte Bash-commandoβs¶
| Command | Uitleg |
|---|---|
echo "tekst" |
Print tekst naar scherm of bestand |
date |
Huidige datum/tijd |
tar -czf archief.tar.gz map/ |
Maak archief van map |
grep patroon bestand |
Zoek patroon in bestand |
sed -i 's/oud/nieuw/g' bestand |
Vervang tekst |
awk -F: '{print $1}' bestand |
Print eerste kolom |
find /pad -type f -name "*.log" |
Zoek bestanden |
chmod +x script.sh |
Script uitvoerbaar maken |
exit 1 |
Script afsluiten met foutcode |