Een overzicht van de commando's die je in dit vak nodig hebt, met per commando de belangrijkste opties en een voorbeeld. Alles staat in de volgorde waarin je het gebruikt: eerst waar je bent, dan wat je met bestanden doet, en tot slot hoe je uitvoer stuurt en combineert.
Paden
Soort Wat het is Voorbeeld Absoluut pad Vertrekt altijd bij de root / en werkt vanuit elke map /home/student/documenten/project.txtRelatief pad Vertrekt bij de map waar je nu staat project.txt of ../project.txt
Symbool Betekenis /De root van het bestandssysteem ~Je eigen thuismap .De huidige map ..De bovenliggende map -De vorige map waar je was (enkel bij cd)
Navigeren
Commando Wat het doet Opties Voorbeeld pwdToont het volledige pad van de map waar je staat pwdcdVerandert van map cd ~ thuismap · cd .. één omhoog · cd - vorige mapcd /home/studentlsLijst de inhoud van een map -l details · -a ook verborgen bestanden · -h leesbare groottesls -la
Bestanden en mappen
Commando Wat het doet Opties Voorbeeld mkdirMaakt een map aan -p maakt ontbrekende oudermappen mee aanmkdir -p pad/naar/maptouchMaakt een leeg bestand aan, of ververst de tijdstempel touch nieuw.txtcpKopieert een bestand of map -r nodig voor mappencp bron.txt doel.txtmvVerplaatst een bestand, of hernoemt het mv oud.txt nieuw.txtrmVerwijdert een bestand of map -r voor mappen · -f forceertrm -r maprmdirVerwijdert een lege map rmdir lege-map
Wat je met rm verwijdert, is weg. Controleer met ls waar je staat voor je een pad meegeeft, zeker in combinatie met -r en -f.
Bestanden lezen
Commando Wat het doet Opties Voorbeeld catToont de volledige inhoud, of plakt bestanden aan elkaar -n nummert de regels · -b nummert enkel niet-lege regelscat -n bestand.txtheadToont de eerste 10 regels -n [aantal]head -n 3 bestand.txttailToont de laatste 10 regels -n [aantal] · -f volgt het bestand livetail -f server.loglessBladert door een lang bestand q sluit af · /zoekterm zoektless bestand.txt
Zoeken en filteren
Commando Wat het doet Opties Voorbeeld grepToont de regels die op een patroon passen -i negeert hoofdletters · -r zoekt in submappen · -v toont wat niet pastgrep -i "fout" server.logcutHaalt kolommen uit een regel -d scheidingsteken · -f veldnummerscut -d "," -f 2 data.csvsortSorteert regels -n numeriek · -r omgekeerd · -u zonder dubbelssort -n getallen.txtuniqVerwijdert dubbels die na elkaar staan -c telt hoe vaak elke regel voorkomtsort namen.txt | uniq -cwcTelt -l regels · -w woorden · -c byteswc -l bestand.txtechoDrukt tekst af -e verwerkt \n en andere escapesecho -e "Hallo\nWereld"
uniq werkt enkel op gesorteerde invoer
Staan de dubbele regels verspreid over het bestand, dan ziet uniq ze niet. Sorteer dus eerst: sort bestand.txt | uniq -c.
Uitvoer omleiden
Elk commando heeft drie kanalen: stdin (invoer), stdout (normale uitvoer) en stderr (foutmeldingen).
Teken Wat het doet Voorbeeld >Stuurt stdout naar een bestand en overschrijft echo "tekst" > bestand.txt>>Stuurt stdout naar een bestand en voegt toe echo "extra" >> bestand.txt<Leest stdin uit een bestand sort < namen.txt2>Stuurt enkel de foutmeldingen naar een bestand ls bestaat-niet 2> fouten.log&>Stuurt stdout én stderr naar hetzelfde bestand commando &> alles.log2>&1Voegt stderr samen met stdout, achteraan het commando commando > alles.log 2>&1
Pipes
Een pipe verbindt de uitvoer van het ene commando met de invoer van het volgende.
Teken Voorbeeld Wat er gebeurt |ls -l | grep "test"De lijst van ls gaat naar grep, dat er de regels met "test" uit haalt cat server.log | grep ERROR | wc -lLees het log, hou de foutregels over, tel ze
Bouw een lange pipeline stap voor stap op: voer eerst cat uit, dan cat | grep, en pas daarna de rest. Zo zie je meteen waar het misloopt.
Archieven en compressie
Commando Wat het doet Voorbeeld tar -cfMaakt een archief tar -cf archief.tar map/tar -czfMaakt een archief én comprimeert het tar -czf archief.tar.gz map/tar -xzfPakt een gecomprimeerd archief uit tar -xzf archief.tar.gztar -tzfToont de inhoud zonder uit te pakken tar -tzf archief.tar.gzgzip / gunzipComprimeert of decomprimeert één bestand gzip bestand.txtzip / unzipWerkt met zip-archieven unzip archief.zip
Ezelsbruggetje voor tar: c reate, ex tract, t oon de inhoud, z voor compressie, en f vlak voor de bestandsnaam.
Gebruikers en groepen
Commando Wat het doet Opties Voorbeeld whoamiToont als wie je op dit moment werkt whoamiidToont je UID, GID en al je groepen id of id arthurgroupsToont de groepen van een gebruiker groups arthuruseraddMaakt een gebruiker aan -m maakt meteen een thuismapsudo useradd -m arthuradduserZelfde, maar vraagt alles stap voor stap sudo adduser arthurpasswdStelt een wachtwoord in sudo passwd arthurusermodPast een bestaande gebruiker aan -aG groep voegt toe aan een groepsudo usermod -aG ridders arthurgroupaddMaakt een groep aan sudo groupadd riddersgroupdelVerwijdert een groep sudo groupdel riddersuserdelVerwijdert een gebruiker -r verwijdert ook de thuismapsudo userdel -r arthursu -Wisselt van gebruiker, met diens omgeving sudo su - arthursudoVoert één commando uit als beheerder sudo apt update
usermod -aG groep gebruiker voegt toe aan een groep. usermod -G groep gebruiker vervangt alle groepen van die gebruiker, dus alle andere groepen vallen weg.
Rechten en eigendom
Een rechtenstring uit ls -l bestaat uit vier delen: het soort, en dan drie keer rwx.
-rwxr-x---
│ │ │ └── overige gebruikers: geen rechten
│ │ └───── groep: lezen en uitvoeren
│ └──────── eigenaar: lezen, schrijven, uitvoeren
└────────── soort: - is een bestand, d is een map
Recht Letter Waarde Op een bestand Op een map Lezen r4 De inhoud lezen De namen in de map zien Schrijven w2 De inhoud wijzigen Bestanden toevoegen of verwijderen Uitvoeren x1 Het bestand uitvoeren De map binnengaan
Tel de waarden per groepje op: rwx = 7, rw- = 6, r-x = 5, r-- = 4.
Commando Wat het doet Opties Voorbeeld chmodZet rechten, symbolisch of octaal -R past ook alles in submappen aanchmod 755 script.sh of chmod u+x script.shchownWijzigt de eigenaar, en optioneel de groep -R recursiefsudo chown arthur:ridders bestand.txtchgrpWijzigt enkel de groep -R recursiefsudo chgrp ridders map/
Veelgebruikt Betekent 644Eigenaar leest en schrijft, de rest leest enkel. De standaard voor documenten 755Zoals 644, plus uitvoerrecht voor iedereen. De standaard voor scripts en mappen 600Enkel de eigenaar kan lezen en schrijven. Voor sleutels en wachtwoorden 770Eigenaar en groep mogen alles, de rest niets. Voor een gedeelde projectmap
Processen
Commando Wat het doet Opties Voorbeeld psMomentopname van de lopende processen aux toont alles van iedereenps aux | grep bashtopLive overzicht, sorteert op CPU-gebruik q sluit aftophtopZelfde, maar overzichtelijker. Los te installeren q sluit afhtoppgrepZoekt het PID van een proces op naam -f zoekt in de volledige commandoregelpgrep -f riddlerkillStuurt een signaal naar een PID standaard SIGTERM (15), -9 is SIGKILL kill 4821killall / pkillZelfde, maar op naam in plaats van PID pkill riddlerjobsToont de achtergrondprocessen van deze shell jobsfg / bgHaalt een job naar voren, of laat hem verder draaien op de achtergrond fg %1nohupLaat een proces doorlopen nadat je uitlogt nohup ./script.sh &
Sneltoets of teken Wat het doet & achter een commandoStart het meteen op de achtergrond Ctrl+Z Pauzeert het proces op de voorgrond Ctrl+C Stopt het proces op de voorgrond
Eerst vragen, dan forceren
kill stuurt standaard SIGTERM: dat vraagt het programma netjes te stoppen, zodat het nog kan opruimen. Werkt dat niet, dan pas kill -9 (SIGKILL), dat onmiddellijk afbreekt.
Software en services
Commando Wat het doet Voorbeeld apt updateVerverst de lijst met beschikbare pakketten sudo apt updateapt upgradeInstalleert de beschikbare updates sudo apt upgradeapt searchZoekt een pakket op naam apt search htopapt showToont versie, omschrijving en afhankelijkheden apt show htopapt installInstalleert een pakket sudo apt install htopapt removeVerwijdert een pakket sudo apt remove htopapt autoremoveRuimt afhankelijkheden op die nergens meer voor dienen sudo apt autoremovesystemctl statusToont of een service draait systemctl status nginxsystemctl start / stopStart of stopt een service nu sudo systemctl start nginxsystemctl enableLaat een service meestarten bij het opstarten sudo systemctl enable nginxserviceZelfde, op systemen zonder systemd sudo service nginx startcurlHaalt een adres op, handig om een webserver te testen curl localhost
start geldt nu, enable geldt vanaf de volgende herstart. Vaak wil je allebei.
Systeem
Commando Wat het doet Voorbeeld hostnameToont de naam van de machine hostnamedateToont of formatteert de datum date +%Y-%m-%ddfToont de vrije schijfruimte df -hclearMaakt het scherm leeg clear
Hulp zoeken
Commando Wat het doet Voorbeeld manToont de volledige handleiding. Sluit af met q, zoek met /term man ls--helpToont een korte samenvatting van de opties ls --help
Tekstverwerkers
Commando Wat het doet Belangrijkste toetsen nanoEenvoudige editor in de terminal Ctrl+O en Enter om op te slaan, Ctrl+X om af te sluitenviKrachtiger, maar met een eigen bedieningswijze i om te typen, Esc daarna, :wq om op te slaan en af te sluiten
Scripting
De drie stappen
nano script.sh # 1. schrijven
chmod +x script.sh # 2. uitvoerbaar maken
./script.sh # 3. starten, met ./ ervoor
Elk script begint met de shebang op de eerste regel:
Variabelen
naam="Robin" # geen spaties rond het isgelijkteken
echo "Hallo, $naam" # dubbele quotes: $naam wordt ingevuld
echo 'Hallo, $naam' # enkele quotes: letterlijk $naam
datum=$(date +%Y-%m-%d) # commandosubstitutie: uitvoer opvangen
aantal=$(( 3 + 4 )) # rekenen met gehele getallen
Argumenten en exitcodes
Teken Betekenis $1, $2, ...Het eerste, tweede, ... argument achter de scriptnaam $#Het aantal meegegeven argumenten $@Alle argumenten samen $?De exitcode van het vorige commando: 0 is gelukt exit 1Stopt het script met een foutcode
Testoperatoren
Test Waar als -f padHet bestaat en is een bestand -d padHet bestaat en is een map -z "$tekst"De tekst is leeg -n "$tekst"De tekst is niet leeg "$a" = "$b"De teksten zijn gelijk (!= voor verschillend) $a -eq $bDe getallen zijn gelijk $a -ne $bVerschillend $a -lt $b / -leKleiner dan / kleiner of gelijk $a -gt $b / -geGroter dan / groter of gelijk
Binnen de rechte haken horen spaties: [ -f bestand ], niet [-f bestand]. En gebruik -lt en -gt voor getallen; < en > zijn omleidingstekens en werken hier niet.
Condities
if [ -d "$1" ]; then
echo "$1 is een map"
elif [ -f "$1" ]; then
echo "$1 bestaat"
else
echo "$1 bestaat niet"
exit 1
fi
Lussen
for i in 1 2 3; do
mkdir "project_$i"
done
for bestand in *.txt; do
echo "$bestand"
done
teller=10
while [ $teller -gt 0 ]; do
echo $teller
teller=$(( teller - 1 ))
done
while read regel; do
echo "Hallo, $regel!"
done < namen.txt
Functies
optellen() {
echo $(( $1 + $2 ))
}
optellen 3 4
Binnen een functie zijn $1 en $2 de argumenten van de functie , niet die van het script.
Argumenten controleren
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Gebruik: ./script.sh <pad>"
exit 1
fi