빠른 참조

Ledger CLI 치트시트

Ledger CLI를 활용한 플레인 텍스트 복식부기 완벽 가이드: 기본 문법, 상태 플래그, 보조 날짜, 잔액 검증, 기간 표현식 및 고급 쿼리 필터링.

· 게시일

Ledger는 플레인 텍스트 기반의 강력한 명령줄 복식부기 회계 도구입니다. 사람이 읽을 수 있는 텍스트 저널 파일을 통해 잔액 계산, 거래 내역 조회, 예산 추적, 상세 재무 보고서 작성을 손쉽게 수행할 수 있습니다.


핵심 개념 및 시작하기

복식부기 기본 항등식

Ledger에서 모든 거래는 합계가 엄격히 0이 되는 두 개 이상의 분개로 구성됩니다:

$$\text{Assets} + \text{Expenses} = \text{Liabilities} + \text{Equity} + \text{Income}$$

Assets:Checking          -$600.00   ; Asset decreases (credit)
Expenses:Rent             $600.00   ; Expense increases (debit)
---------------------------------
순 잔액 = $0.00

핵심 명령어 개요

명령어 전체 형태 설명
ledger bal ledger balance 모든 계정의 현재 잔액을 계산하고 표시
ledger reg ledger register 거래 내역과 누적 잔액을 시간 순서대로 나열
ledger print ledger print 저널 원본 항목을 서식에 맞게 출력
ledger csv ledger csv 필터링된 거래를 표준 CSV 형식으로 내보내기
ledger payees ledger payees 저널에 기록된 모든 고유 거래처 나열
ledger accounts ledger accounts 정의된 모든 계정 이름과 계층 구조 나열

저널(Journal) 문법 규격

기본 거래 구조

2024/01/03 * (CODE#001) Landlord John ; tag:rent
    Expenses:Rent:Apartment       $600.00
    Assets:Checking:MainBank
  • 헤더 라인 세부 분석::
2024/01/03   *       (CODE#001)   Landlord John     ; tag:rent
^            ^       ^            ^                 ^
Date         State   Code/Check#  Payee/Description Comment & Tags
  • 자동 계산: Ledger는 대차대조가 맞도록 한 분개의 금액을 자동으로 유추할 수 있습니다.

거래 상태 플래그

플래그 상태 설명 및 일반적인 용도
(None) 미정산 은행 명세서와 아직 대조되지 않은 새로운 거래
! 대기 중 승인 대기 중인 거래 (신용카드 결제 대기 등)
* 정산 완료 은행 계좌와 대조가 완료된 확정 거래

보조 날짜 (Auxiliary Dates)

등호를 사용하여 거래 발생일과 실제 결제일을 분리할 수 있습니다:

; Format: EventDate=SettlementDate
2024/01/01=2024/01/15 Consulting Client A
    Assets:AccountsReceivable    $1,000.00
    Income:Consulting

잔액 단언 및 할당

  • 잔액 단언 (= $VALUE): 분개 후 누적 잔액이 지정된 값과 일치하는지 검증합니다.
  • 잔액 할당 (= $VALUE): 계정 잔액이 지정된 값이 되도록 차액을 계산합니다.
; 1. Balance Assertion
2024/01/01 * Restaurant
    Expenses:Food:Dinner          $20.00
    Assets:Cash                  -$20.00 = $500.00

; 2. Balance Assignment
2024/01/01 * Opening Balance
    Assets:Cash                 = $500.00
    Equity:OpeningBalances

Account Declarations & Validation

account Expenses:Food
    note Dining and grocery expenses
    alias food
    payee ^(KFC|McDonalds|Starbucks)$
    check commodity == "$"
    assert commodity == "$"
    default

account Assets:Cash
    alias cash

Commodities & Currencies

; 1. Per-unit cost (@ symbol)
2024/05/31 * Farmers Market
    Expenses:Food:Apples         10 APPLE @ $1.50
    Assets:Checking             -$15.00

; 2. Total cost (@@ symbol)
2024/06/01 * Brokerage
    Assets:Investments:AAPL      5 AAPL @@ $950.00
    Assets:Checking             -$950.00

; 3. Explicit currency price history
P 2024/06/01 00:00:00 EUR $1.0850

Directives

; Global default currency
D $1,000.00

; Set default year
Y2024

Including Sub-Journals

include accounts.journal
include 2023.journal
include 2024.journal

account Business
include company_expenses.journal
end

Budgeting

~ Monthly
    Expenses:Rent               $600.00
    Expenses:Food               $400.00
    Expenses:Utilities          $100.00
    Expenses                    $100.00
    Assets

~ Yearly
    Expenses:Insurance        $1,200.00
    Assets
  • ledger bal --budget Expenses
  • ledger bal --unbudgeted Expenses

기간 표현식

Ledger는 -p 또는 --period 옵션을 통해 자연어 시간 필터링을 지원합니다.

Syntax Structure

[INTERVAL] [BEGIN] [END]

주기 간격

간격 의미
every day / daily Daily
every week / weekly Weekly
biweekly Every two weeks
every month / monthly Monthly
every quarter / quarterly Quarterly
every year / yearly Yearly
every N days/weeks/months Custom interval

Period Filtering Examples

ledger reg -p "since last month"
ledger reg Expenses -p "every month from 2024 to 2024/12/31" -M
ledger bal -p "from 2024/01/01 until this month"
ledger bal Expenses:Food -p "last quarter"

쿼리 표현식 및 필터링

Syntax 대상 예시 설명
Account Account name ledger bal Assets Substring/regex match
^Account Root account ledger bal ^Expenses Accounts starting with Expenses
@Payee Payee name ledger reg @Starbucks Match payee field
%Tag Tag presence ledger reg %reimburse Match tagged transactions
%Tag=Value Tag value ledger reg %project=alpha Match tag key-value pairs
=Note Memo note ledger reg =taxi Match memo text
#Code Transaction code ledger reg #1042 Match check or order number

부울 논리 연산

ledger reg Expenses:Food and @Starbucks and not dining
ledger bal Rent or Transportation
ledger bal Expenses and not \( Drinks or Food \)

주요 필터 옵션

플래그 옵션 설명
-b DATE --begin DATE Filter transactions on or after date
-e DATE --end DATE Filter transactions before date
-C --cleared Only cleared transactions (*)
-U --uncleared Only uncleared transactions
--pending --pending Only pending transactions (!)
-R --real Exclude virtual postings
-r --related Show the offsetting balancing postings

보고서 및 데이터 내보내기

-s, --subtotal         # Calculate subtotals for grouped postings
-n, --collapse         # Collapse multi-line postings into one line
--flat                 # Render account tree as a flat list
--tail N               # Limit output to last N lines
--invert               # Invert numerical signs (display expenses as positive)
-X CUR, --exchange CUR # Convert foreign holdings to specified currency at latest rate
# Export all entries to CSV
ledger csv > report.csv

# Export this month's dining expenses
ledger csv Expenses:Food -p "this month"

실전 활용 예시

# Current assets vs liabilities
ledger bal ^Assets ^Liabilities

# Net revenue this month with positive expenses
ledger bal ^Expenses ^Income -p "this month" --invert

# Top 10 largest expenses
ledger reg Expenses -S amount --tail 10

# Monthly average daily expenses
ledger reg Expenses -M -n --average

참고 자료

관련 주제