1task(1) User Manuals task(1)
2
3
4
6 task - A command line todo manager.
7
8
10 task <filter> <command> [ <mods> | <args> ]
11 task --version
12
13
15 Taskwarrior is a command line todo list manager. It maintains a list of
16 tasks that you want to do, allowing you to add/remove, and otherwise
17 manipulate them. Taskwarrior has a rich set of subcommands that allow
18 you to do various things with it.
19
20 At the core, Taskwarrior is a list processing program. You add text and
21 additional related parameters and redisplay the information in a nice
22 way. It turns into a todo list program when you add due dates and re‐
23 currence. It turns into an organized todo list program when you add
24 priorities, tags (one word descriptors), project groups, etc.
25
26
28 The <filter> consists of zero or more search criteria that select
29 tasks. For example, to list all pending tasks belonging to the 'Home'
30 project:
31
32 task project:Home list
33
34 You can specify multiple filter terms, each of which further restricts
35 the result:
36
37 task project:Home +weekend garden list
38
39 This example applies three filters: the 'Home' project, the 'weekend'
40 tag, and the description or annotations must contain the character se‐
41 quence 'garden'. In this example, 'garden' is translated internally
42 to:
43
44 description.contains:garden
45
46 as a convenient shortcut. The 'contains' here is an attribute modi‐
47 fier, which is used to exert more control over the filter than simply
48 absence or presence. See the section 'ATTRIBUTE MODIFIERS' below for a
49 complete list of modifiers.
50
51 Note that a filter may have zero terms, which means that all tasks ap‐
52 ply to the command. This can be dangerous, and this special case is
53 confirmed, and cannot be overridden. For example, this command:
54
55 task modify +work
56 This command has no filter, and will modify all tasks. Are you sure?
57 (yes/no)
58
59 will add the 'work' tag to all tasks, but only after confirmation.
60
61 More filter examples:
62
63 task <command> <mods>
64 task 28 <command> <mods>
65 task +weekend <command> <mods>
66 task +bills due.by:eom <command> <mods>
67 task project:Home due.before:today <command> <mods>
68 task ebeeab00-ccf8-464b-8b58-f7f2d606edfb <command> <mods>
69
70 By default filter elements are combined with an implicit 'and' opera‐
71 tor, but 'or' and 'xor' may also be used, provided parentheses are in‐
72 cluded:
73
74 task '( /[Cc]at|[Dd]og/ or /[0-9]+/ )' <command> <mods>
75
76 The parentheses isolate the logical term from any default command fil‐
77 ter or implicit report filter which would be combined with an implicit
78 'and'.
79
80 A filter may target specific tasks using ID or UUID numbers. To spec‐
81 ify multiple tasks use one of these forms (space-separated list of ID
82 numbers, UUID numbers or ID ranges):
83
84 task 1 2 3 delete
85 task 1-3 info
86 task 1 2-5 19 modify pri:H
87 task 4-7 ebeeab00-ccf8-464b-8b58-f7f2d606edfb info
88
89 Note that it may be necessary to properly escape special characters as
90 well as quotes in order to avoid their special meanings in the shell.
91 See also the section 'SPECIFYING DESCRIPTIONS' for more information.
92
93
95 The <mods> consist of zero or more changes to apply to the selected
96 tasks, such as:
97
98 task <filter> <command> project:Home
99 task <filter> <command> +weekend +garden due:tomorrow
100 task <filter> <command> Description/annotation text
101 task <filter> <command> /from/to/ <- replace first match
102 task <filter> <command> /from/to/g <- replace all matches
103
104
106 Taskwarrior supports different kinds of commands. There are read com‐
107 mands, write commands, miscellaneous commands and script helper com‐
108 mands. Read commands do not allow modification of tasks. Write com‐
109 mands can alter almost any aspect of a task. Script helper commands
110 are provided to help you write add-on scripts, for example, shell com‐
111 pletion (only minimal output is generated, as with verbose=nothing).
112 Those commands which are explicitly affected by the context are denoted
113 as such.
114
115
117 Reports are read subcommands. There are several reports currently pre‐
118 defined in Taskwarrior. The output and sort behavior of these reports
119 can be configured in the configuration file. See also the man page
120 taskrc(5). There are also other read subcommands that are not reports.
121
122
123 task --version
124 This is the only conventional command line argument that
125 Taskwarrior supports, and is intended for add-on scripts to ver‐
126 ify the version number of an installed Taskwarrior without in‐
127 voking the mechanisms that create default files.
128
129
130 task <filter>
131 With no command specified, the default command is run, and the
132 filter applied.
133
134
135 task <filter> active
136 Shows all tasks matching the filter that are started but not
137 completed.
138
139
140 task <filter> all
141 Shows all tasks matching the filter, including parents of recur‐
142 ring tasks.
143
144
145 task <filter> blocked
146 Shows all tasks matching the filter, that are currently blocked
147 by other tasks.
148
149
150 task <filter> blocking
151 Shows all tasks matching the filter, that block other tasks.
152
153
154 task <filter> burndown.daily
155 Shows a graphical burndown chart, by day. Is affected by the
156 context.
157
158
159 task <filter> burndown.weekly
160 Shows a graphical burndown chart, by week. Note that 'burndown'
161 is an alias to the 'burndown.weekly' report. Is affected by the
162 context.
163
164
165 task <filter> burndown.monthly
166 Shows a graphical burndown chart, by month. Is affected by the
167 context.
168
169
170 task calendar [due|<month> <year>|<year>] [y]
171 Shows a monthly calendar with due tasks marked. Shows one hori‐
172 zontal line of months. If the 'y' argument is provided, will
173 show at least one complete year. If a year is provided, such as
174 '2015', then that full year is shown. If both a month and a
175 year are specified ('6 2015') then the months displayed begin at
176 the specified month and year. If the 'due' argument is pro‐
177 vided, will show the starting month of the earliest due task.
178
179
180 task colors [<sample> | legend]
181 Displays all possible colors, a named sample, or a legend con‐
182 taining all currently defined colors.
183
184
185 task columns [<substring>]
186 Displays all supported columns and formatting styles. Useful
187 when creating custom reports. If a substring is provided, only
188 matching column names are shown.
189
190
191 task commands
192 Shows all the supported commands, with some details of each.
193
194
195 task <filter> completed
196 Shows all tasks matching the filter that are completed.
197
198
199 task <filter> count
200 Displays only a count of tasks matching the filter. Is affected
201 by the context.
202
203
204 task <filter> export
205 Exports all tasks in the JSON format. Redirect the output to a
206 file, if you wish to save it, or pipe it to another command or
207 script to convert it to another format. You'll find these exam‐
208 ple scripts online at <https://taskwarrior.org/tools/>:
209
210 export-csv.pl
211 export-sql.py
212 export-xml.py
213 export-yaml.pl
214 export-html.pl
215 export-tsv.pl
216 export-xml.rb
217 export-ical.pl
218 export-xml.pl
219 export-yad.pl
220
221
222 task <filter> ghistory.annual
223 Shows a graphical report of task status by year.
224
225
226 task <filter> ghistory.monthly
227 Shows a graphical report of task status by month. Note that
228 'ghistory' is an alias to 'ghistory.monthly'.
229
230
231 task <filter> ghistory.weekly
232 Shows a graphical report of task status by week.
233
234
235 task <filter> ghistory.daily
236 Shows a graphical report of task status by day.
237
238
239 task help
240 Shows the long usage text.
241
242
243 task <filter> history.annual
244 Shows a report of task history by year. Is affected by the con‐
245 text.
246
247
248 task <filter> history.monthly
249 Shows a report of task history by month. Note that 'history' is
250 an alias to 'history.monthly'. Is affected by the context.
251
252
253 task <filter> history.weekly
254 Shows a report of task history by week. Is affected by the con‐
255 text.
256
257
258 task <filter> history.daily
259 Shows a report of task history by day. Is affected by the con‐
260 text.
261
262
263 task <filter> ids
264 Applies the filter then extracts only the task IDs and presents
265 them as a space-separated list. This is useful as input to a
266 task command, to achieve this:
267
268 task $(task project:Home ids) modify priority:H
269
270 This example first gets the IDs for the project:Home filter,
271 then sets the priority to H for each of those tasks. This can
272 also be achieved directly:
273
274 task project:Home modify priority:H
275
276 This command is mainly of use to external scripts.
277
278
279 task <filter> uuids
280 Applies the filter on all tasks (even deleted and completed
281 tasks) then extracts only the task UUIDs and presents them as a
282 space-separated list. This is useful as input to a task com‐
283 mand, to achieve this:
284
285 task $(task project:Home status:completed uuids) modify sta‐
286 tus:pending
287
288 This example first gets the UUIDs for the project:Home and sta‐
289 tus:completed filters, then makes each of those tasks pending
290 again.
291
292 This command is mainly of use to external scripts.
293
294
295 task udas
296 Shows a list of UDAs that are defined, including their name,
297 type, label and allowed values. Also shows UDA usage and any
298 orphan UDAs.
299
300
301 task <filter> information
302 Shows all data and metadata for the specified tasks. This is
303 the only means of displaying all aspects of a given task, in‐
304 cluding the change history.
305
306
307 task <filter> list
308 Provides a standard listing of tasks matching the filter.
309
310
311 task <filter> long
312 Provides the most detailed listing of tasks matching the filter.
313
314
315 task <filter> ls
316 Provides a short listing of tasks matching the filter.
317
318
319 task <filter> minimal
320 Provides a minimal listing of tasks matching the filter.
321
322
323 task <filter> newest
324 Shows the newest tasks matching the filter.
325
326
327 task <filter> next
328 Shows a page of the most urgent tasks, sorted by urgency, which
329 is a calculated value.
330
331
332 task <filter> ready
333 Shows a page of the most urgent ready tasks, sorted by urgency
334 with started tasks first. A ready task is one that is either un‐
335 scheduled, or has a scheduled date that is past and is not wait‐
336 ing.
337
338
339 task <filter> oldest
340 Shows the oldest tasks matching the filter.
341
342
343 task <filter> overdue
344 Shows all incomplete tasks matching the filter that are beyond
345 their due date.
346
347
348 task <filter> projects
349 Lists all project names that are currently used by pending
350 tasks, and the number of tasks for each. Is affected by the con‐
351 text.
352
353
354 task <filter> recurring
355 Shows all recurring tasks matching the filter.
356
357
358 task <filter> unblocked
359 Shows all tasks that are not currently blocked by other tasks,
360 matching the filter.
361
362
363 task <filter> waiting
364 Shows all waiting tasks matching the filter.
365
366
368 task add <mods>
369 Adds a new pending task to the task list. It is affected by the
370 currently set context.
371
372
373 task <filter> annotate <mods>
374 Adds an annotation to an existing task.
375
376
377 task <filter> append <mods>
378 Appends description text to an existing task.
379
380
381 task <filter> delete <mods>
382 Deletes the specified task from task list. Is affected by the
383 context.
384
385
386 task <filter> denotate <mods>
387 Deletes an annotation for the specified task. If the provided
388 description matches an annotation exactly, the corresponding an‐
389 notation is deleted. If the provided description matches annota‐
390 tions partly, the first partly matched annotation is deleted. Is
391 affected by the context.
392
393
394 task <filter> done <mods>
395 Marks the specified task as done. Is affected by the context.
396
397
398 task <filter> duplicate <mods>
399 Duplicates the specified task and allows modifications. Is af‐
400 fected by the context.
401
402
403 task <filter> edit
404 Launches a text editor to let you modify all aspects of a task
405 directly. In general, this is not the recommended method of
406 modifying tasks, but is provided for exceptional circumstances.
407 Use carefully. Is affected by the context.
408
409
410 task import [<file> ...]
411 Imports tasks in the JSON format. Can be used to add new tasks,
412 or update existing ones. Tasks are identified by their UUID.
413
414 If no file or "-" is specified, import tasks from STDIN.
415
416 Setting rc.recurrence.confirmation to an appropriate level is
417 recommended if import is to be used in automated workflows. See
418 taskrc(5).
419
420 For importing other file formats, the standard task release
421 comes with a few example scripts, such as:
422
423 import-todo.sh.pl
424 import-yaml.pl
425
426
427 task log <mods>
428 Adds a new task that is already completed, to the task list. It
429 is affected by the currently set context.
430
431
432 task <filter> modify <mods>
433 Modifies the existing task with provided information.
434
435
436 task <filter> prepend <mods>
437 Prepends description text to an existing task. Is affected by
438 the context.
439
440
441 task <filter> purge
442 Permanently removes the specified tasks from the data files.
443 Only tasks that are already deleted can be purged. This command
444 has a local-only effect and changes introduced by it are not
445 synced. Is affected by the context.
446
447 Warning: causes permanent, non-revertible loss of data.
448
449
450 task <filter> start <mods>
451 Marks the specified tasks as started. Is affected by the con‐
452 text.
453
454
455 task <filter> stop <mods>
456 Removes the start time from the specified task. Is affected by
457 the context.
458
459
461 Miscellaneous subcommands either accept no command line arguments, or
462 accept non-standard arguments.
463
464
465 task calc <expression>
466 Evaluates an algebraic expression. Can be used to test how
467 Taskwarrior parses and evaluates the expression given on the
468 command line.
469
470 Examples:
471
472 task calc 1 + 1
473 2
474
475 task calc now + 8d
476 2015-03-26T18:06:57
477
478 task calc eom
479 2015-03-31T23:59:59
480
481
482 task config [<name> [<value> | '']]
483 Add, modify and remove settings directly in the Taskwarrior con‐
484 figuration. This command either modifies the 'name' setting
485 with a new value of 'value', or adds a new entry that is equiva‐
486 lent to 'name=value':
487
488 task config name value
489
490 This command sets a blank value. This has the effect of sup‐
491 pressing any default value:
492
493 task config name ''
494
495 Finally, this command removes any 'name=...' entry from the
496 .taskrc file:
497
498 task config name
499
500
501 task context <name>
502 Sets the currently active context. See the CONTEXT section.
503
504 Example:
505
506 task context work
507
508
509 task context delete <name>
510 Deletes the context with the name <name>. If the context being
511 deleted is currently set as active, it will be unset.
512
513 Example:
514
515 task context delete work
516
517
518 task context define <name> <filter>
519 Defines a new context with name <name> and definition <filter>.
520 This command does not affect the currently set context, just
521 adds a new context definition.
522
523 Examples:
524
525 task context define work project:Work
526 task context define home project:Home or +home
527 task context define superurgent due:today and +urgent
528
529
530 task context list
531 Outputs a list of available contexts along with their defini‐
532 tions.
533
534
535 task context none
536 Clears the currently active context, if any was set.
537
538
539 task context show
540 Shows the currently active context, along with its definition.
541
542
543 task diagnostics
544 Shows diagnostic information, of the kind needed when reporting
545 a problem. When you report a bug, it is likely that the plat‐
546 form, version, and environment are important. Running this com‐
547 mand generates a summary of similar information that should ac‐
548 company a bug report.
549
550 It includes compiler, library and software information. It does
551 not include any personal information, other than the location
552 and size of your task data files.
553
554 This command also performs a diagnostic scan of your data files
555 looking for common problems, such as duplicate UUIDs.
556
557
558 task execute <external command>
559 Executes the specified command. Not useful by itself, but when
560 used in conjunction with aliases and extensions can provide
561 seamless integration.
562
563
564 task logo
565 Displays the Taskwarrior logo.
566
567
568 task news
569 Guides the user through important release notes anytime a new
570 version of Taskwarrior is installed. It provides personalized
571 feedback, deprecation warnings and usage advice, where applica‐
572 ble.
573
574
575 task reports
576 Lists all supported reports. This includes the built-in re‐
577 ports, and any custom reports you have defined.
578
579
580 task show [all | <substring>]
581 Shows all the current settings. If a substring is specified
582 just the settings containing that substring will be displayed.
583
584
585 task <filter> stats
586 Shows statistics of the tasks defined by the filter. Is affected
587 by the context.
588
589
590 task <filter> summary
591 Shows a report of aggregated task status by project. Is affected
592 by the context.
593
594
595 task sync [init]
596 The sync command synchronizes data with the Taskserver, if con‐
597 figured.
598
599 The init subcommand should only ever be run once, and only on
600 one client, because it sends all data to the Taskserver. This
601 allows all the subsequent sync commands to only send small
602 deltas.
603
604 Note: If you use multiple sync clients, make sure this setting
605 (which is the default) is on your primary client:
606
607 recurrence=on
608
609 and on all other clients (this is not the default):
610
611 recurrence=off
612
613 This is a workaround to avoid a recurrence bug that duplicates
614 recurring tasks.
615
616
617 task <filter> tags
618 Show a list of all tags used. Any special tags used are high‐
619 lighted. Note that virtual tags are not listed - they don't re‐
620 ally exist, and are just a convenient notation for other task
621 metadata. It is an error to attempt to add or remove a virtual
622 tag. Is affected by the context.
623
624
625 task timesheet [<weeks>]
626 Shows a weekly report of tasks completed and started.
627
628
629 task undo
630 Reverts the most recent action. Obeys the confirmation setting.
631
632
633 task version
634 Shows the Taskwarrior version number.
635
636
638 task _aliases
639 Generates a list of all aliases, for autocompletion purposes.
640
641
642 task _columns
643 Displays only a list of supported columns.
644
645
646 task _commands
647 Generates a list of all commands, for autocompletion purposes.
648
649
650 task _config
651 Lists all supported configuration variables, for completion pur‐
652 poses.
653
654
655 task _context
656 Lists all available context variables, for completion purposes.
657
658
659 task <filter> _ids
660 Shows only the IDs of matching tasks, in the form of a list.
661 Deprecated in favor of _unique.
662
663
664 task _show
665 Shows the combined defaults and overrides of the configuration
666 settings, for use by third-party applications.
667
668
669 task <filter> _unique <attribute>
670 Reports a unique set of attribute values. For example, to see
671 all the active projects:
672
673 task +PENDING _unique project
674
675
676 task <filter> _uuids
677 Shows only the UUIDs of matching tasks among all tasks (even
678 deleted and completed tasks), in the form of a list. Deprecated
679 in favor of _unique.
680
681
682 task _udas
683 Shows only defined UDA names, in the form of a list.
684
685
686 task <filter> _projects
687 Shows only a list of all project names used. Deprecated in fa‐
688 vor of _unique.
689
690
691 task <filter> _tags
692 Shows only a list of all tags used, for autocompletion purposes.
693 Deprecated in favor of _unique.
694
695
696 task <filter> _urgency
697 Displays the urgency measure of a task.
698
699
700 task _version
701 Shows only the Taskwarrior version number.
702
703
704 task _zshcommands
705 Generates a list of all commands, for zsh autocompletion pur‐
706 poses.
707
708
709 task <filter> _zshids
710 Shows the IDs and descriptions of matching tasks.
711
712
713 task <filter> _zshuuids
714 Shows the UUIDs and descriptions of matching tasks.
715
716
717 task _get <DOM> [<DOM> ...]
718 Accesses and displays the DOM reference(s). Used to extract in‐
719 dividual values from tasks, or the system. Supported DOM refer‐
720 ences are:
721
722 rc.<name>
723 tw.syncneeded
724 tw.program
725 tw.args
726 tw.width
727 tw.height
728 tw.version
729 context.program (Deprecated in 2.6.0)
730 context.args (Deprecated in 2.6.0)
731 context.width (Deprecated in 2.6.0)
732 context.height (Deprecated in 2.6.0)
733 system.version
734 system.os
735 <id>.<attribute>
736 <uuid>.<attribute>
737
738 Note that the 'rc.<name>' reference may need to be escaped using
739 '--' to prevent the reference from being interpreted as an over‐
740 ride.
741
742 Note that if the DOM reference is not valid, or the reference
743 evaluates to a missing value, the command exits with 1.
744
745 Additionally, some components of the attributes of particular
746 types may be extracted by DOM references.
747
748 $ task _get 2.due.year
749 2015
750
751 For a full list of supported attribute-specific DOM references,
752 consult the online documentation at: <https://taskwar‐
753 rior.org/docs/dom.html>
754
755
757 ID Tasks can be specified uniquely by IDs, which are simply the in‐
758 dexes of the tasks in the data file. The ID of a task may
759 therefore change, but only when a command is run that displays
760 IDs. When modifying tasks, it is safe to rely on the last dis‐
761 played ID. Always run a report to check you have the right ID
762 for a task. IDs can be given to task as a sequence, for example,
763 task 1,4-10,19 delete
764
765
766 +tag|-tag
767 Tags are arbitrary words associated with a task. Use + to add a
768 tag and - to remove a tag from a task. A task can have any quan‐
769 tity of tags.
770
771 Certain tags (called 'special tags'), can be used to affect the
772 way tasks are treated. For example, if a task has the special
773 tag 'nocolor', then it is exempt from all color rules. The sup‐
774 ported special tags are:
775
776 +nocolor Disable color rules processing for this task
777 +nonag Completion of this task suppresses all nag mes‐
778 sages
779 +nocal This task will not appear on the calendar
780 +next Elevates task so it appears on 'next' report
781
782 There are also virtual tags, which represent task metadata in
783 tag form. These tags do not exist, but can be used to filter
784 tasks. The supported virtual tags are:
785
786 ACTIVE Matches if the task is started
787 ANNOTATED Matches if the task has annotations
788 BLOCKED Matches if the task is blocked
789 BLOCKING Matches if the task is blocking
790 CHILD Matches if the task has a parent (deprecated in
791 2.6.0)
792 COMPLETED Matches if the task has completed status
793 DELETED Matches if the task has deleted status
794 DUE Matches if the task is due
795 INSTANCE Matches if the task is a recurrent instance
796 LATEST Matches if the task is the newest added task
797 MONTH Matches if the task is due this month
798 ORPHAN Matches if the task has any orphaned UDA values
799 OVERDUE Matches if the task is overdue
800 PARENT Matches if the task is a parent (deprecated in
801 2.6.0)
802 PENDING Matches if the task has pending status
803 PRIORITY Matches if the task has a priority
804 PROJECT Matches if the task has a project
805 QUARTER Matches if the task is due this quarter
806 READY Matches if the task is actionable
807 SCHEDULED Matches if the task is scheduled
808 TAGGED Matches if the task has tags
809 TEMPLATE Matches if the task is a recurrence template
810 TODAY Matches if the task is due today
811 TOMORROW Matches if the task is due sometime tomorrow
812 UDA Matches if the task has any UDA values
813 UNBLOCKED Matches if the task is not blocked
814 UNTIL Matches if the task expires
815 WAITING Matches if the task is waiting
816 WEEK Matches if the task is due this week
817 YEAR Matches if the task is due this year
818 YESTERDAY Matches if the task was due sometime yesterday
819
820
821 You can use +BLOCKED to filter blocked tasks, or -BLOCKED for
822 unblocked tasks. Similarly, -BLOCKED is equivalent to +UN‐
823 BLOCKED. It is an error to attempt to add or remove a virtual
824 tag.
825
826
827 project:<project-name>
828 Specifies the project to which a task is related to.
829
830
831 priority:H|M|L or priority:
832 Specifies High, Medium, Low and no priority for a task.
833
834
835 due:<due-date>
836 Specifies the due-date of a task.
837
838
839 recur:<frequency>
840 Specifies the frequency of a recurrence of a task.
841
842
843 scheduled:<ready-date>
844 Specifies the date after which a task can be accomplished.
845
846
847 until:<expiration date of task>
848 Specifies the expiration date of a task, after which it will be
849 deleted.
850
851
852 limit:<number-of-rows>
853 Specifies the desired number of tasks a report should show, if a
854 positive integer is given. The value 'page' may also be used,
855 and will limit the report output to as many lines of text as
856 will fit on screen. This defaults to 25 lines.
857
858
859 wait:<wait-date>
860 When a task is given a wait date, it is hidden from most built-
861 in reports, which exclude +WAITING. When the date is in the
862 past, the task is not considered +WAITING, and again becomes
863 visible. Note that, for compatibilty, such tasks are shown as
864 having status "waiting", but this will change in a future re‐
865 lease.
866
867
868 depends:<id1,id2 ...>
869 Declares this task to be dependent on id1 and id2. This means
870 that the tasks id1 and id2 should be completed before this task.
871 Consequently, this task will then show up on the 'blocked' re‐
872 port. It accepts a comma-separated list of ID numbers, UUID
873 numbers and ID ranges. When prefixing any element of this list
874 by '-', the specified tasks are removed from the dependency
875 list.
876
877
878 entry:<entry-date>
879 For report purposes, specifies the date that a task was created.
880
881
883 Attribute modifiers improve filters. Supported modifiers are:
884
885 before (synonyms under, below)
886 after (synonyms over, above)
887 by
888 none
889 any
890 is (synonym equals)
891 isnt (synonym not)
892 has (synonym contains)
893 hasnt
894 startswith (synonym left)
895 endswith (synonym right)
896 word
897 noword
898
899 They can be applied to all regular attributes (see above) and the fol‐
900 lowing calculated attributes:
901
902 urgency (or short urg)
903
904 For example:
905
906 task due.before:eom priority.not:L list
907
908 The before modifier is used to compare values, preserving semantics, so
909 project.before:B list all projects that begin with 'A'. Priority 'L'
910 is before 'M', and due:2011-01-01 is before due:2011-01-02. The syn‐
911 onyms 'under' and 'below' are included to allow filters that read more
912 naturally.
913
914 The after modifier is the inverse of the before modifier.
915
916 The by modifier is the same as 'before', except it also includes the
917 moment in question. For example:
918
919 task add test due:eoy
920
921 will be found when using the inclusive filter 'by':
922
923 task due.by:eoy
924
925 but not when the non-inclusive filter 'before' is used:
926
927 task due.before:eoy
928
929 this applies equally to other named dates such as 'eom', 'eod', etc;
930 the modifier compares using '<=' rather than '<' like 'before' does.
931
932 The none modifier requires that the attribute does not have a value.
933 For example:
934
935 task priority: list
936 task priority.none: list
937
938 are equivalent, and list tasks that do not have a priority.
939
940 The any modifier requires that the attribute has a value, but any value
941 will suffice.
942
943 The is modifier requires an exact match with the value.
944
945 The isnt modifier is the inverse of the is modifier.
946
947 The has modifier is used to search for a substring, such as:
948
949 task description.has:foo list
950 task foo list
951
952 These are equivalent and will return any task that has 'foo' in the de‐
953 scription or annotations.
954
955 The hasnt modifier is the inverse of the has modifier.
956
957 The startswith modifier matches against the left, or beginning of an
958 attribute, such that:
959
960 task project.startswith:H list
961 task project:H list
962
963 are equivalent and will match any project starting with 'H'. Matching
964 all projects not starting with 'H' is done with:
965
966 task project.not:H list
967
968 The endswith modifier matches against the right, or end of an attri‐
969 bute.
970
971 The word modifier requires that the attribute contain the whole word
972 specified, such that this:
973
974 task description.word:bar list
975
976 Will match the description 'foo bar baz' but does not match 'dog food'.
977
978 The noword modifier is the inverse of the word modifier.
979
980
982 You can use the following operators in filter expressions:
983
984 and or xor ! Logical operators
985 < <= = == != !== >= > Relational operators
986 ( ) Precedence
987
988 For example:
989
990 task due.before:eom priority.not:L list
991 task '( due < eom or priority != L )' list
992 task '! ( project:Home or project:Garden )' list
993
994 The = operator tests for approximate equality. Dates compare equal if
995 they are on the same day (hour and minutes are ignored). Strings com‐
996 pare equal if the left operand starts with the right operand. The ==
997 operator tests for exact equality. The != and !== operators are the
998 negation of = and == respectively. The negation operator is !.
999
1000 Note that the parentheses are required when using a logical operator
1001 other than the 'and' operator. The reason is that some reports contain
1002 filters that must be combined with the command line. Consider this ex‐
1003 ample:
1004
1005 task project:Home or project:Garden list
1006
1007 While this looks correct, it is not. The 'list' report contains a fil‐
1008 ter of:
1009
1010 task show report.list.filter
1011
1012 Config Variable Value
1013 ----------------- --------------
1014 report.list.filter status:pending
1015
1016 Which means the example is really:
1017
1018 task status:pending project:Home or project:Garden list
1019
1020 The implied 'and' operator makes it:
1021
1022 task status:pending and project:Home or project:Garden list
1023
1024 This is a precedence error - the 'and' and 'or' need to be grouped us‐
1025 ing parentheses, like this:
1026
1027 task status:pending and ( project:Home or project:Garden ) list
1028
1029 The original example therefore must be entered as:
1030
1031 task '( project:Home or project:Garden )' list
1032
1033 This includes quotes to escape the parentheses, so that the shell
1034 doesn't interpret them and hide them from Taskwarrior.
1035
1036 There is redundancy between operators, attribute modifiers and other
1037 syntactic sugar. For example, the following are all equivalent:
1038
1039 task foo list
1040 task /foo/ list
1041 task description.contains:foo list
1042 task description.has:foo list
1043 task 'description ~ foo' list
1044
1045
1047 DATES
1048 Taskwarrior reads dates from the command line and displays dates in the
1049 reports. The expected and desired date format is determined by the
1050 configuration variable dateformat
1051
1052
1053 Exact specification
1054 task ... due:7/14/2008
1055
1056
1057 ISO-8601
1058 task ... due:2013-03-14T22:30:00Z
1059
1060
1061 Relative wording
1062 task ... due:now
1063 task ... due:today
1064 task ... due:yesterday
1065 task ... due:tomorrow
1066
1067
1068 Day number with ordinal
1069 task ... due:23rd
1070 task ... due:3wks
1071 task ... due:1day
1072 task ... due:9hrs
1073
1074
1075 Start of next (work) week (Monday), calendar week (Sunday or
1076 Monday), month, quarter and year
1077 task ... due:sow
1078 task ... due:soww
1079 task ... due:socw
1080 task ... due:som
1081 task ... due:soq
1082 task ... due:soy
1083
1084
1085 End of current (work) week (Friday), calendar week (Saturday or
1086 Sunday), month, quarter and year
1087 task ... due:eow
1088 task ... due:eoww
1089 task ... due:eocw
1090 task ... due:eom
1091 task ... due:eoq
1092 task ... due:eoy
1093
1094
1095 At some point or later
1096 task ... wait:later
1097 task ... wait:someday
1098
1099 This sets the wait date to 12/30/9999.
1100
1101
1102 Next occurring weekday
1103 task ... due:fri
1104
1105
1106 Predictable holidays
1107 task ... due:goodfriday
1108 task ... due:easter
1109 task ... due:eastermonday
1110 task ... due:ascension
1111 task ... due:pentecost
1112 task ... due:midsommar
1113 task ... due:midsommarafton
1114 task ... due:juhannus
1115
1116
1117 FREQUENCIES
1118 Recurrence periods. Taskwarrior supports several ways of specifying the
1119 frequency of recurring tasks.
1120
1121
1122 daily, day, 1da, 2da, ...
1123 Every day or a number of days.
1124
1125
1126 weekdays
1127 Mondays, Tuesdays, Wednesdays, Thursdays, Fridays and
1128 skipping weekend days.
1129
1130
1131 weekly, 1wk, 2wks, ...
1132 Every week or a number of weeks.
1133
1134
1135 biweekly, fortnight
1136 Every two weeks.
1137
1138
1139 monthly, month, 1mo, 2mo, ...
1140 Every month.
1141
1142
1143 quarterly, 1qtr, 2qtrs, ...
1144 Every three months, a quarter, or a number of quarters.
1145
1146
1147 semiannual
1148 Every six months.
1149
1150
1151 annual, yearly, 1yr, 2yrs, ...
1152 Every year or a number of years.
1153
1154
1155 biannual, biyearly, 2yr
1156 Every two years.
1157
1158
1160 Context is a user-defined query, which is automatically applied to all
1161 commands that filter the task list and to commands that create new
1162 tasks (add, log). For example, any report command will have its result
1163 affected by the current active context. Here is a list of the commands
1164 that are affected:
1165
1166 add
1167 burndown
1168 count
1169 delete
1170 denotate
1171 done
1172 duplicate
1173 edit
1174 history
1175 log
1176 prepend
1177 projects
1178 purge
1179 start
1180 stats
1181 stop
1182 summary
1183 tags
1184
1185 All other commands are NOT affected by the context.
1186
1187 $ task list
1188 ID Age Project Description Urg
1189 1 2d Sport Run 5 miles 1.42
1190 2 1d Home Clean the dishes 1.14
1191
1192 $ task context home
1193 Context 'home' set. Use 'task context none' to remove.
1194
1195 $ task list
1196 ID Age Project Description Urg
1197 2 1d Home Clean the dishes 1.14
1198 Context 'home' set. Use 'task context none' to remove.
1199
1200 Task list got automatically filtered for project:Home.
1201
1202 $ task add Vaccuum the carpet
1203 Created task 3.
1204 Context 'home' set. Use 'task context none' to remove.
1205
1206 $ task list
1207 ID Age Project Description Urg
1208 2 1d Home Clean the dishes 1.14
1209 3 5s Home Vaccuum the carpet 1.14
1210 Context 'home' set. Use 'task context none' to remove.
1211
1212 Note that the newly added task "Vaccuum the carpet" has
1213 "project:Home" set automatically.
1214
1215 As seen in the example above, context is applied by specifying
1216 its name to the "context" command. To change the currently ap‐
1217 plied context, just pass the new context's name to the 'context'
1218 command.
1219
1220 To unset any context, use the 'none' subcommand.
1221
1222 $ task context none
1223 Context unset.
1224
1225 $ task list
1226 ID Age Project Description Urg
1227 1 2d Sport Run 5 miles 1.42
1228 2 1d Home Clean the dishes 1.14
1229 3 7s Home Vaccuum the carpet 1.14
1230
1231 Context can be defined using the 'define' subcommand, specifying
1232 both the name of the new context, and it's assigned filter.
1233
1234 $ task context define home project:Home
1235 Are you sure you want to add 'context.home.read' with a
1236 value of 'project:Home'? (yes/no) yes
1237 Are you sure you want to add 'context.home.write' with a
1238 value of 'project:Home'? (yes/no) yes
1239 Context 'home' successfully defined.
1240
1241 Note that you were separately prompted to set the 'read' and
1242 'write' context. This allows you to specify contexts that only
1243 work for reporting commands or only for commands that create
1244 tasks.
1245
1246 To remove the definition, use the 'delete' subcommand.
1247
1248 $ task context delete home
1249 Are you sure you want to remove 'context.home.read'?
1250 (yes/no) yes
1251 Are you sure you want to remove 'context.home.write'?
1252 (yes/no) yes
1253 Context 'home' deleted.
1254
1255 To check what is the currently active context, use the 'show'
1256 subcommand.
1257
1258 $ task context show
1259 Context 'home' with
1260
1261 * read filter: '+home'
1262 * write filter: '+home'
1263
1264 is currently applied.
1265
1266 Contexts can store arbitrarily complex filters.
1267
1268 $ task context define family project:Family or +paul or
1269 +nancy
1270 Are you sure you want to add 'context.family.read' with a
1271 value of 'project:Family or +paul or +nancy'? (yes/no) yes
1272 Are you sure you want to add 'context.family.write' with a
1273 value of 'project:Family or +paul or +nancy'? (yes/no) no
1274 Context 'family' successfully defined.
1275
1276 Contexts are permanent, and the currently set context name is
1277 stored in the "context" configuration variable. The context def‐
1278 inition is stored in the "context.<name>.read" configuration
1279 variable (for reporting commands) and "context.<name>.write"
1280 configuration variable (for task additions, i.e. task add/log).
1281
1282 Note that in the example above, the user decided not to define
1283 the complex filter as writeable context. The reason for this de‐
1284 cision is that the complex filter in the example does not di‐
1285 rectly translate to a modification. In fact, if such a context
1286 is used as a writeable context, the following happens:
1287
1288 $ task add Call Paul
1289 Created task 4.
1290 Context 'family' set. Use 'task context none' to remove.
1291
1292 $ task 4 list
1293 ID Age Project Tags Description Urg
1294 4 9min Family nancy paul or or Call Paul 0
1295
1296
1297 There is no clear mapping between the complex filter used and
1298 the modifications (should only the project be set? only the
1299 tags? both?). Additionally note the 'or' operators being present
1300 in the description. Taskwarrior does not try to guess the user
1301 intention here, and instead, the user is expected to set the
1302 "context.<name>.write" variable to make their intention ex‐
1303 plicit, for example:
1304
1305 $ task config context.family.write project:Family
1306 Are you sure you want to change the value of 'context.fam‐
1307 ily.write' from 'project:Family or +paul or +nancy' to
1308 'project:Family'? (yes/no) yes
1309 Config file /home/tbabej/.config/task/taskrc modified.
1310
1311 $ task context
1312 Name Type Definition Active
1313 family read project:Family or +paul or +nancy yes
1314 write project:Family yes
1315 home read +home no
1316 write +home no
1317
1318 Note how read and write contexts differ for context "family",
1319 while for context "home" they stay the same.
1320
1321 In addition, every configuration parameter can be overridden for
1322 the current context, by specifying context.<name>.rc.<parame‐
1323 ter>. For example, if the default command for the family context
1324 should be displaying the family_report:
1325
1326 $ task config context.family.rc.default.command family_re‐
1327 port
1328
1329
1331 All Taskwarrior commands may be abbreviated as long as a unique prefix
1332 is used, for example:
1333
1334 $ task li
1335
1336 is an unambiguous abbreviation for
1337
1338 $ task list
1339
1340 but
1341
1342 $ task l
1343
1344 could be list, ls or long.
1345
1346 Note that you can restrict the minimum abbreviation size using the con‐
1347 figuration setting:
1348
1349 abbreviation.minimum=3
1350
1351
1353 Some task descriptions need to be escaped because of the shell and the
1354 special meaning of some characters to the shell. This can be done ei‐
1355 ther by adding quotes to the description or escaping the special char‐
1356 acter:
1357
1358 $ task add "quoted ' quote"
1359 $ task add escaped \' quote
1360
1361 The argument -- (a double dash) tells Taskwarrior to treat all other
1362 args as description:
1363
1364 $ task add -- project:Home needs scheduling
1365
1366 In other situations, the shell sees spaces and breaks up arguments.
1367 For example, this command:
1368
1369 $ task 123 modify /from this/to that/
1370
1371 is broken up into several arguments, which is corrected with quotes:
1372
1373 $ task 123 modify "/from this/to that/"
1374
1375 It is sometimes necessary to force the shell to pass quotes to Taskwar‐
1376 rior intact, so you can use:
1377
1378 $ task add project:\'Three Word Project\' description
1379
1380 Taskwarrior supports Unicode using only the UTF8 encoding, with no Byte
1381 Order Marks in the data files.
1382
1383
1385 Taskwarrior stores its configuration in a file in the user's home di‐
1386 rectory: ~/.taskrc. The default configuration file can be overridden
1387 with:
1388
1389
1390 task rc:<path-to-alternate-file> ...
1391 Specifies an alternate configuration file with highest priority.
1392
1393
1394 TASKRC=<path-to-alternate-file> task ..
1395 The environment variable specifies an alternate configuration
1396 file to use.
1397
1398
1399 XDG_CONFIG_HOME=<path-to-alternate-config-home> task ..
1400 The environment variable specifies an alternate configuration
1401 file to use.
1402
1403
1404 task rc.<name>:<value> ...
1405 task rc.<name>=<value> ... Specifies individual configuration
1406 file overrides.
1407
1408
1409 TASKDATA=/tmp/.task task ...
1410 The environment variable overrides the default, and the
1411 'data.location' configuration setting of the task data direc‐
1412 tory.
1413
1414
1416 For examples please see the online documentation starting at
1417
1418 <https://taskwarrior.org/docs>
1419
1420 Note that the online documentation can be more detailed and more cur‐
1421 rent than this man page.
1422
1423
1425 ~/.taskrc
1426 User configuration file - see also taskrc(5). Note that this
1427 can be overridden on the command line or by the TASKRC environ‐
1428 ment variable. Also, if ~/.taskrc doesn't exist and XDG_CON‐
1429 FIG_HOME environment variable is defined, taskwarrior will check
1430 if $XDG_CONFIG_HOME/task/taskrc exists and attempt to read it
1431
1432
1433 ~/.task
1434 The default directory where task stores its data files. The lo‐
1435 cation can be configured in the configuration variable 'data.lo‐
1436 cation', or overridden with the TASKDATA environment variable..
1437
1438
1439 ~/.task/pending.data
1440 The file that contains the tasks that are not yet done.
1441
1442
1443 ~/.task/completed.data
1444 The file that contains the completed ("done") tasks.
1445
1446
1447 ~/.task/undo.data
1448 The file that contains information needed by the "undo" command.
1449
1450
1452 Copyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez.
1453
1454 Taskwarrior is distributed under the MIT license. See https://www.open‐
1455 source.org/licenses/mit-license.php for more information.
1456
1457
1459 taskrc(5), task-color(5), task-sync(5)
1460
1461 For more information regarding Taskwarrior, see the following:
1462
1463
1464 The official site at
1465 <https://taskwarrior.org>
1466
1467
1468 The official code repository at
1469 <https://github.com/GothenburgBitFactory/taskwarrior>
1470
1471
1472 You can contact the project by emailing
1473 <support@GothenburgBitFactory.org>
1474
1475
1477 Bugs in Taskwarrior may be reported to the issue-tracker at
1478 <https://github.com/GothenburgBitFactory/taskwarrior/issues>
1479
1480
1481
1482task 2.6.2 2016-02-24 task(1)