Как @ TomMcKenzie говорит в комментарии к другому ответу: date -r 123456789
, возможно, является более распространенным (т. более широко внедренное) простое решение для времени, заданного в считанные секунды после Unix Epoch, но, к сожалению, универсального гарантированного портативного решения нет.
Опция -d
на многих типах систем означает нечто совершенно иное, чем GNU Date's --date
расширение. К сожалению, GNU Date не интерпретирует -r
так же, как и другие реализации. К сожалению, вы должны знать, какая версия date
вы используете, а многие старые команды Unix date
не поддерживают ни одну из опций.
Еще хуже, POSIX date
признает ни -d
, ни -r
и не обеспечивает стандартный способ в любой команде вообще (что я знаю) для форматирования времени Unix из командной строки (с POSIX Awk также не strftime()
). (Вы не можете использовать touch -t
и ls
, потому что прежние не принимает время, отпущенное в секундах с Unix Epoch.)
Примечания хотя Единый Истинный Awk доступен прямо из Керниган делает теперь функцию strftime()
встроенными а также функцию systime()
, чтобы вернуть текущее время в секундах от Unix Epoch), поэтому, возможно, решение Awk является самым портативным.
Какой тип оболочки вы используете? Bash? Zsh? Даш? –
Баш - забыл упомянуть! – chimeracoder
Возможный дубликат [Как преобразовать временные метки в даты в bash?] (Http://stackoverflow.com/questions/2371248/how-to-convert-timestamps-to-dates-in-bash) – user