Ga naar hoofdinhoud

Linux-cheatsheet

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​

SoortWat het isVoorbeeld
Absoluut padVertrekt altijd bij de root / en werkt vanuit elke map/home/student/documenten/project.txt
Relatief padVertrekt bij de map waar je nu staatproject.txt of ../project.txt
SymboolBetekenis
/De root van het bestandssysteem
~Je eigen thuismap
.De huidige map
..De bovenliggende map
-De vorige map waar je was (enkel bij cd)
CommandoWat het doetOptiesVoorbeeld
pwdToont het volledige pad van de map waar je staatpwd
cdVerandert van mapcd ~ thuismap · cd .. één omhoog · cd - vorige mapcd /home/student
lsLijst de inhoud van een map-l details · -a ook verborgen bestanden · -h leesbare groottesls -la

Bestanden en mappen​

CommandoWat het doetOptiesVoorbeeld
mkdirMaakt een map aan-p maakt ontbrekende oudermappen mee aanmkdir -p pad/naar/map
touchMaakt een leeg bestand aan, of ververst de tijdstempeltouch nieuw.txt
cpKopieert een bestand of map-r nodig voor mappencp bron.txt doel.txt
mvVerplaatst een bestand, of hernoemt hetmv oud.txt nieuw.txt
rmVerwijdert een bestand of map-r voor mappen · -f forceertrm -r map
rmdirVerwijdert een lege maprmdir lege-map
rm kent geen prullenbak

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​

CommandoWat het doetOptiesVoorbeeld
catToont de volledige inhoud, of plakt bestanden aan elkaar-n nummert de regels · -b nummert enkel niet-lege regelscat -n bestand.txt
headToont de eerste 10 regels-n [aantal]head -n 3 bestand.txt
tailToont de laatste 10 regels-n [aantal] · -f volgt het bestand livetail -f server.log
lessBladert door een lang bestandq sluit af · /zoekterm zoektless bestand.txt

Zoeken en filteren​

CommandoWat het doetOptiesVoorbeeld
grepToont de regels die op een patroon passen-i negeert hoofdletters · -r zoekt in submappen · -v toont wat niet pastgrep -i "fout" server.log
cutHaalt kolommen uit een regel-d scheidingsteken · -f veldnummerscut -d "," -f 2 data.csv
sortSorteert regels-n numeriek · -r omgekeerd · -u zonder dubbelssort -n getallen.txt
uniqVerwijdert dubbels die na elkaar staan-c telt hoe vaak elke regel voorkomtsort namen.txt | uniq -c
wcTelt-l regels · -w woorden · -c byteswc -l bestand.txt
echoDrukt 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).

TekenWat het doetVoorbeeld
>Stuurt stdout naar een bestand en overschrijftecho "tekst" > bestand.txt
>>Stuurt stdout naar een bestand en voegt toeecho "extra" >> bestand.txt
<Leest stdin uit een bestandsort < namen.txt
2>Stuurt enkel de foutmeldingen naar een bestandls bestaat-niet 2> fouten.log
&>Stuurt stdout én stderr naar hetzelfde bestandcommando &> alles.log
2>&1Voegt stderr samen met stdout, achteraan het commandocommando > alles.log 2>&1

Pipes​

Een pipe verbindt de uitvoer van het ene commando met de invoer van het volgende.

TekenVoorbeeldWat 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​

CommandoWat het doetVoorbeeld
tar -cfMaakt een archieftar -cf archief.tar map/
tar -czfMaakt een archief én comprimeert hettar -czf archief.tar.gz map/
tar -xzfPakt een gecomprimeerd archief uittar -xzf archief.tar.gz
tar -tzfToont de inhoud zonder uit te pakkentar -tzf archief.tar.gz
gzip / gunzipComprimeert of decomprimeert één bestandgzip bestand.txt
zip / unzipWerkt met zip-archievenunzip archief.zip

Ezelsbruggetje voor tar: create, extract, toon de inhoud, z voor compressie, en f vlak voor de bestandsnaam.

Gebruikers en groepen​

CommandoWat het doetOptiesVoorbeeld
whoamiToont als wie je op dit moment werktwhoami
idToont je UID, GID en al je groepenid of id arthur
groupsToont de groepen van een gebruikergroups arthur
useraddMaakt een gebruiker aan-m maakt meteen een thuismapsudo useradd -m arthur
adduserZelfde, maar vraagt alles stap voor stapsudo adduser arthur
passwdStelt een wachtwoord insudo passwd arthur
usermodPast een bestaande gebruiker aan-aG groep voegt toe aan een groepsudo usermod -aG ridders arthur
groupaddMaakt een groep aansudo groupadd ridders
groupdelVerwijdert een groepsudo groupdel ridders
userdelVerwijdert een gebruiker-r verwijdert ook de thuismapsudo userdel -r arthur
su -Wisselt van gebruiker, met diens omgevingsudo su - arthur
sudoVoert één commando uit als beheerdersudo apt update
Vergeet de a niet in -aG

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
RechtLetterWaardeOp een bestandOp een map
Lezenr4De inhoud lezenDe namen in de map zien
Schrijvenw2De inhoud wijzigenBestanden toevoegen of verwijderen
Uitvoerenx1Het bestand uitvoerenDe map binnengaan

Tel de waarden per groepje op: rwx = 7, rw- = 6, r-x = 5, r-- = 4.

CommandoWat het doetOptiesVoorbeeld
chmodZet rechten, symbolisch of octaal-R past ook alles in submappen aanchmod 755 script.sh of chmod u+x script.sh
chownWijzigt de eigenaar, en optioneel de groep-R recursiefsudo chown arthur:ridders bestand.txt
chgrpWijzigt enkel de groep-R recursiefsudo chgrp ridders map/
VeelgebruiktBetekent
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​

CommandoWat het doetOptiesVoorbeeld
psMomentopname van de lopende processenaux toont alles van iedereenps aux | grep bash
topLive overzicht, sorteert op CPU-gebruikq sluit aftop
htopZelfde, maar overzichtelijker. Los te installerenq sluit afhtop
pgrepZoekt het PID van een proces op naam-f zoekt in de volledige commandoregelpgrep -f riddler
killStuurt een signaal naar een PIDstandaard SIGTERM (15), -9 is SIGKILLkill 4821
killall / pkillZelfde, maar op naam in plaats van PIDpkill riddler
jobsToont de achtergrondprocessen van deze shelljobs
fg / bgHaalt een job naar voren, of laat hem verder draaien op de achtergrondfg %1
nohupLaat een proces doorlopen nadat je uitlogtnohup ./script.sh &
Sneltoets of tekenWat het doet
& achter een commandoStart het meteen op de achtergrond
Ctrl+ZPauzeert het proces op de voorgrond
Ctrl+CStopt 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​

CommandoWat het doetVoorbeeld
apt updateVerverst de lijst met beschikbare pakkettensudo apt update
apt upgradeInstalleert de beschikbare updatessudo apt upgrade
apt searchZoekt een pakket op naamapt search htop
apt showToont versie, omschrijving en afhankelijkhedenapt show htop
apt installInstalleert een pakketsudo apt install htop
apt removeVerwijdert een pakketsudo apt remove htop
apt autoremoveRuimt afhankelijkheden op die nergens meer voor dienensudo apt autoremove
systemctl statusToont of een service draaitsystemctl status nginx
systemctl start / stopStart of stopt een service nusudo systemctl start nginx
systemctl enableLaat een service meestarten bij het opstartensudo systemctl enable nginx
serviceZelfde, op systemen zonder systemdsudo service nginx start
curlHaalt een adres op, handig om een webserver te testencurl localhost

start geldt nu, enable geldt vanaf de volgende herstart. Vaak wil je allebei.

Systeem​

CommandoWat het doetVoorbeeld
hostnameToont de naam van de machinehostname
dateToont of formatteert de datumdate +%Y-%m-%d
dfToont de vrije schijfruimtedf -h
clearMaakt het scherm leegclear

Hulp zoeken​

CommandoWat het doetVoorbeeld
manToont de volledige handleiding. Sluit af met q, zoek met /termman ls
--helpToont een korte samenvatting van de optiesls --help

Tekstverwerkers​

CommandoWat het doetBelangrijkste toetsen
nanoEenvoudige editor in de terminalCtrl+O en Enter om op te slaan, Ctrl+X om af te sluiten
viKrachtiger, maar met een eigen bedieningswijzei 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:

#!/bin/bash

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​

TekenBetekenis
$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​

TestWaar 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
Twee klassiekers

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