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

mbigras
quelle
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.

cuonglm
quelle