Как говорит @TomMcKenzie в комментарии к другому ответу, date -r 123456789
, возможно, является более распространенным (то есть более широко реализованным) простым решением для времени, которое дается в секундах с начала эпохи Unix, но, к сожалению, универсального гарантированного портативного решения не существует. 1002 *
Опция -d
во многих типах систем означает нечто совершенно иное, чем расширение --date
в GNU Date. К сожалению, GNU Date не интерпретирует -r
так же, как эти другие реализации. К сожалению, вам нужно знать, какую версию date
вы используете, и многие старые команды Unix date
не поддерживают ни одну из этих опций.
Еще хуже, POSIX date
не распознает ни -d
, ни -r
и не предоставляет никакого стандартного способа в какой-либо команде (насколько я знаю) для форматирования времени Unix из командной строки (поскольку в POSIX Awk также отсутствует strftime()
). (Вы не можете использовать touch -t
и ls
, поскольку первый не принимает время, указанное в секундах с начала эпохи Unix.)
Обратите внимание, что One One Awk, доступный напрямую от Брайана Кернигана, теперь имеет встроенную функцию strftime()
, а также функцию systime()
для возврата текущего времени в секундах с начала эпохи Unix), так что, возможно, Awk Решение является наиболее портативным.