05
Lezione cinque · ~25 min

Filtri e ricerca avanzata

Ogni comando in Taskwarrior è un filtro più un'azione. Imparare a comporre filtri significa imparare a chiedere allo strumento esattamente quello che ti serve, niente di meno e niente di più.

Teoria

L'algebra dei filtri

Un filtro è una serie di condizioni sugli attributi del task. Gli operatori fondamentali:

  • and (implicito tra termini), or, not, xor
  • Modificatori sugli attributi: .before, .after, .not, .is, .any, .none, .contains, .startswith, .endswith
  • Regex tra slash: /pattern/
  • Parentesi per raggruppare: '(progetto:A or progetto:B)'

Combinati con i tag virtuali della lezione 3, hai un linguaggio di interrogazione completo che funziona su qualunque attributo, incluso quelli che definirai tu (UDA, lezione 9).

Pratica

Filtri reali, da usare oggi

~/filtri-avanzati
# Tutto ciò che è urgente nel progetto cliente1 $task project:lavoro.cliente1 +urgente list # Task in scadenza entro fine settimana $task due.before:eow list # Bug o feature, ma non in revisione $task '(+bug or +feature) and -revisione' list # Ricerca testuale: descrizioni che iniziano per "Fix" $task description.startswith:Fix list # Regex: tutto ciò che contiene "bug" seguito da numero $task /bug.[0-9]+/ list # Task chiusi negli ultimi 7 giorni $task status:completed end.after:7days-ago list
Trucco

Trasforma i filtri che usi spesso in alias permanenti

Se ti accorgi di scrivere lo stesso filtro tre volte in un giorno, promuovilo ad alias nel .taskrc:

~/.taskrc
alias.oggi=due.before:tomorrow and status:pending alias.settimana=due.before:eow and status:pending alias.standup=+lavoro and (status:completed or status:pending) and modified.after:1day-ago

Da quel momento task oggi list funziona come un comando nativo. Il tuo flusso di lavoro diventa un linguaggio personale: invece di pensare in termini di filtri, pensi in termini di azioni ("mostrami lo standup di stamattina"), e lo strumento traduce. Questa è la differenza tra usare Taskwarrior e abitarlo.