Вы хотите [^[:alnum:]]
, нет [[:^alnum:]]
. [:alnum:]
упоминаемый класс символов POSIX. Скобки, окружающие скобки того класса символов, являются объемом, в котором Вы хотите быть.
Во-первых, crtime
- это хитрость в Linux. Тем не менее, запуск чего-то вроде
$ stat -c %z /proc/
2014-10-30 14:00:03.012000000 +0100
или
$ stat -c %Z /proc/
1414674003
, вероятно, именно то, что вам нужно. Файловая система /proc
определяется стандартом LFS и должна быть как для любой системы Linux, так и для большинства (всех?) UNIXen.
В качестве альтернативы, предполагая, что на самом деле вам не нужна точность в секундах, а только нужна корректная метка времени, вы можете использовать who
:
$ who -b
system boot 2014-10-30 14:00
Из man who
:
-b, --boot
время последней загрузки системы
Вы можете преобразовать это в секунды после эпохи, используя GNU дата
:
$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000
Другим решением является /proc/stat
btime
[1] :
$ cat /proc/stat | grep btime | awk '{print $2}'
Пример вывода:
1583547431
Это секунды -с метки времени эпохи -.
В macOS /proc
недоступен, а /dev
есть. Вот еще несколько вариантов:
$ who -b
reboot ~ Dec 17 18:45
$ stat -f %m /dev
1608227137
, где -f %m
показывает время последнего изменения в формате «strftime (3 )».
$ stat -F /dev
dr-xr-xr-x 3 root wheel 4606 Dec 17 18:45:37 2020 /dev/
Если инструменты GNU были установлены (через Homebrew ), они также доступны:
$ gwho -b
system boot 2020-12-17 18:45
$ gstat -c %Y /dev
1608227137
, где -c %Y
указывает на отображение «времени последней модификации данных в секундах с начала эпохи».
$ gstat -c %y /dev
2020-12-17 18:45:37.000000000 +0100
%y
человекочитаемый вместо этого.
Приведенные выше решения работают только на компьютерах с RTC. На Raspberry Pi и других встроенных системах без RTC эталонная временная метка системы будет установлена на 0 при создании структуры системного каталога. Поскольку здесь речь идет о Linux, прочтите информацию из /proc/uptime
.cat /proc/uptime | awk '{ print $1 }'