Querying ZFS Properties for Scripting

The zfs get command supports the -H and -o options, which are designed for scripting. You can use the -H option to omit header information and to replace white space with the Tab character. Uniform white space allows for easily parsable data. You can use the -o option to customize the output in the following ways:

  • The literal name can be used with a comma-separated list of properties as defined in the Introducing ZFS Properties section.

  • A comma-separated list of literal fields, name, value, property, and source, to be output followed by a space and an argument, which is a comma-separated list of properties.

The following example shows how to retrieve a single value by using the -H and -o options of zfs get:

$ zfs get -H -o value compression tank/home
on

The -p option reports numeric values as their exact values. For example, 1 MB would be reported as 1000000. This option can be used as follows:

$ zfs get -H -o value -p used tank/home
182983742

You can use the -r option, along with any of the preceding options, to recursively retrieve the requested values for all descendents. The following example uses the -H, -o, and -r options to retrieve the file system name and the value of the used property for export/home and its descendents, while omitting the header output:

$ zfs get -H -o name,value -r used export/home