Zuletzt aktualisiert am: 11 June 2026

Bash Unix Timestamp ausgeben: date +%s einfach erklärt

So gibst du in Bash den aktuellen Unix-Timestamp aus: date +%s für Sekunden seit Epoch, Variablen, Zeitmessung und Hinweise für Linux und macOS.

Dieser Artikel hat eine Lesedauer von 2 minutes Minuten.

Bash Unix Timestamp ausgeben: date +%s einfach erklärt

Ein Unix-Timestamp ist die Anzahl an Sekunden seit dem 1. Januar 1970 (UTC). Für Logs, Metriken, Cache-Keys oder einfache Laufzeitmessungen ist das oft die praktischste Zeitdarstellung, weil sie eindeutig und gut vergleichbar ist.

Kurzantwort

Aktuellen Unix-Timestamp in Sekunden ausgeben:

date +%s

Unix Timestamp mit date +%s ausgeben

Auf Linux ist die Standardlösung schlicht:

date +%s

Das gibt die Sekunden seit Epoch aus, zum Beispiel 1736850000.

Timestamp in Bash-Variable speichern

Wenn du den Wert in eine Variable brauchst:

now="$(date +%s)"
echo "$now"

Zeitdifferenz in Bash berechnen

Ein typisches Muster ist “Startzeit merken, am Ende Differenz berechnen”.

start="$(date +%s)"

# ... Arbeit ...

end="$(date +%s)"
echo "Dauer: $(( end - start ))s"

Für viele Skripte reicht Sekundenauflösung völlig aus.

Millisekunden und Nanosekunden unter Linux

GNU date (typisch auf Linux) kann oft auch feinere Auflösung liefern:

date +%s%3N   # Millisekunden
date +%s%N    # Nanosekunden

Warnhinweis: Das ist nicht überall verfügbar, weil es von GNU coreutils abhängt. Auf macOS ist date BSD-basiert und unterstützt %N in der Regel nicht.

macOS: Warum %N meistens nicht funktioniert

Auch auf macOS funktioniert der Sekunden-Timestamp:

date +%s

Wenn du Millisekunden brauchst, musst du auf macOS anders arbeiten oder GNU coreutils installieren. Ein pragmatischer Weg ist, die Aufgabe bewusst auf Sekunden zu beschränken, wenn du Portabilität willst.

Portables Fallback-Muster

Wenn du Skripte für mehrere Systeme schreibst, ist es sinnvoll, den einfachsten gemeinsamen Nenner zu nehmen.

now_epoch() {
  date +%s
}

echo "$(now_epoch)"

Wenn du unbedingt Millisekunden willst, kannst du feature-detecten und sonst degradieren:

epoch_ms() {
  if date +%s%3N >/dev/null 2>&1; then
    date +%s%3N
  else
    echo "$(( $(date +%s) * 1000 ))"
  fi
}

echo "$(epoch_ms)"

Das zweite Ergebnis ist dann auf Systemen ohne %3N eine grobe Annäherung in 1000er-Schritten.

Kurzfazit

Auf Linux ist date +%s der Standard, um den aktuellen Unix-Timestamp in Sekunden zu bekommen. Für Timing und Logs ist das in Bash meist der beste Default. Feinere Auflösung wie Millisekunden klappt oft mit GNU date, ist aber nicht überall portabel, deshalb nur bewusst einsetzen oder mit Fallback lösen.

🤫 Pssst: Du möchtest lernen, wie Bash funktioniert? Dann schau dir doch mein Bash-Tutorial für Anfänger an.

Interesse an einer Zusammenarbeit?


Ob konkrete Anfrage, lose Idee oder erster Austausch: Schreib mir, wenn du denkst, dass wir gut zusammenpassen könnten.



ein iPhone welches einen Anruf von Oliver Jessner zeigt.