Today's Question:  What's your opinion about Alibaba mooncake incident?        GIVE A SHOUT

Technical Article => Software =>  Software design

Command line todo list manager-- Taskwarrior

  Sirius      2013-08-12 23:44:20      4,780    0    0

What is Taskwarrior?

Taskwarrior is a task management tool in a terminal environment, it has powerful functions. Here is a short description about it from its official website:

It maintains a task list, allowing you to add/remove, and otherwise manipulate your tasks. Task has a rich set of subcommands that allow you to do sophisticated things. You'll find it has customizable reports, charts, GTD features, device synching, documentation, extensions, themes, holiday files and much more.



sudo apt-get install task

Mac with brew

brew install task


Add a new task

It's easy to add a new task, use task add and following by task description.

$ task add Buy a vps!
$ task list

ID Project Pri Due Active Age Description
 1                         3s Buy a vps!

1 task

Delete a task

You need to run task delete to delete a task. Here can be treated as the task ID, we will cover the use of in detail later.

$ task
[task next]

ID Project Pri Due A Age Urgency Description
 1                   29s       0 Buy a vps!

1 task
$ task 1 delete
Permanently delete task 1 'Buy a vps!'? (yes/no) yes
Deleting task 1 'Buy a vps!'.
Deleted 1 task.

Mark task as completed

Run task done to mark the task as completed.

$ task add Buy a vps!
Created task 2.
$ task
[task next]

ID Project Pri Due A Age Urgency Description
 1                    1s       0 Buy a vps!

1 task
$ task 1 done
Completed task 1 'Buy a vps!'.
Completed 1 task.

Add task to a project

You can create a project for each task and it's easy to create and modify project of a task.

Can specify project of a task when adding the task

$ task add project:company Fix a bug
$ task add proj:company Fix a bug 
$ task add pro:company Fix a bug 
$ task add project:company.server Fix a bug 

Use task modify proj:xx to add or modify project of an existing task

$ task 2 modify proj:company

Check tasks in a specified directory

$ task proj:company list

Delete project of a task

$ task 1 modify proj:

Advanced usage


Taskwarrior can specify priority of a task. The different priorities are : L(low),M(Middle) and H(High).

It's not easy to understand priority if you understand project above

$ task add project:Home priority:H Find the adjustable wrench
$ task 1 modify priority:M
$ task 1 modify pri:L 
$ task 1 modify pri: 

Priority filter

$ task pri.below:H # Taks with high priority
$ task pri.over:L 
$ task pri.not:M 


As a task manager, it has to provide due. Taskwarrior also provides this command

Add due for a task

$ task add This is an urgent task due:tomorrow # Set the due to tomorrow
$ task 1 modify due:tomorrow #  Set the due to tomorrow
$ task 1 modify due:2013-03-12 # Set the due to a specified date
$ task 1 modify due:eom # Set the due date as (end-of-mouth)
$ task 1 modify due:eoy # Set the due date as the (end-of-year)
$ task 1 modify due: # Delete due date 

Due filter

$ task due:tomorrow  //Tasks overdue tomorrow
$ task due:eom 
$ task due.before:today 
$ task overdue # Out dated tasks


$ task add Create a blog.
$ task 1 annotate I need a linux server
$ task 1 annotate I gotta learn php
$ task 1
[task next 1]

ID Project Pri Due A Age Urgency Description
 1                   15s     0.9 Create a blog.
                                 8/8/2013 I need a linux server
                                 8/8/2013 I gotta learn php

1 task


$ task add Create a blog.
$ task 1 modify +blog # Add tag to a task
$ task +blog list # Tag filter
$ task 1 modify -blog # Delete a tag of a task


Sometimes you want to append some description to a task and don't want to repeat the existing description again. You can use prepend and append.

$ task add music
$ task 1 prepend Download some
$ task 1 append into my iPod
$ task 1
[task next 1]

ID Project Pri Due A Age Urgency Description
 1                   13s       0 Download some music into my iPod

1 task


$ task 1 modify due:eom recur:monthly
$ task 2 modify due:eom recur:yearly
$ task 3 modify due:eom recur:monthly until:eoy
$ task recurring


$ task cal



If you want to know more about this powerful tool. You can check its manual.

$ man task
$ man task-tutorial

Source :



Share on Facebook  Share on Twitter  Share on Google+  Share on Weibo  Share on Reddit  Share on Digg  Share on Tumblr    Delicious



No comment for this article.


No functional testing, only unit testing

By sonic0002