Как разобрать строку типа 2010202 на дату в bash скрипте?

Я обнаружил, что да, это возможно и может использоваться для простых функций завершения, но поскольку эта конкретная функция _man выполняет некоторую работу по синтаксическому анализу и проверке, она генерирует ошибку при вызове вне ожидаемого контекста.

Вот что я сделал, чтобы связать функцию завершения _man с комбинацией клавиш, чтобы ее можно было вызывать вручную.

Определите функцию-оболочку, которая устанавливает необходимые параметры.

_man_autonomous () {
  eval $_comp_setup
  _man "$@"
}

Зарегистрируйте новый виджет в строковом редакторе:

zle -C complete-man expand-or-complete _man_autonomous

привяжите виджет к Ctrl + T

bindkey '^T' complete-man

Существует пример этого метода с использованием _files в FAQ по zsh .

3
02.02.2017, 11:47
2 ответа

Используйте -d аргумент дату .

man date

  -d, --date = STRING 
отображать время, указанное в STRING, а не «сейчас» 
 
$ date -d 20170202
Thu Feb  2 00:00:00 CET 2017

Чтобы облегчить сравнение, вы можете использовать формат unixdate

$ date -d 20170203 +%s
1486076400
3
27.01.2020, 21:21

Другой вариант - использовать сенсорный . Это должно работать в большинстве систем, но вам нужно указать время как ччмм.ss . Обычно я использую 1200.00 .

touch -t 201702021200.00
0
27.01.2020, 21:21

Теги

Похожие вопросы