Table of Contents
You can save frequently used options and arguments in an argument file, one per line, then reuse them via a @FILE argument on the command line. (hledger 1.4+)
Here's an example.
I keep frequently-used options for quick daily reports in a file
called simple.args
. The name can be anything; I use a .args
suffix
so I can find these easily. Here's the content of simple.args
:
--alias=/:(business|personal):/=:
--alias=/:(bank|cash|online):/=:
--alias=/:bofi:/=:b
--alias=/:unify:/=:u
--alias=/:wf:/=:w
-2
cur:.
The format is one command-line flag or command-line argument per line.
Now if I write @simple.args
in a hledger command line, it will be replaced
by all of the above options/flags.
The options above are just an example, but in case you're wondering:
- the aliases simplify the chart of accounts, hiding some distinctions (eg business vs. personal) and flattening some bank account names
- the
-2
depth flag limits account depth to 2, hiding deeper subaccounts - the
cur:.
query argument shows only single-character currencies, hiding a bunch of cluttersome commodities I don't want to see
Ie they remove some detail, giving simplified reports which are easier for me to read at a glance.
Usage
Generate a balance report showing the simplified accounts:
$ hledger bal @simple.args
Start a live-updating hledger-ui showing the simplified asset accounts only:
$ hledger-ui --watch @simple.args assets
Options in the arguments file can be overridden by similar options later on the command line, in the usual way. Eg, to show just a little more account detail:
$ hledger bal @simple.args -3
Quoting
Special characters in the arguments file may need to be quoted, depending on your shell (bash, fish etc.) They'll need one less level of quoting than on the command line. I think
$ hledger bal @simple.args
is equivalent to writing:
$ hledger bal "--alias=/:(business|personal):/=:" "--alias=/:(bank|cash|online):/=:" "--alias=/:bofi:/=:b" "--alias=/:unify:/=:u" "--alias=/:wf:/=:w" "-2" "cur:."
So in this example, using the bash shell, the |
pipe character did
not need to be quoted in the arguments file (and should not be).
Suppressing this feature
If you actually need to write an argument beginning with @,
eg let's say you have an account pattern beginning with that character,
you'll want a way to disable this feature. On unix systems at least,
you can do that by inserting a --
(double hyphen) argument first. Eg:
$ hledger bal @somewhere.com # looks for additional arguments in the ./somewhere.com file
$ hledger bal -- @somewhere.com # matches account names containing "@somewhere.com"
On windows, this double hyphen trick might require a hledger built with GHC 8.2+. (Let us know.)
This is the hledger Cookbook, part of the hledger website, managed in github. View in context at: hledger.org