HomeAboutContact

Cheat Sheet - Bash

Von Yannik Korzikowski
Veröffentlich in Cheat Sheets
24. November 2023
1 min Lesezeit
🇩🇪
Aktualisiert am 31. July 2025
Cheat Sheet - Bash

Inhalt

01
Datei-Testoperatoren
02
Argumente
03
Yes / No selector
04
Logging
05
Args Command selector
06
Add Debug env var

In diesem Artikel sammle ich alle möglichen hilfreichen Tipps & Snippets für das Schreiben von einem Bash Skript.

Datei-Testoperatoren

OperatorBedeutungBeispielWahr wenn …
-eDatei existiert[ -e file.txt ]Die Datei oder das Verzeichnis existiert
-fReguläre Datei (keine Dir, Pipe, etc)[ -f file.txt ]Existiert und ist eine Datei
-dVerzeichnis[ -d /etc ]Existiert und ist ein Verzeichnis
-rLesbar[ -r file.txt ]Datei ist für den aktuellen User lesbar
-wSchreibbar[ -w file.txt ]Datei ist beschreibbar
-xAusführbar[ -x script.sh ]Datei ist ausführbar
-sNicht leer[ -s file.txt ]Datei existiert und hat > 0 Byte
-LSymbolischer Link[ -L link.txt ]Datei ist ein Symlink
-h(wie -L) Symbolischer Link (POSIX)[ -h link.txt ]Datei ist ein Symlink
!Negation[ ! -f missing.txt ]Datei existiert nicht

Argumente

AusdruckBedeutung
$0Name des Skripts selbst
$1Erstes Argument
$2Zweites Argument
$3Drittes Argument
"$@"Alle Argumente einzeln (als Array) → ideal für Schleifen
"$*"Alle Argumente als ein String
$#Anzahl der übergebenen Argumente

Yes / No selector

while true; do
_log ""
read -rp "Ready to update credential - proceed? (yes/no) " yn
case $yn in
yes|y) break;;
no|n) _log "ERROR" "Aborted!";;
* ) _log "Invalid response!";;
esac
done

Logging

_log() {
if [ "$TERM" == "xterm-256color" ]; then
textRed=$(tput setaf 1)
textYellow=$(tput setaf 3)
textBlue=$(tput setaf 4)
textNormal=$(tput sgr0)
fi
if [ "${1}" == "WARN" ]; then
printf '%-7s %s\n' "${textYellow}[$1]${textNormal}" "$2" >&2
return 0
elif [ "${1}" == "ERROR" ]; then
printf '%-7s %s\n' "${textRed}[$1]${textNormal}" "$2" >&2
exit 1
elif [ "${1}" == "INFO" ]; then
printf '%-7s %s\n' "${textBlue}[$1]${textNormal}" "$2"
return 0
else
echo "$1"
fi
}
_log "INFO" "This is an info message"
_log "ERROR" "This is an error message"
_log "WARN" "This is a warn message"

Args Command selector

case "$1" in
init)
init
_log "INFO" "PolyCV initialized!"
;;
init-start)
init
_log "INFO" "PolyCV initialized!"
start
_log "INFO" "PolyCV started!"
;;
start)
start
_log "INFO" "PolyCV started!"
;;
stop)
stop
_log "INFO" "PolyCV stopped!"
;;
purge)
purge
;;
*)
echo "Usage: $0 {init|init-start|start|stop|purge\"server command\"}"
exit 1
;;
esac

Add Debug env var

# Check if DEBUG environment variable is set
if [ -n "$DEBUG" ]; then
# If DEBUG is set, enable verbose output and exit on error/unset variable
set -eux
else
# Otherwise, just exit on error
set -e
fi

Photo by J B: https://www.pexels.com/photo/herd-of-wildebeests-on-the-field-17980174/


Affiliate

Netcup bietet virtuelle Root-Server für einen fairen Preis an.
Mit dem Gutschein 36nc17009374344 erhälst du 5€ auf deine erste Bestellung.
Hier bestellen und einen Rabatt erhalten.
Falls der Gutschein nicht mehr funktioniert, bitte in die Kommentare schreiben.


Tags

#cheat_sheet#bash

Share


Vorheriger Artikel
Inhaltsverzeichnis Tools
Nächster Artikel
Cheat Sheet - Git
Yannik Korzikowski

Yannik Korzikowski

Site Reliability Engineer

Auch interessant

Cheat Sheet - Git
Cheat Sheet - Git
December 02, 2023
1 min
🇩🇪

Quick Links

AboutContact me

Social Media