Как говорит «Камень в лесу» — сегодня ничего не произошло.
Иногда хочется побыть таким камнем, но не сегодня. Сегодня у нас «Необычные способы узнать дату и время».
Ты скажешь: есть же команда 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
Вообще редко такое может пригодиться, но пару раз на собесах какие-то упоротые техдиры задавали подобный вопрос. Не знаю, откуда они такое берут, но факт остаётся фактом.
Всем добра, котики!








Комментарии