---
name: "feature-check"
section: "1"
platform: "linux"
package: "feature-check"
version: "2.2.0-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/feature-check"
---

# feature-check(1)

query a program for supported features

## NAME

**feature-check** – query a program for supported features

## SYNOPSIS

**feature-check** \[**-v**\] \[**-O** *optname*\] \[**-P** *prefix*\] *program* *feature-name*

**feature-check** \[**-O** *optname*\] \[**-P** *prefix*\] *program* *feature-name* *op* *version*

**feature-check** \[**-O** *optname*\] \[**-o** *json\|tsv*\] \[**-P** *prefix*\] **-l** *program*

**feature-check** **-V** \| **-h**

**feature-check** **--features**

## DESCRIPTION

The **feature-check** tool obtains the list of supported features from a program via various methods (e.g. running it with the **--features** command-line option) and allows other programs to check for the presence and, possibly, versions of specific features.

Options:

- **--features**

  List the compile-time features supported by this version of **feature-check**:

  - feature-check

    Always present, with the version of the **feature-check** tool.

  - list

    Present if the **feature-check** tool supports fetching the list of features supported by a program.

  - simple

    Present if the **feature-check** tool supports comparing the version of a single feature against a specified version string.

  - single

    Present if the **feature-check** tool supports querying a single feature.

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

  Display program usage output and exit.

- **-O** *optname*

  Specify the option to pass to the program to obtain its list of features (default **--features**).

- **-o** *format*

  Specify the output format for the full list of features with the **-l** option.

- **-P** *prefix*

  Specify the prefix that **feature-check** should look for in the program's output to find the line that contains the list of features; default "Features: ".

- **-V**, **--version**

  Display program version output and exit.

- **-v**

  When querying a single feature, output the version obtained for it.

## EXIT STATUS

When querying a single feature, **feature-check** will exit with code 0 if the program supports that feature, and with a non-zero code when either the program could not be executed, or its list of features could not be parsed, or the feature was not present.

When examining the version of a single feature, **feature-check** will exit with code 0 if the comparison result is true, and with a non-zero code when either the program could not be executed, or its list of features could not be parsed, or the comparison failed.

When listing the features supported by a program, **feature-check** will exit with code 0 when the list of features was obtained and output, and with a non-zero code when either the program could not be executed or its list of features could not be parsed.

## EXAMPLES

The following examples are shown as given to the shell:

```
feature-check curl AsynchDNS
```

Exit with code 0 if the [curl(1)](/curl/1.md) tool is present and it supports asynchronous DNS lookups.

```
feature-check -l confget
```

List the features supported by the [confget(1)](/confget/1.md) tool.

```
feature-check timelimit 'timelimit ge 1.9'
```

Exit with code 0 if the [timelimit(1)](/timelimit/1.md) tool advertises its timelimit feature at version 1.9 or later.

```
feature-check timelimit timelimit ge 1.9
```

The same check; note that the **feature-check** tool will treat all the arguments after the program name as a single expression, i.e. it will concatenate them into a single string separated by spaces and then interpret the string.

## STANDARDS

No standards documentation was harmed in the process of creating **feature-check**.

## BUGS

Please report any bugs in **feature-check** to the author.

## AUTHOR

The **feature-check** utility was written by Peter Pentchev ⟨roam@ringlet.net⟩ in 2018.
