Вы должны использовать реализацию GNU date
, где это 20200101101010
интерпретируется как 2020010110-10-10T00:00:00
местное время.
-d
— это нестандартная -опция date
, поддерживаемая только несколькими реализациями и теми, где она поддерживается, если вообще нужно вводить дату (, как в GNU, busybox или ast -открыть's date
; BSD date
использует -r
и -v
вместо ), это делается по-разному в разных реализациях.
ast-open
и busybox date
позволяют указать формат ввода (busybox с -D
, ast -open с -p
), хотя и не со смещением, насколько мне известно. Однако вы можете удалить 5 минут, преобразовав сначала в эпоху, удалить 300 секунд и преобразовать обратно в свой формат.
В июле 2019 года было предложение добавить что-то похожее на GNU date
, но оно еще не выпущено (по состоянию на 2020 год -01 -21 ).
В частности, с GNU date
вы можете сначала преобразовать ввод($aaa
)в формат, который он распознает, как в синтаксическом подходе @RakeshShewale ksh93
.
Другим вариантом является использование оболочки zsh
, которая имеет встроенную функцию анализа и форматирования временных меток -и позволяет избежать необходимости полагаться на не -переносимое поведениеdate
:
zmodload zsh/datetime || exit
format=%Y%m%d%H%M%S min=60
aaa=20200101101010
strftime -r -s bbb -- "$format" "$aaa" || exit
strftime -s bbb -- "$format" "$((bbb - 5 * min))"
print -r -- "$bbb"
Вы можете адаптировать $format
по мере необходимости для других форматов, но обратите внимание, что не все директивы формата, поддерживаемые strftime()
(, вызываются strftime
без отметок времени -r
до формата ). strptime()
(, вызванный strftime -r
для разбора временных меток ). Проверьте man 3 strftime
и man 3 strptime
в вашей системе.
Для адаптеров Wi-Fi часто требуется, чтобы операционная система загружала прошивку в адаптер, и некоторые дистрибутивы не включают эту прошивку в свои установочные образы по умолчанию, потому что это не свободное программное обеспечение (, т.е. , вкратце, он не поставляется с исходным кодом в форме, которую может изменить пользователь, с соответствующей лицензией ). Это означает, что рассматриваемые адаптеры Wi-Fi не могут быть легко использованы. Это создает много трудностей для пользователей, и, например, Debian печально известен в этом отношении (, что привело к многочисленным дискуссиям, например.эта недавняя длинная ветка).
Ethernet-адаптеры, с другой стороны, обычно не требуют такой загрузки встроенного ПО и поэтому могут использоваться как -. Есть несколько адаптеров Ethernet, для которых это не так, и их так же сложно использовать, как и адаптеры Wi-Fi.
Что касается аппаратного разнообразия, я подозреваю, что на стороне Ethernet столько же, сколько и на стороне Wi-Fi. Но адаптеры Ethernet, как правило, включают свои драйверы в ядро, в то время как некоторые адаптеры Wi-Fi полагаются на один из -из -древовидных драйверов, что еще больше усложняет ситуацию, :драйверы должны быть созданы для используемого ядра, а в безопасные загрузочные среды, подписанные поверх этого...
(Некоторые дистрибутивы делают исключения для бинарных прошивок; см., например, позицию Fedora по этому вопросу .)
Не существует простого и легкого ответа на вопрос, почему драйверы Ethernet более надежны в Linux, чем драйверы Wi-Fi -, но есть несколько причин.