---
name: "cfget"
section: "1"
platform: "linux"
package: "cfget"
version: "0.19-1.1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/cfget"
---

# cfget(1)

get values from a config file

## NAME

cfget - get values from a config file

## SYNOPSIS

**cfget** \[*options*\] *section/key*\
 **cfget** \[*options*\] *--dump=STYLE* \[*section/key* \[*section/key*...\]\]\
 **cfget** \[*options*\] *--template=STYLE* \[*infile* \[*outfile*\]\]

## DESCRIPTION

Get values from a config file.

cfget is a simple tool to read values from configuration files.  It is useful, for example, to create configurable shellscripts or makefiles.

It can also be configured to support virtual configuration values that, if not present in the config file, are automatically computed from the existing values. This makes it convenient, for example, to get a "duration" value from a configuration file that only contains a "start date" and an "end date".

## OPTIONS

- **--version**

  show program's version number and exit

- **-h**, **--help**

  show this help message and exit

- **-q**, **--quiet**

  quiet mode: only output fatal errors

- **-v**, **--verbose**

  verbose mode

- **--debug**

  verbose mode

- **-C** file, **--cfg**=*file*

  config file to read; the option can be given more than once to read more than one file. If missing, read a colon separated list from the CFGET\_CFG env variable.

- **-P** file, **--plugin**=*file*

  list of plugin files or directories to load. The option can be given more than once to read more than one file. If missing, read a colon separated list from the CFGET\_PLUGINS env variable.

- **-d** name, **--dump**=*name*

  dump the contents of the database using the given style. Use '--dump=list' for a list of available styles. If one or more paths are provided in the command line, dump only those paths, otherwise dump all.

- **-t** name, **--template**=*name*

  read a template file, expand template placeholders using the configuration data and output the result. Use '--template=list' for a list of available styles.

- **-f** name, **--format**=*name*

  use a custom configuration file format (default: ini). Use '--format=list' for a list of available formats. The CFGET\_FORMAT environment value, if defined, can be used to provide a different default value.

- **-r** path, **--root**=*path*

  restrict all work to values under the given path

## EXAMPLES

```
	# Get a key from a config file
	cfget -C file.ini general/name
	# More can be specified, they will be searched in order
	cfget -C general.ini -C local.ini general/name
	# Use a plugin to add virtual entries
	cfget -C file.ini --plugin=virtual.py general/name
	# A plugin can also a directory containing .py files
	# and plugins can also be specified more than once
	cfget -C file.ini --plugin=virtual.py --plugin=virtual/ general/name
	# In a shellscript, you may want to use environment variables if you
	# invoke cfget many times:
	#!/bin/sh
	CFGET_CFG=general.ini:local.ini
	CFGET_PLUGINS=virtual.py:virtual/
	START=`cfget general/start`
	END=`cfget general/end`
	DURATION=`cfget general/duration`
	# Quick way to copy all config values to the environment
	eval `cfget --dump=exports -C file.ini`
	# Autoconf-style template substitution
	cfget --template=autoconf -C file.ini script.in script
	# Curly braces substitude literally
	cfget -C file.ini "general/start_{general/type}"
	# One can use simple expressions
	cfget -C file.ini "general/start + general/duration"
	cfget -C file.ini "round(general/age / 2)"
```

## AUTHOR

**cfget** has been written by Enrico Zini \<enrico@enricozini.org\>.
