mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-27 12:24:43 +03:00
673 lines
26 KiB
Plaintext
673 lines
26 KiB
Plaintext
hledger manual
|
|
==============
|
|
|
|
This is the official hledger manual. You may also want to visit
|
|
the http://hledger.org home page,
|
|
the `hledger for techies`_ page,
|
|
and perhaps `c++ ledger's manual`_ (but don't worry, we'll link to that below.)
|
|
|
|
A tip: on hledger.org, these docs are also available with .pdf suffix.
|
|
|
|
User Guide
|
|
----------
|
|
|
|
Introduction
|
|
............
|
|
|
|
hledger is a program for tracking money, time, or any other commodity,
|
|
using a plain text file format and the simple but powerful principles of
|
|
double-entry accounting.
|
|
|
|
It is modelled closely on `John Wiegley's ledger`_ (aka "c++ ledger"),
|
|
with some features removed and some new ones added. I wrote hledger
|
|
because I wanted to build financial tools in the Haskell programming
|
|
language rather than in C++.
|
|
|
|
hledger's basic function is to generate register and balance reports from
|
|
a plain text ledger file, at the command line or via the web or curses
|
|
interface. You can use it to, eg,
|
|
|
|
- track spending and income
|
|
- see time reports by day/week/month/project
|
|
- get accurate numbers for client billing and tax filing
|
|
- track invoices
|
|
|
|
hledger aims to help both computer experts and every-day users gain clarity in their finances and time management.
|
|
For now though, it is most useful to technically-minded folks who are comfortable with command-line tools.
|
|
|
|
hledger is copyright (c) 2007-2009 Simon Michael <simon@joyful.com> and
|
|
contributors and released as Free Software under GPL version 3 or later.
|
|
|
|
Installing
|
|
..........
|
|
|
|
hledger works on all major platforms. One of these pre-built binaries_ might work for you.
|
|
If not, please `report the problem <http://hledger.org/README2.html#support>`_, then
|
|
install the `Haskell Platform`_ and type::
|
|
|
|
cabal update
|
|
cabal install hledger
|
|
|
|
You can add some options to the install command to include extra features:
|
|
|
|
- Add ``-fvty`` to build the `ui <#ui>`_ command. This is not available on microsoft windows.
|
|
|
|
- Add ``-fweb`` to build the `web <#web>`_ command.
|
|
|
|
- Add ``-fchart`` to build the `chart <#chart>`_ command. This requires
|
|
gtk2hs_, which you'll need to install yourself as it's not yet provided
|
|
by the haskell platform or cabal.
|
|
|
|
Here are some issues that have been encountered, with workarounds:
|
|
|
|
- In some cases, cabal install can fail with a compilation or link error
|
|
due to incompatible package versions. You can sometimes work around this
|
|
by specifying versions manually. Eg here's a recipe for haskell platform
|
|
2009.2.0.2 on MS Windows::
|
|
|
|
cabal install hledger -fweb --constraint="haskell-src-meta < 0.0.6" --constraint="syb-with-class < 0.6.1"
|
|
|
|
- A ghc panic while building might be due to http://hackage.haskell.org/trac/ghc/ticket/3862
|
|
|
|
Basic usage
|
|
...........
|
|
|
|
hledger looks for your ledger file at ~/.ledger by default. To use a
|
|
different file, specify it with the LEDGER environment variable or -f
|
|
option (which may be - for standard input). Basic usage is::
|
|
|
|
hledger [OPTIONS] [COMMAND [PATTERNS]]
|
|
|
|
COMMAND is one of balance, print, register, ui, web, test (defaulting to
|
|
balance). PATTERNS are zero or more regular expressions used to filter by
|
|
account name or transaction description. Here are some commands to try
|
|
(after downloading sample.ledger_)::
|
|
|
|
export LEDGER=sample.ledger
|
|
hledger --help # show usage & options
|
|
hledger balance # all accounts with aggregated balances
|
|
hledger bal --depth 1 # only top-level accounts
|
|
hledger register # transaction register
|
|
hledger reg income # transactions to/from an income account
|
|
hledger reg checking # checking transactions
|
|
hledger reg desc:shop # transactions with shop in the description
|
|
hledger histogram # transactions per day, or other interval
|
|
hledger ui # curses ui, if installed with -fvty
|
|
hledger web # web ui, if installed with -fweb
|
|
hledger chart # make a balance chart, if installed with -fchart
|
|
hledger -f new.ledger add # record transactions from the command line
|
|
|
|
Reference
|
|
---------
|
|
|
|
Feature overview
|
|
................
|
|
|
|
This version of hledger mimics a subset of ledger 3.x, and adds some
|
|
features of its own. We currently support regular ledger entries, timelog
|
|
entries, multiple commodities, price history (for fixed-rate
|
|
transactions), virtual postings, filtering by account and description, the
|
|
familiar print, register & balance commands and several new commands. We
|
|
handle (almost) the full period expression syntax, and very limited
|
|
display expressions consisting of a simple date predicate.
|
|
|
|
Here is the command-line help::
|
|
|
|
$ hledger --help
|
|
Usage: hledger [OPTIONS] [COMMAND [PATTERNS]]
|
|
hours [OPTIONS] [COMMAND [PATTERNS]]
|
|
hledger convert CSVFILE
|
|
|
|
hledger uses your ~/.ledger or $LEDGER file (or another specified with -f),
|
|
while hours uses your ~/.timelog or $TIMELOG file.
|
|
|
|
COMMAND is one of (may be abbreviated):
|
|
add - prompt for new transactions and add them to the ledger
|
|
balance - show accounts, with balances
|
|
convert - read CSV bank data and display in ledger format
|
|
histogram - show a barchart of transactions per day or other interval
|
|
print - show transactions in ledger format
|
|
register - show transactions as a register with running balance
|
|
stats - show various statistics for a ledger
|
|
ui - run a simple text-based UI
|
|
web - run a simple web-based UI
|
|
chart - generate a balances pie chart
|
|
test - run self-tests
|
|
|
|
PATTERNS are regular expressions which filter by account name.
|
|
Prefix with desc: to filter by transaction description instead.
|
|
Prefix with not: to negate a pattern. When using both, not: comes last.
|
|
|
|
DATES can be y/m/d or ledger-style smart dates like "last month".
|
|
|
|
Options:
|
|
-f FILE --file=FILE use a different ledger/timelog file; - means stdin
|
|
--no-new-accounts don't allow to create new accounts
|
|
-b DATE --begin=DATE report on transactions on or after this date
|
|
-e DATE --end=DATE report on transactions before this date
|
|
-p EXPR --period=EXPR report on transactions during the specified period
|
|
and/or with the specified reporting interval
|
|
-C --cleared report only on cleared transactions
|
|
-U --uncleared report only on uncleared transactions
|
|
-B --cost, --basis report cost of commodities
|
|
--depth=N hide accounts/transactions deeper than this
|
|
-d EXPR --display=EXPR show only transactions matching EXPR (where
|
|
EXPR is 'dOP[DATE]' and OP is <, <=, =, >=, >)
|
|
--effective use transactions' effective dates, if any
|
|
-E --empty show empty/zero things which are normally elided
|
|
-R --real report only on real (non-virtual) transactions
|
|
--no-total balance report: hide the final total
|
|
-W --weekly register report: show weekly summary
|
|
-M --monthly register report: show monthly summary
|
|
-Q --quarterly register report: show quarterly summary
|
|
-Y --yearly register report: show yearly summary
|
|
-h --help show this help
|
|
-V --version show version information
|
|
-v --verbose show verbose test output
|
|
--binary-filename show the download filename for this hledger build
|
|
--debug show extra debug output; implies verbose
|
|
--debug-no-ui run ui commands with no output
|
|
-o FILE --output=FILE chart: output filename (default: hledger.png)
|
|
--items=N chart: number of accounts to show (default: 10)
|
|
--size=WIDTHxHEIGHT chart: image size (default: 600x400)
|
|
|
|
File format
|
|
...........
|
|
|
|
hledger's data file (aka "the ledger") is a readable plain text
|
|
representation of an accounting journal. The format is mostly identical
|
|
with c++ ledger's. Here's an example::
|
|
|
|
; A sample ledger file.
|
|
|
|
2008/01/01 income
|
|
assets:bank:checking $1
|
|
income:salary
|
|
|
|
2008/06/01 gift
|
|
assets:bank:checking $1
|
|
income:gifts
|
|
|
|
2008/06/02 save
|
|
assets:bank:saving $1
|
|
assets:bank:checking
|
|
|
|
2008/06/03 * eat & shop
|
|
expenses:food $1
|
|
expenses:supplies $1
|
|
assets:cash
|
|
|
|
2008/12/31 * pay off
|
|
liabilities:debts $1
|
|
assets:bank:checking
|
|
|
|
Each transaction has a date, description, and two or more postings (of
|
|
some amount to some account) which must balance to 0. As a convenience,
|
|
the last posting's amount may be left blank and will be inferred.
|
|
|
|
Note that account names may contain single spaces, and the amount must be
|
|
separated from the account name by at least two spaces.
|
|
|
|
Other c++ ledger features like effective dates, comments, and prices
|
|
are also supported. Some additional features like modifier and periodic
|
|
entries are accepted, but ignored.
|
|
|
|
Compatibility
|
|
"""""""""""""
|
|
|
|
Compared to c++ ledger, hledger's file format has some omissions (we do
|
|
not support all the latest ledger 3 syntax like @@ and {}) and some subtle
|
|
punctuation differences (eg comments may be permissible in different
|
|
places.)
|
|
|
|
Generally, as long as you avoid the more esoteric syntax, your ledger
|
|
files will work with both hledger and c++ ledger (or, it will be easy to
|
|
restore compatibility by making small adjustments.)
|
|
|
|
Commands
|
|
........
|
|
|
|
Reporting commands
|
|
""""""""""""""""""
|
|
|
|
print
|
|
'''''
|
|
|
|
The print command displays full transactions from the ledger file, tidily
|
|
formatted and showing all amounts explicitly. The output of print is
|
|
always valid ledger data.
|
|
|
|
hledger's print command also shows all unit prices in effect, or
|
|
(with -B/--cost) shows cost amounts.
|
|
|
|
register
|
|
''''''''
|
|
|
|
The register command displays postings, one per line, and their running total.
|
|
|
|
balance
|
|
'''''''
|
|
|
|
The balance command displays accounts and their balances.
|
|
|
|
chart
|
|
'''''
|
|
|
|
The chart command saves a pie chart of your top account balances to a
|
|
file (usually "hledger.png", or use -o/--output FILE). You can adjust the
|
|
image resolution with --size=WIDTHxHEIGHT, and the number of accounts with
|
|
--items=N.
|
|
|
|
Note that positive and negative balances will not be displayed together in
|
|
the same chart; any balances not matching the sign of the first one will
|
|
be omitted.
|
|
|
|
To show only accounts above a certain depth, use the --depth option.
|
|
Otherwise, the chart can include accounts at any depth. If a parent and
|
|
child account are both displayed, the parent's balance excludes the child's.
|
|
|
|
Examples::
|
|
|
|
$ hledger chart assets --depth 2
|
|
$ hledger chart liabilities --depth 2
|
|
$ hledger chart ^expenses -o balance.png --size 1000x600 --items 20
|
|
$ for y in 2006 2007 2008 2009 2010; do hledger -f $y.ledger chart ^expenses --depth 2 -o expenses-$y.png; done
|
|
|
|
histogram
|
|
'''''''''
|
|
|
|
The histogram command displays a quick bar chart showing transaction
|
|
counts, per day, week, month or other reporting interval. It is
|
|
experimental.
|
|
|
|
stats
|
|
'''''
|
|
|
|
The stats command displays quick summary information for the ledger.
|
|
|
|
ui
|
|
'''
|
|
|
|
The ui command starts hledger's text-based "curses" interface, which
|
|
allows interactive navigation of the print/register/balance reports.
|
|
|
|
Modifying commands
|
|
""""""""""""""""""
|
|
|
|
add
|
|
'''
|
|
|
|
The add command prompts interactively for new transactions, and adds them
|
|
to the ledger. It is experimental.
|
|
|
|
web
|
|
'''
|
|
|
|
The web command starts hledger's web interface, and tries to open a web
|
|
browser to view it (if this fails, you'll have to visit the indicated url
|
|
yourself.) The web ui combines the features of the print, register,
|
|
balance and add commands. It is experimental.
|
|
|
|
Other commands
|
|
""""""""""""""
|
|
|
|
convert
|
|
'''''''
|
|
|
|
The convert command reads a CSV_ file you have downloaded from your bank,
|
|
and prints out the transactions in ledger format, suitable for adding to
|
|
your ledger. This can be a lot quicker than entering every transaction by
|
|
hand. (The downside is that you are less likely to notice if your bank makes an
|
|
error!)
|
|
|
|
Use it like this::
|
|
|
|
hledger convert FILE.csv >FILE.ledger
|
|
|
|
where FILE.csv is your downloaded csv file. This will convert the csv data
|
|
using conversion rules defined in FILE.rules (auto-creating this file if
|
|
needed), and save the output into a temporary ledger file. Then you
|
|
should review FILE.ledger for problems; update the rules and convert again
|
|
if needed; and finally copy/paste transactions which are new into your
|
|
main ledger.
|
|
|
|
Rules file
|
|
,,,,,,,,,,
|
|
|
|
A .rules file contains some data definitions and some rules for assigning
|
|
destination accounts to transactions. Typically you will have one csv file
|
|
and one rules file per bank account. Here's an example rules file for
|
|
converting csv data from a Wells Fargo checking account::
|
|
|
|
base-account assets:bank:checking
|
|
date-field 0
|
|
description-field 4
|
|
amount-field 1
|
|
currency $
|
|
|
|
# account-assigning rules
|
|
|
|
SPECTRUM
|
|
expenses:health:gym
|
|
|
|
ITUNES
|
|
BLKBSTR=BLOCKBUSTER
|
|
expenses:entertainment
|
|
|
|
(TO|FROM) SAVINGS
|
|
assets:bank:savings
|
|
|
|
This says:
|
|
|
|
- the ledger account corresponding to this csv file is assets:bank:checking
|
|
- the first csv field is the date, the second is the amount, the fifth is the description
|
|
- prepend a dollar sign to the amount field
|
|
- if description contains SPECTRUM (case-insensitive), the transaction is a gym expense
|
|
- if description contains ITUNES or BLKBSTR, the transaction is an entertainment expense; also rewrite BLKBSTR as BLOCKBUSTER
|
|
- if description contains TO SAVINGS or FROM SAVINGS, the transaction is a savings transfer
|
|
|
|
Notes:
|
|
|
|
- Lines beginning with # or ; are ignored (but avoid using inside an account rule)
|
|
|
|
- Definitions must come first, one per line, all in one paragraph. Each
|
|
is a name and a value separated by whitespace. Supported names are:
|
|
base-account, date-field, status-field, code-field, description-field,
|
|
amount-field, currency-field, currency. All are optional and will
|
|
use defaults if not specified.
|
|
|
|
- The remainder of the file is account-assigning rules. Each is a
|
|
paragraph consisting of one or more description-matching patterns
|
|
(case-insensitive regular expressions), one per line, followed by the
|
|
account name to use when the transaction's description matches any of
|
|
these patterns.
|
|
|
|
- A match pattern may optionally be followed by = and a replacement
|
|
pattern, which will become the ledger transaction's description.
|
|
Otherwise the matched part of the csv description is used. (To preserve
|
|
the full csv description, use .* before and after the match pattern.)
|
|
|
|
test
|
|
''''
|
|
|
|
This command runs hledger's internal self-tests and displays a quick report.
|
|
|
|
Smart dates
|
|
...........
|
|
|
|
hledger accepts "smart dates" in most places a date can be used, such as:
|
|
-b and -e options, and `period expressions <#period-expressions>`_
|
|
(but actually, not in the ledger file, which has more limited date parsing.)
|
|
Here are some examples:
|
|
|
|
- 2009/1/1, 2009/01/01, 2009-1-1, 2009.1.1, 2009/1, 2009 (january 1, 2009)
|
|
- 1/1, january, jan, this year (january 1, this year)
|
|
- next year (january 1, next year)
|
|
- this month (the 1st of the current month)
|
|
- this week (the most recent monday)
|
|
- last week (the monday of the week before this one)
|
|
- today, yesterday, tomorrow
|
|
|
|
Period expressions
|
|
..................
|
|
|
|
hledger supports flexible "period expressions" with the ``-p/--period``
|
|
option to select transactions within a period of time (like 2009) and/or
|
|
with a reporting interval (like weekly). hledger period expressions are
|
|
similar but not identical to c++ ledger's.
|
|
|
|
Here is a basic period expression specifying the first quarter of 2009
|
|
(start date is always included, end date is always excluded)::
|
|
|
|
-p "from 2009/1/1 to 2009/4/1"
|
|
|
|
Keywords like "from" and "to" are optional, and so are the spaces. Just
|
|
don't run two dates together::
|
|
|
|
-p2009/1/1to2009/4/1
|
|
-p"2009/1/1 2009/4/1"
|
|
|
|
Dates are `smart dates <#smart-dates>`_, so if the current year is 2009, the above can also
|
|
be written as::
|
|
|
|
-p "1/1 to 4/1"
|
|
-p "january to apr"
|
|
-p "this year to 4/1"
|
|
|
|
If you specify only one date, the missing start or end date will be the
|
|
earliest or latest transaction in your ledger data::
|
|
|
|
-p "from 2009/1/1" (everything after january 1, 2009)
|
|
-p "from 2009/1" (the same)
|
|
-p "from 2009" (the same)
|
|
-p "to 2009" (everything before january 1, 2009)
|
|
|
|
A single date with no "from" or "to" defines both the start and end date like so::
|
|
|
|
-p "2009" (the year 2009; equivalent to "2009/1/1 to 2010/1/1")
|
|
-p "2009/1" (the month of jan; equivalent to "2009/1/1 to 2009/2/1")
|
|
-p "2009/1/1" (just that day; equivalent to "2009/1/1 to 2009/1/2")
|
|
|
|
Reporting interval
|
|
""""""""""""""""""
|
|
|
|
You can also specify a reporting interval, which causes the "register"
|
|
command to summarise the transactions in each interval. It goes before the
|
|
dates, and can be: "daily", "weekly", "monthly", "quarterly", or
|
|
"yearly". An "in" keyword is optional, and so are the dates::
|
|
|
|
-p "weekly from 2009/1/1 to 2009/4/1"
|
|
-p "monthly in 2008"
|
|
-p "monthly from 2008"
|
|
-p "quarterly"
|
|
|
|
A reporting interval may also be specified with the -W/--weekly,
|
|
-M/--monthly, -Q/--quarterly, and -Y/--yearly options. However..
|
|
|
|
-p overrides other flags
|
|
""""""""""""""""""""""""
|
|
|
|
A period option on the command line will override any -b/-e/-W/-Q/-Y flags.
|
|
|
|
Display expressions
|
|
...................
|
|
|
|
A display expression with the ``-d/--display`` option selects which
|
|
transactions will be displayed (unlike a `period expression
|
|
<#period-expressions>`_, which selects the transactions to be used for
|
|
calculation).
|
|
|
|
hledger currently supports a very small subset of c++ ledger's display
|
|
expressions, namely: transactions before or after a date. This is useful
|
|
for displaying your recent check register with an accurate running total.
|
|
Note the use of >= here to include the first of the month::
|
|
|
|
hledger register -d "d>=[this month]"
|
|
|
|
Prices
|
|
.............
|
|
|
|
As in c++ ledger, you can specify a per-unit price (or conversion rate) in
|
|
the following ways:
|
|
|
|
- **set the unit price for a single amount** by appending `` @ PRICE``, where
|
|
PRICE is another amount in a different commodity. Eg, here is one
|
|
hundred euros purchased at $1.35 per euro::
|
|
|
|
2009/1/2 x
|
|
expenses:foreign currency €100 @ $1.35
|
|
assets
|
|
|
|
- **set the unit price for a commodity as of a certain date** using "P"
|
|
historical price records. Eg, here we say the exchange rate for 1 euro
|
|
is $1.35 on 2009/1/1 (and thereafter, until a newer price record is
|
|
found)::
|
|
|
|
P 2009/1/1 € $1.35
|
|
|
|
2009/1/2 x
|
|
expenses:foreign currency €100
|
|
assets
|
|
|
|
The print command will show the unit prices in effect::
|
|
|
|
$ hledger print
|
|
2009/01/02 x
|
|
expenses:foreign currency €100 @ $1.35
|
|
assets €-100 @ $1.35
|
|
|
|
And to see amounts converted to their total cost, use the ``--cost/-B`` flag with any command::
|
|
|
|
$ hledger print --cost
|
|
2009/01/02 x
|
|
expenses:foreign currency $135.00
|
|
assets $-135.00
|
|
|
|
Notes:
|
|
|
|
- unlike c++ ledger we assume unit prices do not vary over time. This is
|
|
good for simple reporting of foreign currency transactions, but not for
|
|
tracking fluctuating-value investments or capital gains.
|
|
|
|
- a price is a simple amount with only one commodity. Ie you can't say an
|
|
orange is worth two grapes and an apple.
|
|
|
|
- ``--cost/-B`` does only one lookup step, ie it will not look up the
|
|
price of a price's commodity.
|
|
|
|
Timelog reporting
|
|
.................
|
|
|
|
hledger will also read timelog files in timeclock.el format. As a
|
|
convenience, if you invoke hledger via an "hours" symlink or copy, it uses
|
|
your timelog file (~/.timelog or $TIMELOG) by default, rather than your ledger.
|
|
|
|
Timelog entries look like this::
|
|
|
|
i 2009/03/31 22:21:45 some:project
|
|
o 2009/04/01 02:00:34
|
|
|
|
The clockin description is treated as an account name. Here are some
|
|
queries to try (after downloading sample.timelog_)::
|
|
|
|
ln -s `which hledger` ~/bin/hours # set up "hours" in your path
|
|
export TIMELOG=sample.timelog
|
|
hours # show all time balances
|
|
hours -p 'last week' # last week
|
|
hours -p thismonth # the space is optional
|
|
hours -p 'from 1/15' register project # project sessions since jan 15
|
|
hours -p 'weekly' reg --depth 1 -E # weekly time summary
|
|
|
|
This is a useful feature, if you can find a way to efficiently record
|
|
timelog entries. The "ti" and "to" scripts may be available from the c++
|
|
ledger 2.x repository. I use
|
|
`timeclock-x.el <http://www.emacswiki.org/emacs/timeclock-x.el>`_ and
|
|
`ledgerutils.el <http://joyful.com/repos/ledgertools/ledgerutils.el>`_
|
|
in emacs.
|
|
|
|
Differences from c++ ledger
|
|
...........................
|
|
|
|
hledger is written in the Haskell programming language. Haskell enables a
|
|
coding style known as pure lazy functional programming, which holds the
|
|
promise of more robust and maintainable software built with fewer lines of
|
|
code.
|
|
|
|
Features not supported
|
|
""""""""""""""""""""""
|
|
|
|
ledger features not currently supported include: modifier and periodic
|
|
entries, and the following options and commands::
|
|
|
|
Basic options:
|
|
-o, --output FILE write output to FILE
|
|
-i, --init-file FILE initialize ledger using FILE (default: ~/.ledgerrc)
|
|
-a, --account NAME use NAME for the default account (useful with QIF)
|
|
|
|
Report filtering:
|
|
-c, --current show only current and past entries (not future)
|
|
--period-sort EXPR sort each report period's entries by EXPR
|
|
-L, --actual consider only actual (non-automated) transactions
|
|
-r, --related calculate report using related transactions
|
|
--budget generate budget entries based on periodic entries
|
|
--add-budget show all transactions plus the budget
|
|
--unbudgeted show only unbudgeted transactions
|
|
--forecast EXPR generate forecast entries while EXPR is true
|
|
-l, --limit EXPR calculate only transactions matching EXPR
|
|
-t, --amount EXPR use EXPR to calculate the displayed amount
|
|
-T, --total EXPR use EXPR to calculate the displayed total
|
|
|
|
Output customization:
|
|
-n, --collapse Only show totals in the top-most accounts.
|
|
-s, --subtotal other: show subtotals
|
|
-P, --by-payee show summarized totals by payee
|
|
-x, --comm-as-payee set commodity name as the payee, for reporting
|
|
--dow show a days-of-the-week report
|
|
-S, --sort EXPR sort report according to the value expression EXPR
|
|
-w, --wide for the default register report, use 132 columns
|
|
--head COUNT show only the first COUNT entries (negative inverts)
|
|
--tail COUNT show only the last COUNT entries (negative inverts)
|
|
--pager PAGER send all output through the given PAGER program
|
|
-A, --average report average transaction amount
|
|
-D, --deviation report deviation from the average
|
|
-%, --percentage report balance totals as a percentile of the parent
|
|
--totals in the "xml" report, include running total
|
|
-j, --amount-data print only raw amount data (useful for scripting)
|
|
-J, --total-data print only raw total data
|
|
-y, --date-format STR use STR as the date format (default: %Y/%m/%d)
|
|
-F, --format STR use STR as the format; for each report type, use:
|
|
--balance-format --register-format --print-format
|
|
--plot-amount-format --plot-total-format --equity-format
|
|
--prices-format --wide-register-format
|
|
|
|
Commodity reporting:
|
|
--price-db FILE sets the price database to FILE (def: ~/.pricedb)
|
|
-L, --price-exp MINS download quotes only if newer than MINS (def: 1440)
|
|
-Q, --download download price information when needed
|
|
-O, --quantity report commodity totals (this is the default)
|
|
-V, --market report last known market value
|
|
-g, --performance report gain/loss for each displayed transaction
|
|
-G, --gain report net gain/loss
|
|
|
|
Commands:
|
|
xml [REGEXP]... print matching entries in XML format
|
|
equity [REGEXP]... output equity entries for matching accounts
|
|
prices [REGEXP]... display price history for matching commodities
|
|
entry DATE PAYEE AMT output a derived entry, based on the arguments
|
|
|
|
Other differences
|
|
"""""""""""""""""
|
|
|
|
* hledger recognises description and negative patterns by "desc:" and "not:" prefixes,
|
|
unlike ledger 3's free-form parser
|
|
* hledger doesn't require a space before command-line option values, you can write -f-
|
|
* hledger's weekly reporting intervals always start on mondays
|
|
* hledger shows start and end dates of the intervals requested, not just the span containing data
|
|
* hledger period expressions don't support "biweekly", "bimonthly", or "every N days/weeks/..."
|
|
* hledger always shows timelog balances in hours
|
|
* hledger splits multi-day timelog sessions at midnight
|
|
* hledger doesn't track the value of commodities with varying price;
|
|
prices are fixed as of the transaction date
|
|
* hledger print shows amounts for all postings, and shows unit prices for amounts which have them
|
|
|
|
Tips
|
|
....
|
|
|
|
- when writing a negative amount with a left-side currency symbol, the
|
|
minus goes after the symbol. Eg ``$-1`` not ``-$1``
|
|
|
|
- when combining desc: and not: in a filter pattern, not: goes last. Eg
|
|
``desc:not:...`` not ``not:desc:...``.
|
|
|
|
|
|
|
|
.. _hledger for techies: README2.html
|
|
.. _c++ ledger's manual: http://joyful.com/repos/ledger/doc/ledger.html
|
|
.. _John Wiegley's ledger: http://wiki.github.com/jwiegley/ledger
|
|
.. _sample.ledger: http://joyful.com/repos/hledger/sample.ledger
|
|
.. _sample.timelog: http://joyful.com/repos/hledger/sample.timelog
|
|
.. _binaries: http://hledger.org/binaries/
|
|
.. _Haskell Platform: http://hackage.haskell.org/platform/
|
|
.. _CSV: http://en.wikipedia.org/wiki/Comma-separated_values
|
|
.. _gtk2hs: http://www.haskell.org/gtk2hs/download/
|