2009-10-05 1 views
4

Мне нужно задать себе напоминание о посещении еженедельной встречи. Проблема с стандартным инструментом напоминания моей компании заключается в том, что, когда она работает под вином, она появляется на экранном виртуальном рабочем столе.Можете ли вы написать простое еженедельное напоминание с помощью скрипта bash/sh?

Я подумал, что было бы интересно посмотреть, могу ли я придумать команду «at», которая выведет окно напоминания, а затем повторно представит себя на следующей неделе.

Я знаю, что могу использовать cron или какое-то приложение для будильника, но это вызвало мое любопытство.

версии однократный будет:

echo "DISPLAY=$DISPLAY zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info" | at 0955 NEXT Monday 

Может кто-то придумать подходящую quine -кака команды, каждый раз, когда он запускается, он будет дополнительно повторно представить ту же команду на следующей неделе в повторяющийся цикл?

+0

@ Veedrac, есть * много * точек в тэгах, таких как «fun» - фильтры исключения. Если такие вещи помечены, люди, которые не хотят видеть вещи без практической ценности, могут, ну, не видеть их. –

+0

@CharlesDuffy Есть ли сообщение об этом? У меня создалось впечатление, что метатеги нежелательны. Eg.http: //blog.stackoverflow.com/2010/08/the-death-of-meta-tags/ – Veedrac

+0

Может быть; Мне нужно будет посмотреть. Говоря как кто-то, у кого есть довольно много метатегов в списке «игнорирования», я разочарован их смертью. –

ответ

1

Дайте этому попытку:

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 будет установлен, когда команда введена и может быть неправильной в то время, когда выполняется задание, но это то же поведение, что и команда в вашем вопросе.

+0

Это не делает: то, что он выполняет в следующий понедельник, является другой командой «at», чтобы запустить zenity в следующий понедельник. –

+0

Ой, я забыл вытащить лишнее 'эхо'. Попробуйте отредактированную версию. –

0

Попробуйте с файлом:

$ 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 

Таким образом, каждый раз, когда задание выполняется, еще один запланирован на следующий понедельник.

+0

Вот что я сделал в конце. Но я все равно хотел бы попробовать и получить решение, не используя такой файл. –

0

Я не я, вероятно, обман, но вы можете воспользоваться тем, что at сохраняет значение большинства переменных окружения (не $DISPLAY хотя ни $DISP кажется):

export FOO=$DISPLAY CMD='DISPLAY=$FOO xmessage "hi there"; 
echo "$CMD" | at now + 1 minutes' 
eval "$CMD" 

Я xmessage и одна минута, потому что у меня были они, , но, конечно же, вы можете адаптировать его под свои нужды.

+0

Это работает дважды. Но он не переплачивает сам. –

+0

Я думаю, что ваш 'at' должен каким-то образом отличаться от моего. Добавляет ли 'export FOO CMD;' перед 'echo' исправляет проблему? –

0

Извините, что испортил веселье, но ... не будет ли какая-то работа cron иметь больше смысла?

+0

-1: Вы видели «забавный» тег? Я знаю, как использовать работу cron, поэтому мне не нужно спрашивать об этом. То, что я не знаю, - это как сделать сценарий, похожий на quine-like. Отсюда этот вопрос. –

 Смежные вопросы

  • Нет связанных вопросов^_^