Linux Bash Cheat Sheet
Vissa verktyg kommandoradsparametrar
Inte en särskilt omfattande lista, bara några användbara för mig

Kontrollera Linux Ubuntu-version
Metod 1
lsb_release -a
kommer att producera något som
Inga LSB-moduler är tillgängliga.
Distributör-ID: Linuxmint
Beskrivning: Linux Mint 22.1
Version: 22.1
Kodnamn: xia
Metod 2
cat /etc/os-release
kommer att 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 & avarkivering
Komprimering
tar -zcvf arkivnamn.tgz mappnamn
Dekomprimering
tar -zxvf arkivnamn.tgz
Avlägsna servrar
Skicka användaridentitet till avlägsen server
ssh-copy-id användare@10.0.0.225
Så att det kommer att tillåta inloggning utan lösenord nästa gång som
ssh användare@10.0.0.225
Ladda upp fil
scp ~/fil.ext användare@host-ip:/home/användare/fil.ext
Ladda ner mapp med inbäddade element rekursivt
scp -r användare@host-ip:/home/användare/mapp ~/mapp
Mappar och filer
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 mapp1
sudo chown specifik_användare mapp1
sudo chown :specifik_grupp mapp1
Iterera över filer i mappen
# detta konverterar alla jpg-filer i någon mapp till fits
for f in någon-mapp/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Slå samman alla filer till en
cat ./* > sammanslagen.txt
Lägg till kommandokörning i crontab
(crontab -l 2>/dev/null | \
grep -v kontroll-märkare-1; \
echo '*/15 * * * * /bin/bash /home/användare/stest/stest.sh /home/användare/stest >> /home/användare/stest/stest.log 2>&1 #kontroll-märkare-1') | \
crontab -
här:
- */15 - kör var 15:e minut
- kontroll-märkare-1 - är identifierare för detta kommando i cron-konfigurationen för att uppdatera det nästa gång med samma skript
- /bin/bash - kommando att köra
- /home/användare/stest/stest.sh - bash-parametern - bash kommer att köra detta skript
- /home/användare/stest - skriptparametern - att komma åt av $1
- /home/användare/stest/stest.log - loggfil med konsolutdata av stest.sh
Kontrollera
grep /home/användare/stest/stest.sh /var/log/syslog
crontab -e
Loggar
Följ loggfil i realtid
sudo tail -f /var/log/megalog.log
Statuskod för curl
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servernamn)
# 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 startar om ${url} # gör start/omstart-logik
Låt ssh-kommando köra efter utloggning
Antag att du har ett program som körs i förgrunden, tryck på
- ctrl-Z, sedan:
[1]+ Stoppat myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
Generera JSON
Installera jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
kommer att producera
{"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
Använd
| jq .
För att formatera JSON som genererades ovan:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
Det formaterade JSON kommer att vara:
{
"model": 123,
"prompt": 456,
"stream": false
}
Parsa JSON och returnera värdet av något fält
Installera jq först
sudo apt-get install jq
Använd
| jq -r '.fältNamn'
Som att parsa output av ett anrop till Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Varför är himlen blå?",
"stream": false
}' | jq -r '.response'
Räkna ord i fil
Ordräkning:
wc -w filnamn.txt
kommer att returnera något som
261 filnamn.txt
Om du vill ha bara ett heltal, kan du klippa ut första ordet, som är ett nummer
ord=`wc -w filnamn.txt | cut -f1 -d' '`
echo "$ord ord"
Eller använd wc som:
ord=`wc -w < filnamn.txt`
echo "$ord ord"
Kontrollera hur mycket utrymme mappen tar på HDD
du ~/mappnamn
Hämta mappnamn där körande skript är placerat
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Mät körningstid för skriptet
En alternativ är att använda time-funktionen
time ditt_skript.sh
Ett annat sätt är bara lite mer komplicerat:
start=`date +%s`
# mycket viktig kod
# går här
slut=`date +%s`
körningstid=$((slut-start))
Jämföra två filer med VS Code
code -d <fil 1> <fil 2>
Kontrollera tillgängliga paket i Ubuntu-repository
sudo apt-cache policy <paketNamn>