You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Taskwarrior在完成任务后自动运行bash脚本?

Taskwarrior 完成任务自动执行脚本分步设置指南

一、选择正确的钩子类型

要在任务标记为完成时触发脚本,使用post-modify钩子最合适——它会在任务被修改(包括执行task done标记完成)后触发,且能通过过滤条件精准匹配“任务完成”的场景。

二、分步设置步骤

  1. 创建钩子目录(若不存在)
    Taskwarrior 默认读取~/.task/hooks/下的钩子脚本,先确保目录存在:

    mkdir -p ~/.task/hooks/
    
  2. 编写钩子触发脚本
    在钩子目录下创建脚本,命名必须遵循<钩子类型>.<自定义名称>格式,比如post-modify.run_completion_script:

    nano ~/.task/hooks/post-modify.run_completion_script
    

    写入以下内容(替换你的脚本路径):

    #!/bin/bash
    # 仅当任务状态变为completed时执行目标脚本
    task "$TASK_UUID" export | grep -q '"status":"completed"'
    if [ $? -eq 0 ]; then
        # 替换为你的bash脚本绝对路径
        /full/path/to/your/script.sh
    fi
    

    说明:TASK_UUID是Taskwarrior触发钩子时自动传入的环境变量,代表当前被修改的任务唯一标识;通过task export获取任务状态,过滤出完成状态的任务再执行脚本。

  3. 赋予脚本可执行权限
    钩子脚本必须具备执行权限才能被Taskwarrior调用:

    chmod +x ~/.task/hooks/post-modify.run_completion_script
    
  4. 测试验证
    随便选一个任务执行完成命令,验证脚本是否自动运行:

    task done <任务ID>
    

    若你的脚本有输出或操作,此时应该会自动触发。

三、额外注意事项

  • 钩子脚本必须使用绝对路径调用你的目标脚本,避免Taskwarrior环境路径问题;
  • 若需要在脚本中获取任务详情,可通过task "$TASK_UUID" export输出JSON格式的任务数据,进一步处理;
  • 若要调试钩子,可在脚本中添加日志输出,比如echo "触发完成钩子: $TASK_UUID" >> ~/task_hook.log,方便排查问题。

内容的提问来源于stack exchange,提问作者Matblanket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:00:06