Linux Bash Cheat Sheet
Enkele tools command line parameters
Niet een zeer uitgebreide lijst, alleen enkele die voor mij nuttig zijn
Linux Ubuntu-versie controleren
Methode 1
lsb_release -a
zou iets als volgt produceren
Geen LSB modules beschikbaar.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Methode 2
cat /etc/os-release
zou iets als volgt produceren
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
Archiveren & onarchiveren
Comprimeren
tar -zcvf archive-name.tgz directory-name
Ontdrukken
tar -zxvf archive-name.tgz
Verwijderde servers
Push gebruikersidentiteit naar externe server
ssh-copy-id user@10.0.0.225
Zodat het mogelijk is om zonder wachtwoord in te loggen de volgende keer zoals
ssh user@10.0.0.225
Bestand uploaden
scp ~/file.ext user@host-ip:/home/user/file.ext
Map met ingekapselde inhoud recursief downloaden
scp -r user@host-ip:/home/user/dir ~/dir
Mappen en bestanden
Bestaanscontrole
# maak een map aan als deze niet bestaat, met alle tussenliggende mappen
[ -d $repdir ] || mkdir -p $repdir
# of
if [ -d $fname ]; then
echo "Bestand bestaat niet: $fname"
return
fi
Map aanmaken voor een specifieke gebruiker
sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1
Itereer over bestanden in de map
# deze converteert alle jpg-bestanden in een bepaalde map naar fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Alle bestanden samenvoegen in één
cat ./* > merged.txt
Een opdracht toevoegen aan de 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 -
hier:
- */15 - uitvoeren elke 15 minuten
- control-marker-1 - is de identificator van deze opdracht in de cronconfiguratie om deze later met hetzelfde script bij te werken
- /bin/bash - opdracht om uit te voeren
- /home/user/stest/stest.sh - bash-parameter - de bash zal dit script uitvoeren
- /home/user/stest - script-parameter - om te worden aangeroepen via $1
- /home/user/stest/stest.log - logbestand met console-uitvoer van stest.sh
Controleer
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Logbestanden
Live logbestand bekijken
sudo tail -f /var/log/megalog.log
Statuscode van curl
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} # voer opnieuw opstartlogica uit
SSH-opdracht laten draaien na afmelding
Aanname: je hebt een programma actief in de voorgrond, druk dan
- ctrl-Z, dan:
[1]+ Gestopt myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- afmelden
JSON genereren
Installeer jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
zou als uitvoer geven
{"model":"a", "prompt":"b", "stream":false}
Een beetje 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 formatteren
Gebruik
| jq .
Om de hierboven gegenereerde JSON te formatteren:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
Het geverifieerde JSON-bestand zal zijn:
{
"model": 123,
"prompt": 456,
"stream": false
}
JSON parsen en waarde van een bepaald veld retourneren
Installeer eerst jq
sudo apt-get install jq
Gebruik
| jq -r '.fieldName'
Zoals het uitvoeren van een aanroep naar 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
Woorden tellen:
wc -w filename.txt
zal iets als volgt retourneren
261 filename.txt
Als je alleen een geheel wilt, kun je het eerste woord, dat een getal is, verwijderen
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words woorden"
Of gebruik wc zoals:
words=`wc -w < filename.txt`
echo "$words woorden"
Controleer hoeveel ruimte de map op de HDD inneemt
du ~/dirname
Krijg de mapnaam waarin het uitgevoerde script zich bevindt
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Meet de uitvoeringstijd van het script
Een optie is om de tijdfunctie te gebruiken
time your_script.sh
Een andere manier is iets ingewikkelder:
start=`date +%s`
# zeer belangrijk code
# komt hier
end=`date +%s`
runtime=$((end-start))
Vergelijk twee bestanden met VS Code
code -d <bestand 1> <bestand 2>
Controleer beschikbare pakketten in de Ubuntu-repository
sudo apt-cache policy <packageName>
Nuttige links
- Python Cheat Sheet
- Conda Cheat Sheet
- Boekmerken synchronisatie met Floccus
- Linux opnieuw installeren
- Ollama Cheat Sheet
- Docker Cheat Sheet
- Kubernetes Cheat Sheet
- Markdown Cheat Sheet
- Coderen - decoderen Base64 op Windows, Linux en Mac
- Decodeer en print JWT-token
- MinIO Opdrachtregelparameters Cheat Sheet