Формат даты YYYY-MM-DD в shell-скрипте
Я пытался использовать $(date)
в своем скрипте на Bash, однако мне нужно, чтобы дата была в формате YYYY-MM-DD
. Как мне это сделать?
5 ответ(ов)
Попробуйте: $(date +%F)
Опция %F
является псевдонимом для %Y-%m-%d
.
Вы можете сделать что-то подобное:
$ date +'%Y-%m-%d'
Для получения текущей даты в формате YYYY-MM-DD
вы можете использовать следующую команду в терминале:
$(date +%F)
Результат выполнения этой команды будет выглядеть так:
2018-06-20
Если вам также нужно получить текущее время в формате HH-MM-SS
, вы можете использовать следующую команду. Обратите внимание, что здесь двоеточия (:) заменены на тире (-):
$(date +%F_%H-%M-%S)
Это поможет избежать проблем с символами в именах файлов. Вывод этой команды будет таким:
2018-06-20_09-55-58
Команда, которую вы привели, используется в Unix-подобных операционных системах для получения даты, которая была ровно час назад, в формате ГГГГ-ММ-ДД
. Ваша команда date -d '1 hour ago' '+%Y-%m-%d'
вернет дату в формате YYYY-MM-DD
.
Пример вывода для команды может быть следующим (но это зависит от текущей даты и времени):
2015-06-14
Чтобы запустить данную команду, просто откройте терминал и введите её. Убедитесь, что у вас установлена команда date
, которая поддерживает опцию -d
.
С недавних пор в Bash (версия ≥ 4.2) вы можете использовать встроенный printf
с модификатором формата %(strftime_format)T
:
$ printf '%(%Y-%m-%d)T\n' -1 # Получаем YYYY-MM-DD (-1 означает "текущие время")
2017-11-10
$ printf '%(%F)T\n' -1 # Синоним предыдущей команды
2017-11-10
$ printf -v date '%(%F)T' -1 # Сохраняем в переменную $date
printf
намного быстрее, чем date
, поскольку это встроенная команда Bash, в то время как date
является внешней командой.
Кроме того, printf -v date ...
работает быстрее, чем date=$(printf ...)
, потому что не требует создания подшелла.
Как выводить команды оболочки по мере их выполнения
Назначение значений по умолчанию для переменных оболочки одной командой в bash
Как указать приватный SSH-ключ для выполнения команды shell в Git?
Как сделать паузу в shell-скрипте на одну секунду перед продолжением?
Как использовать 'grep' для непрерывного потока?