Можете ли вы написать простое еженедельное напоминание, используя сценарий bash/sh quine?
Мне нужно установить себе напоминание для участия в еженедельном собрании. Проблема со стандартным инструментом напоминания моей компании в том, что когда он работает под Wine, он появляется на виртуальном рабочем столе за пределами экрана.
Я подумал, что было бы интересно посмотреть, смогу ли я придумать команду "at", которая выскакивает в окне напоминания, а затем повторно отправляется на следующую неделю.
Я знаю, что могу использовать cron или какое-нибудь приложение с будильником, но это пробудило мое любопытство.
Одноразовая версия будет:
echo "DISPLAY=$DISPLAY zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info" | at 0955 NEXT Monday
Может ли кто-нибудь придумать подходящую команду, похожую на quine, которая при каждом запуске будет дополнительно повторять эту же команду на следующей неделе в повторяющемся цикле?
4 ответа
Попробуйте это:
export reminder='"DISPLAY=$DISPLAY zenity --title='\''Weekly Meeting'\'' --text='\''Time for the weekly meeting'\'' --info" | at 0955 NEXT Monday'; echo $reminder | at 0955 NEXT Monday
Изменить оба at
приказывает сказать at now + 1 minute
для тестирования. $DISPLAY
будет установлен при вводе команды и может быть неправильным во время выполнения задания, но это то же поведение, что и команда в вашем вопросе.
Попробуйте с файлом:
$ cat /tmp/quine_file
DISPLAY=:0.0 zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info;
at '0955 NEXT monday' </tmp/quine_file;
$ at '0955 NEXT monday' </tmp/quine_file
Таким образом, каждый раз, когда задание запускается, на следующий понедельник назначается еще одно.
Я, вероятно, обманываю, но вы можете воспользоваться тем, чтоat
сохраняет значение большинства переменных среды (не $DISPLAY
хотя, ни $DISP
похоже на то):
export FOO=$DISPLAY CMD='DISPLAY=$FOO xmessage "hi there";
echo "$CMD" | at now + 1 minutes'
eval "$CMD"
я использовал xmessage
и одну минуту, потому что они у меня были, но, конечно, вы можете адаптировать их к вашим потребностям.
Извините, что испортил веселье, но... разве какая-то работа cron не имеет больше смысла?