Beancount 常用 CLI 工具速查

裝好 beancount 之後(pip install beancount),會多出一組 bean- 開頭的命令列工具。這篇整理日常記帳會用到的四個。

bean-check — 驗證帳本

最常用、也最重要的工具。會把你的 .beancount 檔讀進去,檢查有沒有語法錯誤、帳戶是否都有 open、複式記帳是否平衡。

bean-check main.beancount

順利的話,不會有任何錯誤訊息顯示。 出錯時會把檔案路徑、行號、原因一條一條列出來,可以根據那一個交易來進行確認錯誤原因。

我自己的節奏是寫完一小段就 bean-check 一下,剛改的內容還在腦袋裡,看到報錯比較好對應到剛才動了什麼。等到累積二三十筆再一次驗,常常會卡在「到底是哪一邊的錯」,常常會找半天。

bean-query — 用 SQL 查帳本

beancount 內建一個類 SQL 的查詢介面,叫 BQL(Beancount Query Language)。可以互動式進入:

bean-query main.beancount

或一次性執行單一查詢:

bean-query main.beancount "SELECT account, sum(position) WHERE account ~ 'Expenses:Food' GROUP BY account"

常用情境:

  • 看某類別的總支出
  • 篩選特定商家(例如所有「全聯」的消費)的所有交易
  • 依月份統計收支

進到互動模式後輸入 help 可以看可用語法。完整文件:Beancount Query Language

bean-format — 對齊欄位

手寫帳本時數字與貨幣很容易亂跑,看起來沒有對齊。bean-format 會把每一行的金額靠右對齊:

bean-format main.beancount > main.formatted.beancount

或直接覆蓋原檔(先 commit 過再做):

bean-format -o main.beancount main.beancount

很多編輯器(VS Code、Vim、Emacs)都有 beancount plugin,存檔時自動跑 format,不一定要手動。

fava — 網頁介面

fava 是另外裝的套件,提供網頁介面總覽資產的相關資訊:

pip install fava
fava main.beancount

預設開在 http://localhost:5000,提供:

  • 收支報表、淨值變化圖
  • 餘額試算表(Trial Balance)、損益表(Income Statement)、資產負債表(Balance Sheet)
  • 各帳戶的明細與圖表
  • 互動式 BQL 查詢介面

整理

工具用途何時用
bean-check驗證每次寫完一段
bean-querySQL 查詢寫客製化報表
bean-format對齊欄位整理格式
fava網頁報表看圖、明細