1409 Stimmen

Datum im Format JJJJ-MM-TT in Shell-Skript

Ich habe es mit $(date) in meinem Bash-Shell-Skript, aber ich möchte das Datum in YYYY-MM-DD Format.
Wie kann ich das bekommen?

12 Stimmen

Die Kommentare müssen mindestens 15 Wörter lang sein. Datum -I

18 Stimmen

In der Tat date -I ist alles, was Sie brauchen. Ich habe Jahre gebraucht, um darauf zu stoßen.

5 Stimmen

date -I funktioniert nur unter Linux mit GNU-Tools, nicht unter macOS / BSD; die Installation von Gebräu --> brew install coreutils macht gdate -I verfügbar

2188voto

Philip Fourie Punkte 102961

In der Bash (>=4.2) ist es vorzuziehen, den eingebauten Datumsformatierer von printf (Teil der Bash) zu verwenden, anstatt den externen date (normalerweise GNU-Datum).

Als solche:

# put current date as yyyy-mm-dd in $date
# -1 -> explicit current date, bash >=4.3 defaults to current time if not provided
# -2 -> start time for shell
printf -v date '%(%Y-%m-%d)T\n' -1 

# put current date as yyyy-mm-dd HH:MM:SS in $date
printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1 

# to print directly remove -v flag, as such:
printf '%(%Y-%m-%d)T\n' -1
# -> current date printed to terminal

In bash (<4.2):

# put current date as yyyy-mm-dd in $date
date=$(date '+%Y-%m-%d')

# put current date as yyyy-mm-dd HH:MM:SS in $date
date=$(date '+%Y-%m-%d %H:%M:%S')

# print current date directly
echo $(date '+%Y-%m-%d')

Andere verfügbare Datumsformate können über das Menü date man pages (für externe, nicht-bash-spezifische Befehle):

man date

479voto

kwatford Punkte 21718

Versuchen Sie es: $(date +%F)

En %F Option ist ein Alias für %Y-%m-%d

139voto

Sie können so vorgehen:

$ date +'%Y-%m-%d'

69voto

ahmettolga Punkte 696
$(date +%F)

Ausgabe

2018-06-20

Oder wenn Sie auch Zeit haben wollen:

$(date +%F_%H-%M-%S)

kann verwendet werden, um Doppelpunkte (:) zwischen

Ausgabe

2018-06-20_09-55-58

55voto

Medievalist Punkte 693

Sie suchen nach ISO 8601 Standard-Datumsformat, wenn Sie also GNU date (oder einen anderen Datumsbefehl, der moderner als 1988 ist) haben, tun Sie es einfach: $(date -I)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X