Provided by: ledger_2.6.2-3.1_amd64 bug

NAME

       ledger - command-line accounting

SYNOPSIS

       ledger [options] command [acct-regex]... [-- payee-regex...]

DESCRIPTION

       Ledger is a command-line accounting tool with the moxie to exist.  It provides no bells or
       whistles, and returns the user to the days before user interfaces were even a twinkling in
       their father's CRT.

NOTE

       This  man page is a summary of the command-line usage of ledger along with a short example
       of a Ledger data file.  For more complete documentation see the Ledger  Reference  Manual,
       (via the info ledger command or otherwise).

COMMANDS

       All commands require a Ledger data file which can be specified with -f filename or via the
       LEDGER_FILE environment variable.

       The balance and register commands provide the primary functionality of Ledger and are used
       most frequently:

           bal, balance [REGEXP]...
               Reports  the  current  balance  of  all matching accounts.  If an account contains
               multiple types of commodities, each commodity's total is reported separately.

           reg, register [REGEXP]...
               Displays all the transactions occurring in the matching accounts,  line  by  line.
               The  output  from  register  is very close to what a typical checkbook, or single-
               account ledger, would look like.  It also shows  a  running  balance.   The  final
               running  balance  of any register should always be the same as the current balance
               of that account.

       Several commands are effectively variants of register.  These  commands  accept  the  same
       options and display the same transactions as register and differ only in the format of the
       output:

           print [REGEXP]...
               Displays transactions in a format that can be parsed  by  Ledger.   They  will  be
               properly  formatted  and  output  in  the  most economic form possible.  The print
               command can be a handy way to clean up a Ledger file whose formatting  has  gotten
               out of hand.

           xml [REGEXP]...
               Displays  transactions  in  an  XML  format that can then be read and processed by
               external tools.  Use the --totals option to include the running  total  with  each
               transaction.

           emacs [REGEXP]...
               Displays transactions in a format that can be read directly by Emacs Lisp.

       The remaining commands are each useful in particular circumstances:

           equity [REGEXP]...
               Prints  out  account  balances  as  if  they  were entries.  This makes it easy to
               establish the starting balances for accounts, (such as when beginning a new Ledger
               file to then archive previous years).

           prices [REGEXP]...
               Displays the price history for matching commodities.  The -A option is useful with
               this report to display the average running price,  or  -D  to  show  each  price's
               deviation from that average.

           pricedb [REGEXP]...
               Produces  the  same  information  as  prices but in a format that can be parsed by
               Ledger.

           entry DATE PAYEE AMOUNT
               Output a derived entry, based on the arguments and an account  matching  PAYEE  in
               the transacation history. If Ledger does not succeed in generating a new entry, an
               error is printed and the exit code is set to 1.

OPTIONS


   Basic options
       -h, --help
              Print a summary of the basic options  and  commands.   This  help  screen  is  also
              printed if ledger is run without a command.

       -H, --full-help
              Print a help message including all command-line options.

       -v, --version
              Prints  the  current  version  of Ledger and exits.  This is useful for sending bug
              reports, to let the author know which version of Ledger you are using.

       -f, --file FILE
              Reads FILE as a Ledger file.  Typically, the environment  variable  LEDGER_FILE  is
              set rather than using this command-line option.

       -o, --output FILE
              Redirects output from any command to FILE.  By default, all output goes to standard
              output.

       -i, --init-file FILE
              Causes FILE to be read by ledger before any other Ledger file.  This file  may  not
              contain  any  transactions, but it may contain option settings.  To specify options
              in the init file, use the same syntax as the command-line, but put each  option  on
              it's  own  line.   Option settings on the command-line or in the environment always
              take precedence over  settings  in  the  init  file.   The  default  init  file  is
              ~/.ledgerrc.

       --cache FILE
              Identifies  FILE  as the default binary cache file.  That is, whenever a command is
              finished a binary copy of the input files will be written to the  specified  cache,
              to  speed  up  the  loading  time of subsequent queries.  This filename can also be
              given using the environment variable LEDGER_CACHE or by  putting  the  option  into
              your init file.

       --no-cache
              Causes Ledger to always ignore the binary cache.

       -a, --account NAME
              Specifies the default account which QIF file transactions are assumed to relate to.

   Report filtering options
       These options change which transactions affect the outcome of a report, in ways other than
       just using regular expressions:

       -c,  --current
              Displays only entries occurring on or before the current date.

       -b, --begin DATE
              Constrains the report to entries on or after DATE.  Only entries  after  that  date
              will  be  calculated, which means that the running total in the balance report will
              always start at zero with the first matching entry.  Note: This is  different  from
              using --display to constrain what is displayed.

       -e, --end DATE
              Constrains  the  report  so  that entries on or after DATE are not considered.  The
              ending date is inclusive.

       -p, --period STR
              Sets the reporting period to STR.  This will subtotal all matching  entries  within
              each  period  separately,  making  it  easy to see weekly, monthly, quarterly, etc.
              transaction totals.  A period string can even specify the beginning and end of  the
              report  range,  using  simple  terms  like last june or next month.  For more using
              period expressions, see the Period Expressions  section  of  the  Ledger  Reference
              Manual.

       --period-sort EXPR
              Sorts  the  transactions  within  each  reporting period using the value expression
              EXPR.  This is most often useful when reporting monthly expenses.  For example,  to
              view the highest expense categories at the top of each month use:

              ledger -M --period-sort -At reg ^Expenses

       -C, --cleared
              Displays  only  transactions  whose  entry  has  been marked cleared (by placing an
              asterix to the right of the date).

       -U, --uncleared
              Displays only transactions whose entry has not been marked cleared (i.e., if  there
              is no asterix to the right of the date).

       -R, --real
              Displays  only  real transactions, not virtual.  A virtual transaction is indicated
              by surrounding the account name with  parentheses  or  brackets,  (see  the  Ledger
              Reference Manual for more on using virtual transactions).

       -L, --actual
              Displays  only  actual  transactions,  and  not  those  created  due  to  automated
              transactions.

       -r, --related
              Displays transactions that are related to whichever  transactions  would  otherwise
              have  matched  the  filtering  criteria.   In the register report, this shows where
              money went to, or the account it came from.  In the balance report,  it  shows  all
              the accounts affected by entries having a related transaction.

       --budget
              Display budgeted transactions only.

       --add-budget
              Shows  both  budgeted  and  unbudgeted  transactions.   This  option  is useful for
              displaying how close your actual transactions meet your budget.

       --unbudgeted
              Show only unbudgeted transactions.

       --forecast EXPR
              Projects your budget into the future, (while EXPR is true),  showing  how  it  will
              affect future balances.

       -l, --limit EXPR
              Calculate  only  transactions matching EXPR.  (See the Value Expressions section of
              Ledger Reference Manual for more details on possible values of EXPR  for  this  and
              other options.)

       -t, --amount EXPR
              Sets  the  value  expression  used  to  calculate  the value column in the register
              report, the account totals in the balance report, and the  values  printed  in  the
              equity report.

       -T, --total EXPR
              Sets  the  value  expression used for the totals column in the register and balance
              reports.  EXPR to calculate the displayed total.

   Output customization options
       -n, --collapse
              Causes entries in a register report with multiple transactions to be collapsed into
              a single, subtotaled entry.

       -s, --subtotal
              Causes  all  entries in a register report to be collapsed into a single, subtotaled
              entry.

       -P, --by-payee
              Reports subtotals by payee.

       -x, --comm-as-payee
              Changes  the  payee  of  every  transaction  to  be  the  commodity  used  in  that
              transaction.   This  can  be  useful  when  combined  with  other  options, such as
              -s, --sort.

       -E, --empty
              Includes even empty accounts in the balance report.

       -W, --weekly
              reports transaction totals by the week.  The week begins on whichever  day  of  the
              week  begins  the month containing that transaction.  To set a specific begin date,
              use a period string, such as --period weekly from DATE.

       -M, --monthly
              Reports transaction totals by month.

       -Y, --yearly
              Reports transaction totals by year.

       --dow  Reports transactions totals for each day of the week.  This is an easy way  to  see
              if weekend spending is more than on weekdays.

       -S, --sort EXPR
              Sorts  a report by comparing the values determined using the value expression EXPR.
              For example, using --sort date will sort by date, (useful if included  files  cover
              different  date  ranges),  and  --sort  -UT in the balance report will sort account
              balances from greatest to least, using the absolute value of the total.   For  more
              on  how  to  use value expressions, see the Value Expressions section of the Ledger
              Reference Manual.

       -w, --wide
              Causes the default register report to assume 132 columns instead of 80.

       --head COUNT
              Show only the first COUNT entries.  If a negative amount is given, it  will  invert
              the  meaning  of  the  flag  (instead  of the first five entries being printed, for
              example, it would print all but the first five).

       --tail COUNT
              Show only the last COUNT entries.  If a negative amount is given,  it  will  invert
              the  meaning  of  the  flag  (instead  of  the last five entries being printed, for
              example, it would print all but the last five).

       --pager PAGER
              Tells ledger to pass its output to the given pager program---very useful  when  the
              output  is  especially  long.  This behavior can be made the default by setting the
              LEDGER_PAGER environment variable.

       -A, --average
              Reports the average transaction value.

       -D, --deviation
              Reports each transaction's deviation from the average.  It is  only  meaningful  in
              the register and prices reports.

       -%, --percentage
              Shows account subtotals in the balance report as percentages of the parent account.

       --totals
              Include running total information in the xml report.

       -j, --amount-data
              Changes  the  register report so that it outputs nothing but the date and the value
              column, and the latter without commodities.  This is only meaningful if the  report
              uses  a single commodity.  This data can then be fed to other programs, which could
              plot the date, analyze it, etc.

       -J, --total-data
              Changes the register report so that it outputs nothing  but  the  date  and  totals
              column, without commodities.

       -d, --display EXPR
              Limits  which  transactions  or  accounts  or actually displayed in a report.  They
              might still be calculated, and be part of the running total of a  register  report,
              for example, but they will not be displayed.

       -y, --date-format STR
              Changes  the  basic  date  format  used  by  reports.  The default uses a date like
              2004/08/01, which represents the default date format of %Y/%m/%d.   To  change  the
              way dates are printed in general, the easiest way is to put --date-format FORMAT in
              the  Ledger  initialization  file  ~/.ledgerrc  (or  the  file   referred   to   by
              LEDGER_INIT).

       -F, --format STR
              Sets  the  reporting  format  for whatever report ledger is about to make.  See the
              Format Strings section of the Ledger Reference Manual for details.

   Commodity price options
       These options affect how commodity values are displayed:

       --price-db FILE
              Sets the file that is used for recording downloaded commodity prices.  It is always
              read on startup, to determine historical prices.  The default file is ~/.pricedb.

       -L, --price-exp MINS
              Sets  the  expected  freshness  of  price quotes, in minutes.  That is, if the last
              known quote for any commodity is older than this value---and if --download is being
              used---then the internet will be consulted again for a newer price.  Otherwise, the
              old price is still considered to be fresh enough.  (Default value is 1440 minutes.)

       -Q, --download
              Causes quotes to be automatically downloaded, as needed, by running a script  named
              getquote  and  expecting  that  script  to  return a value understood by ledger.  A
              sample implementation of a getquote script, implemented in Perl, is provided in the
              distribution.   Downloaded  quote  price  are  then appended to the price database,
              usually specified using the environment variable LEDGER_PRICE_DB.

   Commodity reporting options
       There are several different ways that ledger can report the totals it displays.  The  most
       flexible  way  to  adjust  them  is  by using value expressions and the -t and -T options.
       However, there are also several standard reports, which will  satisfy  most  users'  basic
       reporting needs:

       -O, --quantity
              Reports commodity totals (this is the default).

       -B, --basis
              Reports the cost basis for all transactions.

       -V, --market
              Reports the last known market value for all commodities.

       -g, --performance
              Reports the net gain/loss for each transaction in a register report.

       -G, --gain
              Reports  the  net  gain/loss  for  all  commodities in the report that have a price
              history.

ENVIRONMENT

       Every option to ledger may be set using an environment variable.  If an option has a  long
       name  such  as --this-option then setting the environment variable LEDGER_THIS_OPTION will
       have the same effect as specifying that  option  on  the  command-line.   Options  on  the
       command-line  always  take  precedence  over environment variable settings, however.  Note
       that you may also permanently specify option values by placing option settings in the file
       ~/.ledgerrc  by  default,  (or  the  file  specified  by  the LEDGER_INIT_FILE environment
       variable).

       Of special note is the LEDGER_FILE environment variable which almost all users  of  Ledger
       will find convenient:

       LEDGER_FILE
              Set  to  a  file, to be read by the ledger command.  This avoids the requirement to
              pass --file FILE to every invocation of ledger.

EXAMPLE

       Here is sample data file (ledger.dat from the  distribution)  demonstrating  most  of  the
       features   of  the  ledger  data-file  format.   These  include  comments  (;),  automated
       transactions (=), virtual transactions ( (account-name) ), periodic (budget)  transactions
       (~),  cleared  transactions  (*),  commodity  transactions (SYMBOL @), and check numbers (
       (NUMBER) ).

           ; Sample file ledger.dat

           ; An automated transaction to a virtual account
           = /^Expenses:Books/
             (Liabilities:Taxes)             -0.10

           ; A periodic (budget) transaction
           ~ Monthly
             Assets:Bank:Checking          $500.00
             Income:Salary

           ; A cleared transaction
           2004/05/01 * Checking balance
             Assets:Bank:Checking        $1,000.00
             Equity:Opening Balances

           ; A transaction involving multiple commodities
           2004/05/01 * Investment balance
             Assets:Brokerage              50 AAPL @ $30.00
             Equity:Opening Balances

           2004/05/14 * Pay day
             Assets:Bank:Checking          $500.00
             Income:Salary

           2004/05/27 Book Store
             Expenses:Books                 $20.00
             Liabilities:MasterCard

           ; A transaction with a check number
           2004/05/27 (100) Credit card company
             Liabilities:MasterCard         $20.00
             Assets:Bank:Checking

SEE ALSO

       The Ledger Reference Manual available via info ledger if  ledger  and  info  are  properly
       installed.

       The ledger homepage: http://wiki.github.com/jwiegley/ledger