Bartib
Bartib 是一个易于使用的命令行时间跟踪工具。它将所有跟踪活动的日志保存为纯文本文件,并允许您创建灵活的报告。
情景式教程
爱丽丝不再追寻白兔的足迹。她现在拥有了一份真正的工作,拥有真正的客户和项目经理。因此,她需要记录自己如何分配工作时间。让我们看看爱丽丝是如何利用 Bartib 来实现这一点的,以及您也可以如何使用它。
清晨 8 点,爱丽丝抵达办公室。她收到了项目经理的邮件,要求她立刻着手处理“重要项目 A”中的“紧急任务 X”。于是,爱丽丝在命令行中输入:
alice@work: ~ $ bartib start -d "紧急任务X" -p "重要项目A"
Bartib 随即确认:
活动开始:“紧急任务X”(重要项目A),时间:2021-10-29 08:00
到了 8 点 43 分,一位同事来访,他们决定一起去喝杯咖啡。由于这段时间不能计入客户账单,爱丽丝在 Bartib 中停止了正在进行的活动:
alice@work: ~ $ bartib stop
活动停止:“紧急任务X”(重要项目A),开始时间:2021-10-29 08:00,持续时间:43分钟
大约 10 分钟后,她回到办公桌继续工作:
alice@work: ~ $ bartib continue
活动继续:“紧急任务X”(重要项目A),时间:2021-10-29 08:51
到了 10 点 13 分,又一封邮件到来,告知“紧急任务 X”需要搁置,现在需要立即处理“更紧急任务 Y”,来自“另一个项目 B”。
爱丽丝输入:
alice@work: ~ $ bartib start -d "更紧急任务Y" -p "另一个项目B"
活动停止:“紧急任务X”(重要项目A),开始时间:2021-10-29 09:01,持续时间:1小时12分钟
活动开始:“更紧急任务Y”(另一个项目B),时间:2021-10-29 10:13
Bartib 在开始新活动时自动停止了正在进行的活动,无需手动干预。
这是一个高效的早晨。完成“更紧急任务 Y”后,爱丽丝还处理了其他项目和任务,但现在是午餐时间,她让 Bartib 列出了她今天到目前为止跟踪的所有活动:
alice@work: ~ $ bartib list --today
开始时间 结束时间 描述 项目 持续时间
08:00 08:43 紧急任务X 重要项目A 43分钟
08:51 10:13 紧急任务X 重要项目A 1小时22分钟
10:13 10:35 更紧急任务Y 另一个项目B 22分钟
10:35 10:53 紧急任务X 重要项目A 18分钟
10:53 11:45 简单任务Z 较不重要项目 52分钟
11:45 12:34 无聊任务XY 内部项目C 49分钟
午餐后,爱丽丝想要继续处理“更紧急任务 Y”。她不想再次输入任务描述和项目名称,于是她要求 Bartib 列出她最近工作过的所有任务:
alice@work: ~ $ bartib last
# 描述 项目
[3] 更紧急任务Y 另一个项目B
[2] 紧急任务X 重要项目A
[1] 简单任务Z 较不重要项目
[0] 无聊任务XY 内部项目C
她指示 Bartib 继续任务编号 3:
alice@work: ~ $ bartib continue 3
活动继续:“更紧急任务Y”(另一个项目B),时间:2021-10-29 12:52
一个充满激情的工作日还在继续。由于今天是星期五,爱丽丝决定在傍晚稍早离开工作。她停止了最新的活动,并要求 Bartib 提供一份报告:
alice@work: ~ $ bartib report --today
重要项目A.................................. 2小时43分钟
其他任务xyz.............................. 15分钟
与客户的重要通话......................... 35分钟
紧急任务X................................ 1小时53分钟
内部项目C................................ 4小时30分钟
另一次会议............................... 45分钟
无聊任务XY................................ 1小时15分钟
与部门所有人的长会议.................. 2小时30分钟
另一个项目B............................ 45分钟
更紧急任务Y............................ 45分钟
较不重要项目............................ 2小时27分钟
简单任务No.5.......................... 1小时35分钟
简单任务Z................................ 52分钟
总计............................................. 10小时25分钟
爱丽丝感到满意。这又是一个在公司里非常出色的一天,多亏了 Bartib,她跟踪时间变得轻松自如。
你是否也想和爱丽丝一样感到轻松愉快?那就试试 Bartib 吧!
如何操作...
如何安装 Bartib
下载可执行文件
只需从 https://github.com/nikolassv/bartib/releases 下载合适的可执行文件,然后将其复制到你的 PATH
中列出的某个目录(例如 ~/bin)。
使用 Cargo
你也可以使用 cargo 从 crates.io 安装 Bartib:
cargo install bartib
从 AUR (Arch Linux)
yay -S bartib
通过 Homebrew
brew install bartib
通过 apk (Alpine Linux)
apk add bartib
(目前 bartib 仅在 测试仓库[1] 中可用)
如何构建 Bartib
Bartib 是用 rust 编写的。你可以使用 cargo 的帮助自己构建它。只需克隆这个仓库,然后在其主目录中执行 cargo build
命令:
cargo build --release
如何定义保存活动日志的文件
你可以通过将日志的绝对路径指定为 bartib 命令的额外参数(--file
或 -f
):
bartib -f /home/username/activities.bartib report
或者你可以将环境变量 BARTIB_FILE
设置为日志的路径。只需在 .profile
文件中添加以下行:
export BARTIB_FILE="/home/username/activities.bartib"
如果指定的日志文件尚未存在,Bartib 将创建它。
如何编辑或删除跟踪的活动
只需在你喜欢的文本编辑器中打开你的活动日志以编辑或删除以前的活动。你甚至可以手动在该文件中添加新的活动。格式是自解释的。
Bartib 甚至提供了 bartib edit
命令,它在由你的 EDITOR
环境变量定义的编辑器中打开日志。如果你不确定你的编辑是否可由 bartib 读取,请使用 bartib check
命令。它将告知你任何解析错误。
如何激活自动补全
Bartib 提供了一个简单的项目名称自动补全。这每次你开始一个新任务时,都无需键入长项目名称。只需在 .bashrc
中源 misc/bartibCompletion.sh[2] 脚本即可启用它。
对于 fish 用户,在 ~/.config/fish/completions/
或 ~/.local/share/fish/vendor_completions.d/
目录中添加 misc/bartib.fish[3]。
目前,你必须在 fish shell 中设置 BARTIB_FILE
,以完成项目和描述名称的自动补全。
命令概览
所有这些命令都要求你已经将 BARTIB_FILE
环境变量设置为你的活动日志文件路径。否则,它们需要在 bartib
和子命令之间添加一个额外的 -f/--file
参数(见上文:如何定义保存活动日志的文件[4])。
基本操作
bartib -h # 获取帮助
bartib start -p "项目的名称" -d "活动的描述" # 开始一个新活动
bartib stop # 停止一个活动
bartib list --today # 列出当天的所有活动
bartib report --today # 为今天创建报告
获取帮助
bartib -h # 打印简洁的帮助
bartib start -h # 打印任何子命令的帮助
跟踪活动
bartib start -p "相关项目的名称" -d "活动的描述" # 用简短的描述和相关项目开始一个新活动
bartib start -p "相关项目的名称" -d "活动的描述" -t 13:45 # 在给定时间开始一个新活动
bartib stop # 停止当前正在进行的活动
bartib stop -t 14:00 # 在给定时间停止当前正在进行的活动
bartib last # 打印最近使用的十个项目和描述的列表
bartib last -n 25 # 打印最近使用的项目和描述的列表,包含更多条目
# 所有以下命令中使用的数字都指的是 `bartib last` 创建的列表中的索引
bartib continue 5 # 用最近使用的项目和描述开始一个活动
bartib continue # 继续最新的活动
bartib continue 3 -d "另一个描述" # 继续活动编号 3,但覆盖描述
bartib continue 7 -t 8:15 # 继续活动编号 7,但让它在给定时间开始
bartib cancel # 通过在活动日志中删除条目来取消正在进行的活动
报告和列出活动
bartib report # 创建关于在哪些项目和活动上花费了多少时间的报告
bartib report --today # 为今天创建报告
bartib report --yesterday # 为昨天创建报告
bartib report --current_week # 为本周(自周一以来)创建报告
bartib report --last_week # 为上周创建报告
bartib report --date 2021-09-03 # 为给定的日子创建报告
bartib report --from 2021-09-01 --to 2021-09-05 # 为给定的时间范围创建报告
bartib report --project "最激动人心的项目" # 为给定的项目创建报告
bartib report --project "Maint?nance *" # 在项目名称中使用 '?' 和 '*' 作为通配符
bartib report --round 15m # 将开始和结束时间四舍五入到最接近的持续时间。持续时间可以是分钟或小时。例如 15m 或 4h
bartib list # 按天列出所有活动
bartib list --no_grouping # 列出所有活动,但不按天分组
bartib list --today # 列出今天的活动
bartib list --yesterday # 列出昨天的活动
bartib list --current_week # 列出本周(自周一以来)的活动
bartib list --last_week # 列出上周的活动
bartib list --date 2021-09-03 # 列出给定日子的活动
bartib list --from 2021-09-01 --to 2021-09-05 # 列出给定时间范围内的活动
bartib list --project "最激动人心的项目" # 列出给定项目的活动
bartib list --round 15m # 将开始和结束时间四舍五入到最接近的持续时间。持续时间可以是分钟或小时。例如 15m 或 4h
bartib search "exiting" # 搜索所有描述和项目中的特定术语
bartib search "e*t?ng" # 使用 '?' 和 '*' 作为通配符
编辑活动
bartib change -d "一个新的描述" # 更改当前活动的描述
bartib change -p "另一个项目" # 更改当前活动的项目
bartib change -t 8:15 # 更改当前活动的开始时间
bartib edit # 在你定义在 `EDITOR` 环境变量中的编辑器中打开活动日志
bartib edit -e vim # 在给定的编辑器中打开活动日志
其他操作
bartib current # 显示当前正在进行的活动
bartib projects # 列出所有使用过的项目
bartib projects -c # 仅显示当前项目
bartib check # 检查你的活动日志是否有无效行
bartib sanity # 检查活动是否有逻辑错误(例如持续时间是负数的活动)
测试仓库: https://pkgs.alpinelinux.org/packages?name=bartib
[2]misc/bartibCompletion.sh: misc/bartibCompletion.sh
[3]misc/bartib.fish: misc/bartib.fish