Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Работа в консоли Linux

Управление личными заданиями с помощью Todo.txt

Автор: Александр Тарасов aka oioki
Дата: 26 августа 2007

Есть множество программ для управления личными заданиями. Некоторые из этих программ обладают функциями календаря, планировщика, напоминателя и др. Но многим людям не нужна вся эта функциональность. Если вы один из них, а также комфортно себя чувствуете в командной строке, тогда вам наверняка стоит обратить внимание на консольную утилиту управления своими заданиями под названием, которое больше напоминает имя файла - Todo.txt, автор программы - Gina Trapani. В общем, программа оправдывает свое название, так как всю информацию о заданиях она хранит в одноименном файле, а сам скрипт todo.sh представляет собой оболочку для его просмотра и изменения.

Установка

Установка Todo.txt проста. Загрузив с сайта разработчика архив todo.sh.zip, распакуйте два файла. Сам bash-скрипт todo.sh нужно поместить в один из каталогов переменной окружения PATH, к примеру, в /usr/bin. Советую также переименовать todo.sh в более лаконичное todo, которое будет использоваться в примерах ниже. Второй файл .todo представляет собой конфигурационный файл, в котором нужно изменить переменную TODO_DIR, указав путь хранения вашего todo.txt, к примеру так:

TODO_DIR="/home/oioki/todo"

Мне показалось, что будет удобно, если список заданий будет появляться при каждом новом открытии консоли. Если вы хотите сделать также, допишите в конце файла /etc/profile строку

todo ls

Итак, начнем

Самое простое, что можно сделать с помощью Todo.txt - это добавить задание (a - от слова add):

# todo a
Add: Закончить ремонт в узле связи

Добавлять задания можно и в одну строку. Однако если в вашем задании есть символ апострофа, то задание нужно заключать в кавычки:

# todo a "Посмотреть Surf's Up"

Интересной функцией Todo.txt является возможность присваивания приоритетов заданиям. Задания с более высоким приоритетом будут отображаться выше других. Приоритет обозначается латинской буквой от A до Z, самый высокий приоритет у заданий с буквой A. Назначим наивысший приоритет ремонту (он под номером 1):

# todo p 1 A

Список текущих и выполненных заданий можно просмотреть с помощью команды

# todo ls
01 (A) Закончить ремонт в узле связи
02 Посмотреть Surf's Up
--
TODO: 2 tasks in /home/oioki/todo/todo.txt.

Допустим, мы закончили ремонт и хотим отметить это в нашем списке заданий:

# todo do 1
(A) Закончить ремонт в узле связи

Остальные действия производятся аналогичным образом. Я лишь перечислю их: дописывание задания справа (app) и слева (prep), удаление (rm), очистка списка от выполненных заданий (archive), поиск по ключевому слову (ls), поиск по текущим и выполненным (lsa), поиск по приоритету (lsp), замена задания (replace), очистка от дубликатов (remdup), занесение текущего количества заданий в отчет (report). Если вы все же испытываете затруднения, вам в помощь краткая справка:

# todo --help

Эффективное составление заданий

Дэвид Аллен, автор книги Getting Things Done, предлагает разделять задания по категориям. К примеру если для выполнения задания требуется телефон, то в задании должно быть упоминание об этом. Следуя этому принципу, будет логично в конце каждого подобного задания дописывать @phone. Теперь задания, связанные с телефоном, можно будет легко выделять с помощью команды

# todo ls @phone

Другие примеры категорий: @online, @computer, @office, @home. Вы наверняка можете придумать кучу других категорий для своих задач.

Другим способом эффективного составления заданий является организация напоминания о проектах. Удобно иметь один список для каждого большого проекта. Чтобы отметить какое-то задание как принадлежащее проекту, добавляйте в конце текста задания p:проект, например

# todo a "Переписать библиотеку спецфункций на C++ p:wavelet"

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

Расширения

Программа представляет собой Bash-скрипт, модифицирование которого не представляет сложностей для умелого пользователя. Естественно, что появились несколько расширений Todo.txt. Расскажу о двух наиболее интересных.

Календарь Tickler

Это расширение, написанное Tannie, позволяет разделить задания по дням и месяцам. Перед использованием расширения нужно дописать строку в конфигурационный файл Todo.txt примерно следующего содержания:

TICKLER_DIR="/home/oioki/todo/tickler"

Расширение состоит из трех файлов. ticklerfolders.sh нужно запустить один раз, скрипт создаст структуру каталогов для календаря. Затем нужно наложить патч todotickle.diff с помощью команды

# patch /usr/bin/todo < todotickle.diff

Наконец, нужно сделать так, чтобы скрипт tickler.sh (поместим его также в /usr/bin) запускался каждый день, для обновления списков заданий из календаря. Первое, что приходит в голову - использовать планировщик cron. Строка cron для ежедневного обновления заданий в 9 часов утра выглядит так:

* 9 * * * /usr/bin/tickler.sh

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

# todo tickle 3 d30

Bird's Eye - обзор заданий

birdseye.py - скрипт на языке Python, который может показать вам сводную статистику по выполненным и текущим проектам, а также категориям. Пример вывода скрипта:

# python birdseye.py ~/todo/todo.txt ~/todo/done.txt

TODO.TXT Bird's Eye View Report
==========================================

Projects with Open TODO's
------------------------------------------
*  31% [===       ] p:работа_по_дому (11 todo's)
*  72% [=======   ] p:сценарий (3 todo's)
*  71% [=======   ] p:сайт (2 todo's)
   12% [=         ] p:мировое_господство (7 todo's)
   28% [==        ] p:фотоархивы (5 todo's)
   75% [=======   ] p:вечеринка (2 todo's)
    0% [          ] p:реорг.офиса (1 todo's)

Contexts with Open TODO's
------------------------------------------
* @office (6 todo's)
* @online (5 todo's)
* @mac (3 todo's)
* @email (3 todo's)
* @pc (2 todo's)
  @shopping (1 todo's)
  @phone (1 todo's)

Completed Projects (No open TODO's)
------------------------------------------
  p:сад (0 todo's)
Проекты и категории, отмеченные звездочкой, содержат задания с повышенным приоритетом. Такие проекты идут первыми по списку, затем сортировка выполняется по количеству незавершенных заданий.
Перепечатка статьи разрешается при условии указания на первоисточник - http://rus-linux.net/lib.php?name=/MyLDP/consol/todotxt.html