KSH - вычтите 5 минут от текущего времени

Справочную страницу для входа в систему (1) на показах linux как минимум два почтовых адреса для авторов и другие важные детали. При условии, что логин является частью ядра, вам следует попробовать некоторые из списков рассылки ядра util-linux .

3
03.09.2018, 09:06
2 ответа

Вы можете использоватьperl:

echo $(( $(printf "%(%s)T") - 5 * 60 )) | perl -lne 'print scalar localtime $_'

Или в чистом перле:

perl -le 'print scalar localtime(time()-5*60)'

Для форматирования используйтеstrftime():

perl -MPOSIX=strftime -le 'print strftime("%d %h %Y %H:%M:%S", localtime(time()-5*60))'
2
27.01.2020, 21:10

bashна самом деле скопировал формат %(...)Tиз ksh93, но только в небольшом подмножестве.

Это намного мощнее в ksh93.

$ date; printf '%(%c)T\n' 'exactly five minutes ago'
Mon  3 Sep 08:08:32 BST 2018
Mon Sep  3 08:03:32 2018

bashподдерживает только время эпохи Unix (или -1для сейчас , хотя в последних версиях вы также можете получить сейчас с отсутствующим аргументом ), в то время как ksh93 поддерживает сложные относительное (включая английский язык, как указано выше, crontab, at, ISO 8601 :2004 продолжительность )или спецификации абсолютного времени (см. тестовые данные в источнике для некоторых примеров ).

В ksh93, если вы хотите передать время эпохи, вы используете префикс #:

$ printf '%(%c)T\n' '#0'
Thu Jan  1 00:00:00 1970

(хотя здесь, у меня бывает указано неправильное время в британском часовом поясе, где эпоха 0 приходится на 1:00)

7
27.01.2020, 21:10

Теги

Похожие вопросы