Bash-Referenzliste – Linux-Befehle für Ubuntu, Mint und Debian

Einige Tools mit Kommandozeilenparametern

Inhaltsverzeichnis

Nicht sehr umfassend, nur einige für mich nützliche Beispiele

bash and shell anniversary!

Für weitere Entwicklertools und Workflows siehe Developer Tools: Der komplette Leitfaden für moderne Entwicklungs-Workflows.

Wenn Sie ein interaktives Prompt-Muster in Skripten benötigen, sehen Sie [Skripte mit „Drücken Sie eine beliebige Taste" in Bash, CMD, PowerShell und macOS pausieren](https://www.glukhov.org/de/developer-tools/terminals-shell/press-any-key-pause-bash-powershell-cmd/ “Skripte mit „Drücken Sie eine beliebige Taste” in Bash, CMD, PowerShell und macOS mit praktischen Beispielen und TTY-sicheren Mustern pausieren").

Wie man die Linux Ubuntu-Version überprüft

Für weitere Details zur Überprüfung der Ubuntu-Version siehe Linux Ubuntu-Version überprüfen.

Methode 1

lsb_release -a

würde etwas Ähnliches wie Folgendes produzieren:

No LSB modules are available.
Distributor ID:	Linuxmint
Description:	Linux Mint 22.1
Release:	22.1
Codename:	xia

Methode 2

cat /etc/os-release

würde etwas Ähnliches wie Folgendes produzieren:

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

Archivieren und Entarchivieren mit Tar in Bash

Komprimieren

tar -zcvf archive-name.tgz directory-name

Dekomprimieren

tar -zxvf archive-name.tgz

Remote-Server-Zugriff mit SSH und SCP in Bash

Benutzeridentität auf den Remote-Server übertragen

ssh-copy-id user@10.0.0.225

Damit ist das Einloggen beim nächsten Mal ohne Passwort möglich, wie folgt:

ssh user@10.0.0.225

Datei hochladen

scp ~/file.ext user@host-ip:/home/user/file.ext

Ordner mit verschachteltem Inhalt rekursiv herunterladen

scp -r user@host-ip:/home/user/dir ~/dir

Verzeichnis- und Dateiverwaltung in Bash

Auf Existenz prüfen

# Erstelle einen Ordner, falls er nicht existiert, einschließlich aller Zwischenordner
[ -d $repdir ] || mkdir -p $repdir

# oder
if [ -d $fname ]; then
  echo "Datei existiert nicht: $fname"
  return
fi

Ordner für einen bestimmten Benutzer erstellen

sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1

Iterieren über Dateien im Ordner

# Dies konvertiert alle jpg-Dateien in einem bestimmten Ordner zu fits
for f in some-folder/*.jpg
do
  convert "$f" "${f/.jpg/.fits}"
done

Alle Dateien in einer Datei zusammenführen

cat ./* > merged.txt

Befehle zum Crontab hinzufügen

(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 -

Hierbei gilt:

  • */15 - alle 15 Minuten ausführen
  • control-marker-1 - ist der Identifikator dieses Befehls in der Cron-Konfiguration, um ihn beim nächsten Mal mit demselben Skript zu aktualisieren
  • /bin/bash - auszuführender Befehl
  • /home/user/stest/stest.sh - Bash-Parameter – Bash führt dieses Skript aus
  • /home/user/stest - Skriptparameter – wird über $1 zugegriffen
  • /home/user/stest/stest.log - Protokolldatei mit der Konsolenausgabe von stest.sh

Überprüfen

grep /home/user/stest/stest.sh /var/log/syslog
crontab -e

Protokolldateien in Bash überwachen

Protokolldatei live anzeigen

sudo tail -f /var/log/megalog.log

HTTP-Statuscode mit curl in Bash abrufen

response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
  
# oder

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} # Logik zum Starten/Neustarten ausführen

SSH-Befehl nach dem Abmelden weiterlaufen lassen

https://stackoverflow.com/questions/954302/how-to-make-a-program-continue-to-run-after-log-out-from-ssh

Angenommen, Sie haben ein Programm im Vordergrund laufen, drücken Sie

  • Strg-Z, dann:

[1]+ Gestoppt myprogram

  • disown -h %1
  • bg 1

[1]+ myprogram &

  • logout

JSON in Bash mit jo generieren

jo installieren

sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"

würde Folgendes ausgeben:

{"model":"a", "prompt":"b", "stream":false}

Etwas komplexer:

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 in Bash mit jq formatieren

Verwenden Sie

| jq .

Um das oben generierte JSON zu formatieren:

a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .

Das formatierte JSON lautet:

{
  "model": 123,
  "prompt": 456,
  "stream": false
}

JSON parsen und Feldwerte in Bash extrahieren

Installieren Sie zuerst jq

sudo apt-get install jq

Verwenden Sie

  | jq -r '.fieldName'

Wie beim Parsen der Ausgabe eines Aufrufs an Ollama:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false
}'  | jq -r '.response'

Wörter in einer Datei mit Bash zählen

Wortanzahl:

wc -w filename.txt

wird etwas Ähnliches wie Folgendes zurückgeben:

261 filename.txt

Wenn Sie nur eine ganze Zahl wollen, können Sie das erste Wort, das eine Zahl ist, ausschneiden:

words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words words"

Oder verwenden Sie wc wie folgt:

words=`wc -w < filename.txt`
echo "$words words"

Verzeichnis-Peichspeicher-Nutzung überprüfen

du ~/dirname

Pfad des Skriptverzeichnisses in Bash abrufen

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

Skript-Ausführungszeit in Bash messen

Eine Möglichkeit ist die Verwendung der time-Funktion:

time your_script.sh

Eine andere Möglichkeit ist etwas komplizierter:

start=`date +%s`

# sehr wichtiger Code
# kommt hier hin

end=`date +%s`

runtime=$((end-start))

Zwei Dateien mit VS Code vergleichen

code -d <datei 1> <datei 2>

Verfügbare Pakete im Ubuntu-Repository überprüfen

sudo apt-cache policy <packageName>

Abonnieren

Neue Beiträge zu Systemen, Infrastruktur und KI-Engineering.