Drucken der Epochenzeit mit dem Datumsdienstprogramm


8

Durch das Lesen einer anderen Antwort weiß ich, dass der folgende Befehl zum Drucken der aktuellen Epochenzeit verwendet werden kann :

$ date +'%s'
1491150773

Beim Lesen der date(1)Manpage (Hinweis: Ich verwende tatsächlich macOS) habe ich ein Beispiel gefunden, das die Verwendung veranschaulicht:

 Finally the command:

 date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

 can be used to parse the output from date and express it in Epoch time.

Aus dem Lesen des Beispiels geht hervor, dass +die einzelnen Anführungszeichen verwendet werden können:

$ date '+%s'
1491150781

Obwohl ich die aktuelle Epochenzeit erfolgreich drucken kann, verstehe ich nicht, warum es funktioniert, und habe einige Fragen:

  • Warum wird date +'%s'die aktuelle Epochenzeit gedruckt? Gibt es ein allgemeineres Beispiel, das das Muster für die Verwendung in diesem Beispiel veranschaulicht?
  • Warum kann ich +die Anführungszeichen einfügen?

Ich habe versucht, den Befehl in EXPLAINShell zu setzen , aber es ist nicht sehr hilfreich:

Geben Sie hier die Bildbeschreibung ein


Verwenden Sie FreeBSD, wie der Link zur Manpage impliziert?
— Roaima

Ja, ich bin auf macOS, das bsd Dienstprogramme verwendet
— mbigras

OK. Ich habe hinzugefügt, dass als Tag für Menschen dies leichter zu identifizieren ist. Andernfalls erhalten Sie wahrscheinlich einige sehr Linux- und GNU-zentrierte Antworten. Vielleicht möchten Sie es sogar beiläufig in Ihrer Frage erwähnen.
— Roaima

Auf dem Handy, werde bearbeiten, wenn ich nach Hause
— komme

1
@roaima Bitte setzen Sie kein OS-Tag auf eine Frage, die nicht OS-spezifisch ist. Da die Frage weitgehend betriebssystemunabhängig ist, ist eine Erwähnung des Betriebssystems im Körper in Ordnung, und es sollte kein Betriebssystem-Tag verwendet werden.
— Gilles 'SO - hör auf böse zu sein'

Antworten:


15

BSD-Datum und GNU-Datum haben beide die Form:

date +FORMAT

with FORMATist die Zeichenfolge für das Ausgabeformat zur Anzeige des Datums. Was Sie also füttern würden, dateist nur eine Zeichenfolge, beginnend mit +.

Bevor Sie die Zeichenfolge an übergeben date, wird die Zeichenfolge von Ihrer Shell interpretiert. Also +%soder +'%s'oder "+%s"sind beide gleichwertig, interpretiert von allen POSIX-Shells wie sie sind.

Der einzige Vorteil +'%s'besteht darin, dass Sie schnell erkennen können, welches Zeichenfolgenformat verwendet wurde, oder es kopieren und analysieren können, ohne sich um das Format kümmern zu müssen +.

Auch +'FORMAT'Wille hilft Ihnen , wenn Sie spezielle Formate verwenden, die als Shell Erweiterung interpretiert werden kann. Beispiel mit zsh:

date +'(%s)'

würde funktionieren während:

date +(%s)

würde nicht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.