Bash Cheatsheet - Linux-commando's voor Ubuntu, Mint en Debian
Sommige tools bevatten command line parameters
Niet erg uitgebreid, maar een lijst met voor mij nuttige tips

Voor meer ontwikkelaarsgereedschappen en workflows, zie Developer Tools: De Complete Gids voor Moderne Ontwikkelingsworkflows.
Als u een interactieve prompt-patroon nodig heeft in scripts, zie Scripts pauzeren met ‘Druk op een toets’ in Bash, CMD, PowerShell en macOS.
Hoe u de Linux Ubuntu-versie controleert
Voor meer details over het controleren van de Ubuntu-versie, zie Controleer Linux Ubuntu-versie.
Methode 1
lsb_release -a
dit zou iets als dit opleveren:
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Methode 2
cat /etc/os-release
dit zou iets als dit opleveren:
NAME="Linux Mint"
VERSION="22.1 (Xia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.1"
VERSION_ID="22.1"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=xia
UBUNTU_CODENAME=noble
Bash Archiveren en Ontpakken met Tar
Comprimeren
tar -zcvf archive-name.tgz directory-name
Decomprimeren
tar -zxvf archive-name.tgz
Bash Toegang tot een Remote Server met SSH en SCP
Gebruikersidentiteit pushen naar de remote server
ssh-copy-id user@10.0.0.225
Hierdoor kunt u de volgende keer inloggen zonder wachtwoord, zoals:
ssh user@10.0.0.225
Bestand uploaden
scp ~/file.ext user@host-ip:/home/user/file.ext
Map met geneste bestanden recursief downloaden
scp -r user@host-ip:/home/user/dir ~/dir
Bash Mappen- en Bestandsbeheer
Controleren op bestaan
# Maak een map aan als deze niet bestaat, inclusief alle tussenliggende mappen
[ -d $repdir ] || mkdir -p $repdir
# of
if [ -d $fname ]; then
echo "Bestand bestaat niet: $fname"
return
fi
Map maken voor een specifieke gebruiker
sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1
Itereren over bestanden in een map
# Deze converteert alle jpg-bestanden in een map naar fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Alle bestanden samenvoegen in één
cat ./* > merged.txt
Commando’s toevoegen aan Crontab
(crontab -l 2>/dev/null | \
grep -v control-marker-1; \
echo '*/15 * * * * /bin/bash /home/user/stest/stest.sh /home/user/stest >> /home/user/stest/stest.log 2>&1 #control-marker-1') | \
crontab -
hierbij:
- */15 - uitvoeren elke 15 minuten
- control-marker-1 - is de identifier van dit commando in de cron-configuratie om het de volgende keer met dezelfde script bij te werken
- /bin/bash - commando om uit te voeren
- /home/user/stest/stest.sh - bash-parameter - bash voert dit script uit
- /home/user/stest - scriptparameter - toegankelijk via $1
- /home/user/stest/stest.log - logbestand met console-uitvoer van stest.sh
Controleren
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Logbestanden volgen in Bash
Logbestand live volgen
sudo tail -f /var/log/megalog.log
HTTP-statuscode ophalen met curl in Bash
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# of
url='http://localhost:8080/'
status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})
[[ $status == 500 ]] || [[ $status == 000 ]] && echo restarting ${url} # start/restart logica uitvoeren
SSH-commando na afmelden blijven draaien
U gaat ervan uit dat u een programma in de voorgrond draait, druk op:
- ctrl-Z, en vervolgens:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
JSON genereren in Bash met jo
Installeer jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
zou de volgende output produceren:
{"model":"a", "prompt":"b", "stream":false}
Iets complexer:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
JSON opmaken in Bash met jq
Gebruik
| jq .
Om de hierboven gegenereerde JSON op te maken:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
De opgemaakte JSON zal zijn:
{
"model": 123,
"prompt": 456,
"stream": false
}
JSON parsen en veldwaarden extraheren in Bash
Installeer eerst jq
sudo apt-get install jq
Gebruik
| jq -r '.fieldName'
Zoals het parsen van de output van een oproep aan Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
Woorden tellen in een bestand met Bash
Woordtelling:
wc -w filename.txt
zal iets als dit teruggeven:
261 filename.txt
Als u alleen een getal wilt, kunt u het eerste woord (het getal) uitsnijden:
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
Of gebruik wc als:
words=`wc -w < filename.txt`
echo "$words words"
Gebruikte schijfruimte van een map controleren
du ~/dirname
Het scriptmap pad ophalen in Bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Script-uitvoeringstijd meten in Bash
Een optie is het gebruik van de time-functie
time your_script.sh
Een andere manier is een beetje ingewikkelder:
start=`date +%s`
# zeer belangrijke code
# komt hier
end=`date +%s`
runtime=$((end-start))
Twee bestanden vergelijken met VS Code
code -d <bestand 1> <bestand 2>
Beschikbare pakketten in het Ubuntu-repository controleren
sudo apt-cache policy <packageName>
Nuttige links
- Git Branch in Bash Prompt
- Python Cheat-sheet
- Conda Cheat-sheet
- Boekmarktsynchronisatie met Floccus
- Linux opnieuw installeren
- Ollama Cheat-sheet
- Docker Cheat-sheet
- Kubernetes Cheat-sheet
- Markdown Cheat-sheet
- Encoder - decoderen Base64 op Windows, Linux en Mac
- JWT-token decoderen en afdrukken
- MinIO Commandline Parameters Cheat-sheet