Как говорит «Камень в лесу» — сегодня ничего не произошло.

Иногда хочется побыть таким камнем, но не сегодня. Сегодня у нас «Необычные способы узнать дату и время».

Ты скажешь: есть же команда date. Верно, есть и такая. Но мы же с тобой не пальцем деланные, нам надо посложнее, погеморройнее.

Есть несколько способов узнать из консоли текущую дату и время. К примеру, ты можешь сделать это через утилиту stat.

stat -c'%z' /proc/self/stat

Временные метки [atime, mtime, ctime] будут равны времени создания [inode] для этого «файла». В данном случае это время обращения к данному файлу. Вообще proc сама по себе интересная штука. Почти для каждого файла есть свой набор функций для стандартных операций [read, write, open и т. п.].

Нихуя Ничего не понял? Забей, просто знай, что команда stat выведет тебе текущую дату и время.

2023-07-18 11:42:22.592640126 +0000

А ещё получить желаемое можно с помощью утилиты «ps»

ps --no-headers -o lstart -C ps

Время и дата равны времени запуска процесса ps.

Tue Jul 18 11:44:07 2023

Следом идёт команда «printf»

printf '%(%c)T\n'

Это встроенная команда в оболочку Bash. Выводится дата и время в соответствии с установленной локалью.

Tue Jul 18 11:44:53 2023

А ещё можно так:

( T='\t' ; echo ${T@P} )
( T='\T' ; echo ${T@P} )
( T='\@' ; echo ${T@P} )
( T='\A' ; echo ${T@P} )
( T='\D{%X%t%x}'; echo ${T@P} )

${parameter@P} начиная с версии bash 4.4.

16:16:22
04:16:26
04:16 PM
16:16
16:16:39 07/18/23

Ну и фаталити на закусочку, выведем unixtime тремя разными способами. Эквивалентно команде: date '+%s'.

printf '%s\n' "$EPOCHREALTIME"
printf '%s\n' "$EPOCHSECONDS"
printf '%(%s)T\n'
1689686418.954954
1689686418
1689686418

Вообще редко такое может пригодиться, но пару раз на собесах какие-то упоротые техдиры задавали подобный вопрос. Не знаю, откуда они такое берут, но факт остаётся фактом.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Разнообразь свои скрипты такими замысловатыми конструкциями, и ни один девопс (кроме тебя, естественно) нихрена не поймёт. Создашь басфактор и будешь самым незаменимым в коллективе.

Всем добра, котики!