В tcsh на OpenBSD мне нужно напечатать дату двухнедельной давности.
Например. если сегодня 2013-03-02
, мне нужно распечатать 2013-02-16
.
В tcsh на OpenBSD мне нужно напечатать дату двухнедельной давности.
Например. если сегодня 2013-03-02
, мне нужно распечатать 2013-02-16
.
Похоже, что tcsh
не позволяет выполнять вложенные команды, поэтому похоже, что нужно использовать ksh
.
date +%Y-%m-%d ; \
sh -c 'date -r $(expr $(date +%s) - $(expr 60 \* 60 \* 24 \* 14)) +%Y-%m-%d'
2013-03-02
2013-02-16
Мы получаем дату в количестве секунд, прошедших с начала эпохи в формате UTC, и вычисляем две недели в секундах с помощью expr
, вычитаем и передаем эти секунды обратно в date
с аргументом -r
.
Не уверен, что есть более короткое решение, кроме использования 1209600
вместо $(expr 60 \* 60 \* 24 \* 14)
:
sh -c 'date -r $(expr $(date +%s) - 1209600) +%Y-%m-%d'
Это должно работать (это работает на дату GNU. Я не очень хорошо знаком с OpenBSD. Поэтому не уверен, что это работает для вас)
date -d "now - 14 days" +%Y-%m-%d