У меня есть следующий сценарий (на основе этого):
#!/bin/bash
runtime=$(zenity --title "Send notification repeatedly" --entry "Enter the period in minutes like this: nn minutes")
endtime=$(date -ud "$runtime" +%s)
while [[ $(date -u +%s) -le $endtime ]]
do
notify-send "Hello"
sleep 10s
done
man date
имеет это:
-d, --date=STRING display time described by STRING, not 'now'
но я не мог найти объяснение "СТРОКИ".
Вся следующая работа при вводе в zenity окно:
1 minute
1 minutes
и1 min
Но 1 m
не делает. Где то, что приемлемо как описанная "СТРОКА"? Я ничего не мог найти в man date
.
Другой вещью является цель +%s
. Что это делает?
Вы находите его немного ниже в man date
:
СТРОКА ДАТЫ
--date=STRING
главным образом свободный формат человекочитаемая строка даты такой как"Sun, 29 Feb 2004 16:21:42 -0800"
или"2004-02-29 16:21:42"
или даже"next Thursday"
.
Строка даты может содержать объекты, указывающие на календарную дату, время суток, часовой пояс, день недели, относительного времени, относительной даты и чисел. Пустая строка указывает на начало дня. Формат строки даты более сложен, чем легко документируется здесь, но полностью описан в информационной документации.
Узнать, что точно позволяется и что не, можно прочитать информационную документацию.
Так, выполненный info date
и переключитесь на "Форматы ввода даты".
Относительно +%s
см. Резюме:
date [OPTION]... [+FORMAT]
причем ФОРМАТ является длинным количеством возможных последовательностей, таким образом, здесь просто тот Вам нужно:
%s seconds since 1970-01-01 00:00:00 UTC
+
просто часть синтаксиса.
Кроме того, некоторое хорошее чтение: Как я могу получить справку на терминальных командах?
Все сказано в странице справочника:
СТРОКА ДАТЫ
--date=STRING
главным образом свободный формат человекочитаемая строка даты, такая как "Sun, 29 февраля 2004 16:21:42 - 0800" или "29.02.2004 16:21:42" или даже "следующий четверг". Строка даты может содержать объекты, указывающие на календарную дату, время суток, часовой пояс, день недели, относительного времени, относительной даты и чисел. Пустая строка указывает на начало дня. Формат строки даты более сложен, чем легко документируется здесь, но полностью описан в информационной документации.
Вот данные примеры:
ПРИМЕРЫ
Преобразуйте секунды с эпохи (01.01.1970 UTC) на дату
$ date --date='@2147483647'
Покажите время на западном побережье США (используйте tzselect (1) для нахождения TZ),
$ TZ='America/Los_Angeles' date
Покажите местное время в течение 9:00 в следующую пятницу на западном побережье США
$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Вы могли также найти ту страницу справочника в Интернете
От info '(coreutils) date invocation':
Программа принимает следующие опции. Также посмотрите *опции Common примечания::.
‘-d DATESTR’ ‘-date=DATESTR’ Отображают дату и время, указанную в DATESTR вместо текущей даты и время. DATESTR может быть почти в любом распространенном формате. Это может содержать имена месяца, часовые пояса, и 'пополудни', 'вчера', и т.д. Например, ‘-дата = "27.02.2004 14:19:13.489392193 +0530"’ указывает момент времени, которое составляет 489 392 193 наносекунды после 27 февраля 2004 в 14:19:13 в часовом поясе, который составляет 5 часов и 30 минут к востоку от UTC.Примечание: вход в настоящее время должен быть в локали независимым форматом. Например, LC_TIME=C ниже необходим для печати назад корректной даты во многих локалях: дата-d "$ (дата LC_TIME=C)"
+
:
Если дали аргумент, который запускается с ‘+’, 'дата', печатает текущую дату и время (или дата и время, указанная ‘-дата’ опция, посмотрите ниже) в формате, определенном тем аргументом, который подобен той из функции ‘strftime’. За исключением спецификаторов преобразования, которые запускаются с ‘%’, символы в строке формата печатаются неизменные. Спецификаторы преобразования описаны ниже.
%s
:
спецификаторы преобразования 'даты' связаны с временами...
‘%s’ секунды с эпохи, т.е. с тех пор 01.01.1970 0:00:00 UTC. Секунды прыжка не считаются, если прыжок вторая поддержка не доступен. * %s-примеры примечания:: для примеров. Это - расширение GNU.