Bash-snabbkurs – Linux-kommandon för Ubuntu, Mint och Debian
Några verktyg för kommandoradens parametrar
Inte en särskilt omfattande lista, bara några som är användbara för mig

För fler utvecklarverktyg och arbetsflöden, se Developer Tools: The Complete Guide to Modern Development Workflows.
Om du behöver ett interaktivt frågemönster i skript, se Pause scripts with Press any key in Bash CMD PowerShell and macOS.
Hur man kontrollerar Linux Ubuntu-version
För mer detaljer om hur man kontrollerar Ubuntu-version, se Check linux ubuntu version.
Metod 1
lsb_release -a
skulle producera något som
No LSB modules are available.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Metod 2
cat /etc/os-release
skulle producera något som
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
Arkivering och packning med Tar i Bash
Komprimera
tar -zcvf archive-name.tgz directory-name
Depacka
tar -zxvf archive-name.tgz
Bash-åtkomst till fjärrserver med SSH och SCP
Skicka användaridentitet till fjärrserver
ssh-copy-id user@10.0.0.225
Så att du kan logga in utan lösenord nästa gång som
ssh user@10.0.0.225
Ladda upp fil
scp ~/file.ext user@host-ip:/home/user/file.ext
Ladda ner mapp med innehåll rekursivt
scp -r user@host-ip:/home/user/dir ~/dir
Bash-mappar och filhantering
Kontrollera existens
# skapa en mapp om den inte finns, med alla mellanliggande mappar
[ -d $repdir ] || mkdir -p $repdir
# eller
if [ -d $fname ]; then
echo "Filen finns inte: $fname"
return
fi
Skapa mapp för specifik användare
sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1
Iterera över filer i mappen
# denna konverterar alla jpg-filer i en mapp till fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Sammanfoga alla filer till en
cat ./* > merged.txt
Lägg till kommandon i 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 -
här:
- */15 - kör var 15:e minut
- control-marker-1 - är identifierare för detta kommando i cron-konfigen för att uppdatera det nästa gång med samma skript
- /bin/bash - kommando att köra
- /home/user/stest/stest.sh - bash-param - bash kommer köra detta skript
- /home/user/stest - skript-param - för att nås via $1
- /home/user/stest/stest.log - loggfil med konsolutdata från stest.sh
Kontrollera
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Att övervaka loggfiler i Bash
Övervaka loggfil live
sudo tail -f /var/log/megalog.log
Hämta HTTP-statuskod med curl i Bash
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# eller
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} # starta/omstarta logik
Hålla SSH-kommando igång efter utloggning
Antar att du har ett program som körs i förgrunden, tryck på
- ctrl-Z, sedan:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
Generera JSON i Bash med jo
Installera jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
skulle ge ut
{"model":"a", "prompt":"b", "stream":false}
Lite mer komplext:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
Formatera JSON i Bash med jq
Använd
| jq .
För att formatera den JSON som genererades ovan:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
Den formaterade JSON blir:
{
"model": 123,
"prompt": 456,
"stream": false
}
Parsa JSON och extrahera fältvärden i Bash
Installera jq först
sudo apt-get install jq
Använd
| jq -r '.fieldName'
Liksom att parsar utdata från ett anrop till Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Why is the sky blue?",
"stream": false
}' | jq -r '.response'
Räkna ord i en fil med Bash
Ordräkning:
wc -w filename.txt
kommer att returnera något som
261 filename.txt
Om du vill ha bara ett heltal kan du klippa bort första ordet, som är ett nummer
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"
Eller använd wc som:
words=`wc -w < filename.txt`
echo "$words words"
Kontrollera skivanvändning för mappar
du ~/dirname
Hämta skriptmappens sökväg i Bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Mäta skriptkörningstid i Bash
En möjlighet är att använda time-funktionen
time your_script.sh
Ett annat sätt är lite mer komplicerat:
start=`date +%s`
# mycket viktig kod
# går hit
end=`date +%s`
runtime=$((end-start))
Jämföra två filer med VS Code
code -d <fil 1> <fil 2>
Kontrollera tillgängliga paket i Ubuntu-repositoriet
sudo apt-cache policy <paketnamn>
Användbara länkar
- Git Branch in Bash Prompt
- Python Cheatsheet
- Conda Cheatsheet
- Bookmarks Synchronisation with Floccus
- Reinstall linux
- Ollama cheatsheet
- Docker Cheatsheet
- Kubernetes Cheatsheet
- Markdown Cheatsheet
- Encoding - decoding Base64 on Windows, Linux and Mac
- Decode and print JWT token
- MinIO Commandline Parameters Cheatsheet