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