Мы можем напечатать текущее время с помощью встроенной функции printf
, без необходимости вызывать внешнюю команду, такую как date
, например:
printf '%(%Y-%m-%d:%H:%M:%S)T %s\n' -1
# sample output: 2019-03-30:17:39:36,846
Как мы можем заставить printf печатать также миллисекунды или наносекунды? Использование %3N
или %N
в строке формата не работает:
printf '%(%Y-%m-%d:%H:%M:%S,%3N)T %s\n' -1 # outputs 2019-03-30:17:38:16,%3N
printf '%(%Y-%m-%d:%H:%M:%S,%N)T %s\n' -1 # outputs 2019-03-30:17:38:16,%N
Однако команда date работает нормально:
date +%Y-%m-%d:%H:%M:%S,%3N # gives 2019-03-30:17:39:36,846
date +%Y-%m-%d:%H:%M:%S,%N # gives 2019-03-30:17:39:36,160643077
Это на Red Hat Linux версии 7.3.