;doc: cli: move a few more things around
This commit is contained in:
parent
dabcee45f1
commit
20b17a9108
@ -75,8 +75,8 @@ _notinfo_({{
|
|||||||
This manual is for hledger's command line interface, version
|
This manual is for hledger's command line interface, version
|
||||||
_version_. It also describes the concepts and file formats common to
|
_version_. It also describes the concepts and file formats common to
|
||||||
all hledger programs. You can read it on hledger.org, or as an info
|
all hledger programs. You can read it on hledger.org, or as an info
|
||||||
manual or man page on your system. It is detailed, often too much so
|
xmanual or man page on your system. It is detailed and not entirely linear,
|
||||||
when you are learning - so feel free to read just the parts you need.
|
so you should feel free to skip ahead / read just the parts you need.
|
||||||
|
|
||||||
m4_dnl Include the standard description:
|
m4_dnl Include the standard description:
|
||||||
_hledgerdescription_
|
_hledgerdescription_
|
||||||
@ -447,6 +447,63 @@ With the `-s`/`--strict` flag, additional checks are performed:
|
|||||||
You can use the [check](#check) command to run individual checks -- the
|
You can use the [check](#check) command to run individual checks -- the
|
||||||
ones listed above and some more.
|
ones listed above and some more.
|
||||||
|
|
||||||
|
# COMMANDS
|
||||||
|
|
||||||
|
hledger provides a number of built-in subcommands (described [below](#part-4-commands)).
|
||||||
|
Most of these read your data without changing it, and display a report.
|
||||||
|
A few assist with data entry and management.
|
||||||
|
|
||||||
|
Run `hledger` with no arguments to list the commands available,
|
||||||
|
and `hledger CMD` to run a command. CMD can be the full command name,
|
||||||
|
or its standard abbreviation shown in the commands list,
|
||||||
|
or any unambiguous prefix of the name.
|
||||||
|
Eg: `hledger bal`.
|
||||||
|
|
||||||
|
m4_dnl XXX maybe later
|
||||||
|
m4_dnl Each command's detailed docs are available :
|
||||||
|
m4_dnl
|
||||||
|
m4_dnl - command line help, eg: `hledger balance --help`
|
||||||
|
m4_dnl -
|
||||||
|
m4_dnl - info manuals, eg: `hledger help --info hledger` (or possibly `info hledger`) <!-- -> m4_dnl Commands -> balance -->
|
||||||
|
m4_dnl - web manuals, eg: <https://hledger.org/hledger.html#balance>
|
||||||
|
m4_dnl <!-- - man pages, eg: `man hledger-balance` -->
|
||||||
|
|
||||||
|
## Add-on commands
|
||||||
|
<!-- #add-on-commands: the long explanation of add-on commands. See also #addons. -->
|
||||||
|
|
||||||
|
Add-on commands are extra subcommands provided by programs or scripts in your PATH
|
||||||
|
|
||||||
|
- whose name starts with `hledger-`
|
||||||
|
- whose name ends with a recognised file extension:
|
||||||
|
`.bat`,`.com`,`.exe`, `.hs`,`.lhs`,`.pl`,`.py`,`.rb`,`.rkt`,`.sh` or none
|
||||||
|
- and (on unix, mac) which are executable by the current user.
|
||||||
|
|
||||||
|
Addons can be written in any language, but haskell scripts or programs have a big advantage:
|
||||||
|
they can use hledger's library code, for command-line options, parsing and reporting.
|
||||||
|
|
||||||
|
Several add-on commands are installed by the
|
||||||
|
[hledger-install script](https://hledger.org/install.html#build-methods).
|
||||||
|
See <https://hledger.org/scripts.html> for more details.
|
||||||
|
|
||||||
|
|
||||||
|
Note in a hledger command line, add-on command flags must have a double dash (`--`) preceding them.
|
||||||
|
Eg you must write:
|
||||||
|
```shell
|
||||||
|
$ hledger web -- --serve
|
||||||
|
```
|
||||||
|
and not:
|
||||||
|
```shell
|
||||||
|
$ hledger web --serve
|
||||||
|
```
|
||||||
|
(because the `--serve` flag belongs to `hledger-web`, not `hledger`).
|
||||||
|
|
||||||
|
The `-h/--help` and `--version` flags don't require `--`.
|
||||||
|
|
||||||
|
If you have any trouble with this, remember you can always run the add-on program directly, eg:
|
||||||
|
```shell
|
||||||
|
$ hledger-web --serve
|
||||||
|
```
|
||||||
|
|
||||||
# OUTPUT
|
# OUTPUT
|
||||||
|
|
||||||
## Output destination
|
## Output destination
|
||||||
@ -725,7 +782,57 @@ $ LANG=en_US.UTF-8 hledger -f my.journal print
|
|||||||
```
|
```
|
||||||
# PART 2: CONCEPTS
|
# PART 2: CONCEPTS
|
||||||
|
|
||||||
|
# DEPTH
|
||||||
|
|
||||||
|
With the `--depth NUM` option (short form: `-NUM`),
|
||||||
|
reports will show accounts only to the specified depth, hiding deeper subaccounts.
|
||||||
|
Use this when you want a summary with less detail.
|
||||||
|
This flag has the same effect as a `depth:` query argument: `depth:2`, `--depth=2` or `-2` are equivalent.
|
||||||
|
|
||||||
# TIME PERIODS
|
# TIME PERIODS
|
||||||
|
<a name="report-period"></a>
|
||||||
|
|
||||||
|
## Report start & end date
|
||||||
|
|
||||||
|
By default, most hledger reports will show the full span of time represented by the journal data.
|
||||||
|
The report start date will be the earliest transaction or posting date,
|
||||||
|
and the report end date will be the latest transaction, posting, or market price date.
|
||||||
|
|
||||||
|
Often you will want to see a shorter time span, such as the current month.
|
||||||
|
You can specify a start and/or end date using
|
||||||
|
[`-b/--begin`](#reporting-options),
|
||||||
|
[`-e/--end`](#reporting-options),
|
||||||
|
[`-p/--period`](#period-expressions)
|
||||||
|
or a [`date:` query](#queries) (described below).
|
||||||
|
All of these accept the [smart date](#smart-dates) syntax (below).
|
||||||
|
|
||||||
|
Some notes:
|
||||||
|
|
||||||
|
- End dates are exclusive, as in Ledger, so you should write the date *after*
|
||||||
|
the last day you want to see in the report.
|
||||||
|
- As noted in [reporting options](#general-options):
|
||||||
|
among start/end dates specified with *options*, the last (i.e. right-most)
|
||||||
|
option takes precedence.
|
||||||
|
- The effective report start and end dates are the intersection of the
|
||||||
|
start/end dates from options and that from `date:` queries.
|
||||||
|
That is, `date:2019-01 date:2019 -p'2000 to 2030'` yields January 2019, the
|
||||||
|
smallest common time span.
|
||||||
|
- A [report interval](#report-intervals) (see below) will adjust start/end dates,
|
||||||
|
when needed, so that they fall on subperiod boundaries.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|--------------------|---------------------------------------------------------------------------------------------|
|
||||||
|
| `-b 2016/3/17` | begin on St. Patrick’s day 2016 |
|
||||||
|
| `-e 12/1` | end at the start of december 1st of the current year (11/30 will be the last date included) |
|
||||||
|
| `-b thismonth` | all transactions on or after the 1st of the current month |
|
||||||
|
| `-p thismonth` | all transactions in the current month |
|
||||||
|
| `date:2016/3/17..` | the above written as queries instead (`..` can also be replaced with `-`) |
|
||||||
|
| `date:..12/1` | |
|
||||||
|
| `date:thismonth..` | |
|
||||||
|
| `date:thismonth` | |
|
||||||
|
|
||||||
## Smart dates
|
## Smart dates
|
||||||
|
|
||||||
hledger's user interfaces accept a flexible "smart date" syntax.
|
hledger's user interfaces accept a flexible "smart date" syntax.
|
||||||
@ -763,49 +870,6 @@ Note "today's date" can be overridden with the `--today` option, in case it's
|
|||||||
needed for testing or for recreating old reports. (Except for periodic
|
needed for testing or for recreating old reports. (Except for periodic
|
||||||
transaction rules; those are not affected by `--today`.)
|
transaction rules; those are not affected by `--today`.)
|
||||||
|
|
||||||
<a name="report-period"></a>
|
|
||||||
|
|
||||||
## Report start & end date
|
|
||||||
|
|
||||||
By default, most hledger reports will show the full span of time represented by the journal data.
|
|
||||||
The report start date will be the earliest transaction or posting date, and the report end date
|
|
||||||
will be the latest transaction, posting, or market price date.
|
|
||||||
|
|
||||||
Often you will want to see a shorter time span, such as the current month.
|
|
||||||
You can specify a start and/or end date using
|
|
||||||
[`-b/--begin`](#reporting-options),
|
|
||||||
[`-e/--end`](#reporting-options),
|
|
||||||
[`-p/--period`](#period-expressions)
|
|
||||||
or a [`date:` query](#queries) (described below).
|
|
||||||
All of these accept the [smart date](#smart-dates) syntax.
|
|
||||||
|
|
||||||
Some notes:
|
|
||||||
|
|
||||||
- End dates are exclusive, as in Ledger, so you should write the date *after*
|
|
||||||
the last day you want to see in the report.
|
|
||||||
- As noted in [reporting options](#general-options):
|
|
||||||
among start/end dates specified with *options*, the last (i.e. right-most)
|
|
||||||
option takes precedence.
|
|
||||||
- The effective report start and end dates are the intersection of the
|
|
||||||
start/end dates from options and that from `date:` queries.
|
|
||||||
That is, `date:2019-01 date:2019 -p'2000 to 2030'` yields January 2019, the
|
|
||||||
smallest common time span.
|
|
||||||
- A [report interval](#report-intervals) (see below) will adjust start/end dates,
|
|
||||||
when needed, so that they fall on subperiod boundaries.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
| | |
|
|
||||||
|--------------------|---------------------------------------------------------------------------------------------|
|
|
||||||
| `-b 2016/3/17` | begin on St. Patrick’s day 2016 |
|
|
||||||
| `-e 12/1` | end at the start of december 1st of the current year (11/30 will be the last date included) |
|
|
||||||
| `-b thismonth` | all transactions on or after the 1st of the current month |
|
|
||||||
| `-p thismonth` | all transactions in the current month |
|
|
||||||
| `date:2016/3/17..` | the above written as queries instead (`..` can also be replaced with `-`) |
|
|
||||||
| `date:..12/1` | |
|
|
||||||
| `date:thismonth..` | |
|
|
||||||
| `date:thismonth` | |
|
|
||||||
|
|
||||||
## Report intervals
|
## Report intervals
|
||||||
|
|
||||||
A report interval can be specified so that commands like
|
A report interval can be specified so that commands like
|
||||||
@ -1033,64 +1097,6 @@ Examples:
|
|||||||
| `-p "every weekday"` | dates will be Mon, Tue, Wed, Thu, Fri; <br>periods will be Mon, Tue, Wed, Thu, Fri-Sun |
|
| `-p "every weekday"` | dates will be Mon, Tue, Wed, Thu, Fri; <br>periods will be Mon, Tue, Wed, Thu, Fri-Sun |
|
||||||
| `-p "every weekendday"` | dates will be Sat, Sun; <br>periods will be Sat, Sun-Fri |
|
| `-p "every weekendday"` | dates will be Sat, Sun; <br>periods will be Sat, Sun-Fri |
|
||||||
|
|
||||||
# DEPTH
|
|
||||||
|
|
||||||
With the `--depth NUM` option (short form: `-NUM`),
|
|
||||||
commands like [account](#account), [balance](#balance) and [register](#register)
|
|
||||||
will show only the uppermost accounts in the account tree, down to level NUM.
|
|
||||||
Use this when you want a summary with less detail.
|
|
||||||
This flag has the same effect as a `depth:` query argument: `depth:2`, `--depth=2` or `-2` are equivalent.
|
|
||||||
|
|
||||||
# PIVOTING
|
|
||||||
|
|
||||||
`--pivot` is a general option affecting all reports.
|
|
||||||
<!-- (Not to be confused with `--transpose`, a `balance` command flag.) -->
|
|
||||||
Normally hledger groups and sums amounts by account name.
|
|
||||||
`--pivot FIELD` substitutes some other transaction field for account names,
|
|
||||||
causing amounts to be grouped and summed by that field's value instead.
|
|
||||||
Values containing `colon:separated:parts` will form a hierarchy, as with account names.
|
|
||||||
|
|
||||||
FIELD can be any of the transaction fields `status`, `code`, `description`, `payee`, `note`,
|
|
||||||
or a tag name. ([Transactions](#transactions) and [Tags](#tags-1) are explained below.)
|
|
||||||
|
|
||||||
Some examples:
|
|
||||||
|
|
||||||
```journal
|
|
||||||
2016/02/16 Member Fee Payment
|
|
||||||
assets:bank account 2 EUR
|
|
||||||
income:member fees -2 EUR ; member: John Doe
|
|
||||||
```
|
|
||||||
Normal balance report showing account names:
|
|
||||||
```shell
|
|
||||||
$ hledger balance
|
|
||||||
2 EUR assets:bank account
|
|
||||||
-2 EUR income:member fees
|
|
||||||
--------------------
|
|
||||||
0
|
|
||||||
```
|
|
||||||
Pivoted balance report, using member: tag values instead:
|
|
||||||
```shell
|
|
||||||
$ hledger balance --pivot member
|
|
||||||
2 EUR
|
|
||||||
-2 EUR John Doe
|
|
||||||
--------------------
|
|
||||||
0
|
|
||||||
```
|
|
||||||
One way to show only amounts with a member: value (using a [query](#queries), described below):
|
|
||||||
```shell
|
|
||||||
$ hledger balance --pivot member tag:member=.
|
|
||||||
-2 EUR John Doe
|
|
||||||
--------------------
|
|
||||||
-2 EUR
|
|
||||||
```
|
|
||||||
Another way (the acct: query matches against the pivoted "account name"):
|
|
||||||
```shell
|
|
||||||
$ hledger balance --pivot member acct:.
|
|
||||||
-2 EUR John Doe
|
|
||||||
--------------------
|
|
||||||
-2 EUR
|
|
||||||
```
|
|
||||||
|
|
||||||
# QUERIES
|
# QUERIES
|
||||||
|
|
||||||
One of hledger's strengths is being able to quickly report on a precise subset of your data.
|
One of hledger's strengths is being able to quickly report on a precise subset of your data.
|
||||||
@ -1270,6 +1276,66 @@ and `amt:` matches the new quantity, and not the old one.
|
|||||||
Note: this changed in hledger 1.22, previously it was the reverse,
|
Note: this changed in hledger 1.22, previously it was the reverse,
|
||||||
see the discussion at [#1625](https://github.com/simonmichael/hledger/issues/1625).
|
see the discussion at [#1625](https://github.com/simonmichael/hledger/issues/1625).
|
||||||
|
|
||||||
|
# GENERATING DATA
|
||||||
|
|
||||||
|
Two features for generating transient data (visible only at report time)
|
||||||
|
are built in to hledger's journal format. They are mentioned here
|
||||||
|
briefly and described below:
|
||||||
|
|
||||||
|
- Periodic transaction rules can generate repeating transactions,
|
||||||
|
usually dated in the future, to help with forecasting or budgeting.
|
||||||
|
They are activated by the `--forecast` or `balance --budget` options.
|
||||||
|
|
||||||
|
- Auto posting rules can generate extra postings on certain transactions.
|
||||||
|
They are activated by the `--auto` flag.
|
||||||
|
|
||||||
|
# PIVOTING
|
||||||
|
|
||||||
|
Normally, hledger groups and sums amounts within each account.
|
||||||
|
The `--pivot FIELD` option substitutes some other transaction field for account names,
|
||||||
|
causing amounts to be grouped and summed by that field's value instead.
|
||||||
|
FIELD can be any of the transaction fields `status`, `code`, `description`, `payee`, `note`,
|
||||||
|
or a tag name (transactions and tags are explained below).
|
||||||
|
Values containing `colon:separated:parts` will form a hierarchy, as account names do.
|
||||||
|
|
||||||
|
Some examples:
|
||||||
|
|
||||||
|
```journal
|
||||||
|
2016/02/16 Member Fee Payment
|
||||||
|
assets:bank account 2 EUR
|
||||||
|
income:member fees -2 EUR ; member: John Doe
|
||||||
|
```
|
||||||
|
Normal balance report showing account names:
|
||||||
|
```shell
|
||||||
|
$ hledger balance
|
||||||
|
2 EUR assets:bank account
|
||||||
|
-2 EUR income:member fees
|
||||||
|
--------------------
|
||||||
|
0
|
||||||
|
```
|
||||||
|
Pivoted balance report, using member: tag values instead:
|
||||||
|
```shell
|
||||||
|
$ hledger balance --pivot member
|
||||||
|
2 EUR
|
||||||
|
-2 EUR John Doe
|
||||||
|
--------------------
|
||||||
|
0
|
||||||
|
```
|
||||||
|
One way to show only amounts with a member: value (using a [query](#queries), described below):
|
||||||
|
```shell
|
||||||
|
$ hledger balance --pivot member tag:member=.
|
||||||
|
-2 EUR John Doe
|
||||||
|
--------------------
|
||||||
|
-2 EUR
|
||||||
|
```
|
||||||
|
Another way (the acct: query matches against the pivoted "account name"):
|
||||||
|
```shell
|
||||||
|
$ hledger balance --pivot member acct:.
|
||||||
|
-2 EUR John Doe
|
||||||
|
--------------------
|
||||||
|
-2 EUR
|
||||||
|
```
|
||||||
|
|
||||||
# COST
|
# COST
|
||||||
|
|
||||||
This section is about recording the cost of things, in transactions
|
This section is about recording the cost of things, in transactions
|
||||||
@ -5315,28 +5381,9 @@ file.
|
|||||||
<!-- $ hledger -f sample.timedot register -p weekly --depth 1 --empty # time summary by week -->
|
<!-- $ hledger -f sample.timedot register -p weekly --depth 1 --empty # time summary by week -->
|
||||||
<!-- ``` -->
|
<!-- ``` -->
|
||||||
|
|
||||||
<a name="commands"></a>
|
|
||||||
|
|
||||||
# PART 4: COMMANDS
|
# PART 4: COMMANDS
|
||||||
|
|
||||||
|
Here are the built-in [commands](#commands), with the most often-used in bold:
|
||||||
hledger provides a number of commands for producing reports and managing your data.
|
|
||||||
Run `hledger` with no arguments to list the commands available,
|
|
||||||
and `hledger CMD` to run a command. CMD can be the full command name,
|
|
||||||
or its standard abbreviation shown in the commands list,
|
|
||||||
or any unambiguous prefix of the name.
|
|
||||||
Eg: `hledger bal`.
|
|
||||||
|
|
||||||
m4_dnl XXX maybe later
|
|
||||||
m4_dnl Each command's detailed docs are available :
|
|
||||||
m4_dnl
|
|
||||||
m4_dnl - command line help, eg: `hledger balance --help`
|
|
||||||
m4_dnl -
|
|
||||||
m4_dnl - info manuals, eg: `hledger help --info hledger` (or possibly `info hledger`) <!-- -> m4_dnl Commands -> balance -->
|
|
||||||
m4_dnl - web manuals, eg: <https://hledger.org/hledger.html#balance>
|
|
||||||
m4_dnl <!-- - man pages, eg: `man hledger-balance` -->
|
|
||||||
|
|
||||||
Here are the built-in commands, with the most often-used in bold:
|
|
||||||
<!-- keep synced with Hledger.Cli.Commands.commandsList, commands.m4 -->
|
<!-- keep synced with Hledger.Cli.Commands.commandsList, commands.m4 -->
|
||||||
|
|
||||||
**Data entry:**
|
**Data entry:**
|
||||||
@ -5386,13 +5433,9 @@ These data entry commands are the only ones which can modify your journal file.
|
|||||||
<a name="addons"></a>
|
<a name="addons"></a>
|
||||||
<!-- #addons: the short explanation and list of common add-on commands. See also #add-on-commands. -->
|
<!-- #addons: the short explanation and list of common add-on commands. See also #add-on-commands. -->
|
||||||
|
|
||||||
**Add-on commands:**
|
And here are some typical [add-on commands](#add-on-commands)
|
||||||
|
installed by the [hledger-install script](https://hledger.org/install.html#build-methods).
|
||||||
Programs or scripts named `hledger-SOMETHING` in your PATH are
|
If installed, these will also appear in hledger's commands list, with a `+` mark:
|
||||||
[add-on commands](#add-on-commands); these appear in the
|
|
||||||
commands list with a `+` mark.
|
|
||||||
The following add-on commands can be installed, eg by the
|
|
||||||
[hledger-install script](https://hledger.org/install.html#build-methods):
|
|
||||||
|
|
||||||
- **[ui](hledger-ui.html)** - hledger's official curses-style TUI
|
- **[ui](hledger-ui.html)** - hledger's official curses-style TUI
|
||||||
- **[web](hledger-web.html)** - hledger's official web UI
|
- **[web](hledger-web.html)** - hledger's official web UI
|
||||||
@ -5407,45 +5450,11 @@ m4_dnl or the info or web format of this manual.
|
|||||||
m4_dnl }})
|
m4_dnl }})
|
||||||
m4_dnl _notman_({{
|
m4_dnl _notman_({{
|
||||||
|
|
||||||
Next, the detailed command docs, in alphabetical order.
|
Next, each command is described in detail, in alphabetical order.
|
||||||
|
|
||||||
m4_dnl cf Hledger/Cli/Commands/commands.m4:
|
m4_dnl cf Hledger/Cli/Commands/commands.m4:
|
||||||
_commands_({{##}})
|
_commands_({{##}})
|
||||||
|
|
||||||
## Add-on commands
|
|
||||||
<!-- #add-on-commands: the long explanation of add-on commands. See also #addons. -->
|
|
||||||
|
|
||||||
Add-on commands are programs or scripts in your PATH
|
|
||||||
|
|
||||||
- whose name starts with `hledger-`
|
|
||||||
- whose name ends with a recognised file extension:
|
|
||||||
`.bat`,`.com`,`.exe`, `.hs`,`.lhs`,`.pl`,`.py`,`.rb`,`.rkt`,`.sh` or none
|
|
||||||
- and (on unix, mac) which are executable by the current user.
|
|
||||||
|
|
||||||
Add-ons are a relatively easy way to add local features or experiment with new ideas.
|
|
||||||
They can be written in any language, but haskell scripts have a big advantage:
|
|
||||||
they can use the same hledger library functions that built-in commands use for command-line options, parsing and reporting.
|
|
||||||
Some experimental/example add-on scripts can be found in the hledger repo's
|
|
||||||
[bin/ directory](https://github.com/simonmichael/hledger/tree/master/bin).
|
|
||||||
|
|
||||||
Note in a hledger command line, add-on command flags must have a double dash (`--`) preceding them.
|
|
||||||
Eg you must write:
|
|
||||||
```shell
|
|
||||||
$ hledger web -- --serve
|
|
||||||
```
|
|
||||||
and not:
|
|
||||||
```shell
|
|
||||||
$ hledger web --serve
|
|
||||||
```
|
|
||||||
(because the `--serve` flag belongs to `hledger-web`, not `hledger`).
|
|
||||||
|
|
||||||
The `-h/--help` and `--version` flags don't require `--`.
|
|
||||||
|
|
||||||
If you have any trouble with this, remember you can always run the add-on program directly, eg:
|
|
||||||
```shell
|
|
||||||
$ hledger-web --serve
|
|
||||||
```
|
|
||||||
|
|
||||||
<a name="common-tasks"></a>
|
<a name="common-tasks"></a>
|
||||||
|
|
||||||
# PART 5: COMMON TASKS
|
# PART 5: COMMON TASKS
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user