.\" Copyright 2000 Andreas Dilger (adilger@turbolinux.com)
.\"
.\" This file may be copied under the terms of the GNU Public License.
.TH BLKID 8 "March 2013" "util-linux" "System Administration"
.SH NAME
blkid \- locate/print block device attributes
.SH SYNOPSIS
.B blkid
.BI \-L " label"
|
.BI \-U " uuid"

.B blkid
.RB [ \-dghlv ]
.RB [ \-c
.IR file ]
.RB [ \-o
.IR format ]
.RB [ \-s
.IR tag ]
.in +6
.RB [ \-t
.IR NAME=value ]
.RI [ device " ...]"
.in -6

.B blkid
.BR -p " [" \-O
.IR offset ]
.RB [ \-o
.IR format ]
.RB [ \-S
.IR size ]
.RB [ \-s
.IR tag ]
.in +9
.RB [ \-n
.IR list ]
.RB [ \-u
.IR list ]
.IR device " ..."
.in -9

.B blkid
.BR -i " [" \-o
.IR format ]
.RB [ \-s
.IR tag ]
.IR device " ..."

.SH DESCRIPTION
The
.B blkid
program is the command-line interface to working with the
.BR libblkid (3)
library.  It can determine the type of content (e.g. filesystem or swap)
that a block device holds, and also the attributes (tokens, NAME=value pairs)
from the content metadata (e.g. LABEL or UUID fields).
.PP
.B It is recommended to use
.BR lsblk (8)
.B command to get information about block devices rather than blkid.
.BR lsblk (8)
provides more information, better control on output formatting and it does not
require root permissions to get actual information.
.PP
When
.I device
is specified, tokens from only this device are displayed.
It is possible to specify multiple
.I device
arguments on the command line.
If none is given, all devices which appear in
.I /proc/partitions
are shown, if they are recognized.
.PP
Note that
.B blkid
reads information directly from devices and for non-root users
it returns cached unverified information.  It is better to use
.B lsblk --fs
to get a user-friendly overview of filesystems and devices.
.BR lsblk (8)
is also easy to use in scripts.
.B blkid
is mostly designed for system services and to test libblkid functionality.
.PP
.B blkid
has two main forms of operation: either searching for a device with a
specific NAME=value pair, or displaying NAME=value pairs for one or
more specified devices.
.SH OPTIONS
The \fIsize\fR and \fIoffset\fR arguments may be followed by the multiplicative
suffixes like KiB (=1024), MiB (=1024*1024), and so on for GiB, TiB, PiB, EiB, ZiB and YiB
(the "iB" is optional, e.g. "K" has the same meaning as "KiB"), or the suffixes
KB (=1000), MB (=1000*1000), and so on for GB, TB, PB, EB, ZB and YB.
.TP
.BI \-c " cachefile"
Read from
.I cachefile
instead of reading from the default cache file (see the CONFIGURATION FILE section
for more details).  If you want to start with a clean cache (i.e. don't report
devices previously scanned but not necessarily available at this time), specify
.IR /dev/null .
.TP
.B \-d
Don't encode non-printing characters.  The non-printing characters are encoded
by ^ and M- notation by default.  Note that the \fB-o udev\fR output format uses
a different encoding which cannot be disabled.
.TP
.B \-g
Perform a garbage collection pass on the blkid cache to remove
devices which no longer exist.
.TP
.B \-h
Display a usage message and exit.
.TP
.B \-i
Display information about I/O Limits (aka I/O topology).  The 'export' output format is
automatically enabled.  This option can be used together with the \fB-p\fR option.
.TP
.B \-k
List all known filesystems and RAIDs and exit.
.TP
.B \-l
Look up only one device that matches the search parameter specified with the \fB-t\fR
option.  If there are multiple devices that match the specified search
parameter, then the device with the highest priority is returned, and/or
the first device found at a given priority.  Device types in order of
decreasing priority are: Device Mapper, EVMS, LVM, MD, and finally regular
block devices.  If this option is not specified,
.B blkid
will print all of the devices that match the search parameter.
.TP
.BI \-L " label"
Look up the device that uses this filesystem \fIlabel\fR; this is equal to
.BR "-l -o device -t LABEL=\fIlabel\fR" .
This lookup method is able to reliably use /dev/disk/by-label
udev symlinks (dependent on a setting in /etc/blkid.conf).  Avoid using the
symlinks directly; it is not reliable to use the symlinks without verification.
The \fB-L\fR option works on systems with and without udev.

Unfortunately, the original
.BR blkid (8)
from e2fsprogs uses the \fB-L\fR option as a
synonym for \fB-o list\fR.  For better portability, use \fB-l -o device
-t LABEL=\fIlabel\fR and \fB-o list\fR in your scripts rather than the \fB-L\fR option.
.TP
.BI \-n " list"
Restrict the probing functions to the specified (comma-separated) \fIlist\fR of
superblock types (names).
The list items may be prefixed with "no" to specify the types which should be ignored.
For example:
.sp
  blkid -p -n vfat,ext3,ext4 /dev/sda1
.sp
probes for vfat, ext3 and ext4 filesystems, and
.sp
  blkid -p -n nominix /dev/sda1
.sp
probes for all supported formats except minix filesystems.
This option is only useful together with \fB-p\fR.
.TP
.BI \-o " format"
Use the specified output format.  Note that the order of variables and
devices is not fixed.  See also option \fB-s\fR.  The
.I format
parameter may be:
.RS
.TP
.B full
print all tags (the default)
.TP
.B value
print the value of the tags
.TP
.B list
print the devices in a user-friendly format; this output format is unsupported
for low-level probing (\fB-p\fR or \fB-i\fR).

This output format is \fBDEPRECATED\fR in favour of the
.BR lsblk (8)
command.
.TP
.B device
print the device name only; this output format is always enabled for the \fB-L\fR
and \fB-U\fR options
.TP
.B udev
print key="value" pairs for easy import into the udev environment; the keys are
prefixed by ID_FS_ or ID_PART_ prefixes

The udev output returns the ID_FS_AMBIVALENT tag if more superblocks are detected,
and ID_PART_ENTRY_* tags are always returned for all partitions including empty
partitions.  This output format is \fBDEPRECATED\fR.
.TP
.B export
print key=value pairs for easy import into the environment; this output format
is automatically enabled when I/O Limits (\fB-i\fR option) are requested.

The non-printing characters are encoded by ^ and M- notation and all
potentially unsafe characters are escaped.
.RE
.TP
.BI \-O " offset"
Probe at the given \fIoffset\fR (only useful with \fB-p\fR).  This option can be
used together with the \fB-i\fR option.
.TP
.BI \-p
Switch to low-level superblock probing mode (bypassing the cache).

Note that low-level probing also returns information about partition table type
(PTTYPE tag) and partitions (PART_ENTRY_* tags). The tag names produced by
low-level probing are based on names used internally by libblkid and it may be
different than when executed without \fB-p\fR (for example PART_ENTRY_UUID= vs
PARTUUID=).
.TP
.BI \-s " tag"
For each (specified) device, show only the tags that match
.IR tag .
It is possible to specify multiple
.B \-s
options.  If no tag is specified, then all tokens are shown for all
(specified) devices.
In order to just refresh the cache without showing any tokens, use
.B "-s none"
with no other options.
.TP
.BI \-S " size"
Override the size of device/file (only useful with \fB-p\fR).
.TP
.BI \-t " NAME" = value
Search for block devices with tokens named
.I NAME
that have the value
.IR value ,
and display any devices which are found.
Common values for
.I NAME
include
.BR TYPE ,
.BR LABEL ,
and
.BR UUID .
If there are no devices specified on the command line, all block devices
will be searched; otherwise only the specified devices are searched.
.TP
.BI \-u " list"
Restrict the probing functions to the specified (comma-separated) \fIlist\fR of "usage" types.
Supported usage types are: filesystem, raid, crypto and other.  The list items may be
prefixed with "no" to specify the usage types which should be ignored.  For example:
.sp
  blkid -p -u filesystem,other /dev/sda1
.sp
probes for all filesystem and other (e.g. swap) formats, and
.sp
  blkid -p -u noraid /dev/sda1
.sp
probes for all supported formats except RAIDs.
This option is only useful together with \fB-p\fR.
.TP
.BI \-U " uuid"
Look up the device that uses this filesystem \fIuuid\fR.  For more details see the \fB-L\fR option.
.TP
.B \-V
Display version number and exit.
.SH "RETURN CODE"
If the specified device or device addressed by specified token (option
\fB-t\fR) was found and it's possible to gather any information about the
device, an exit code 0 is returned.  Note the option \fB-s\fR filters output
tags, but it does not affect return code.

If the specified token was not found, or no (specified) devices could be
identified, an exit code of 2 is returned.

For usage or other errors, an exit code of 4 is returned.

If an ambivalent low-level probing result was detected, an exit code of 8 is
returned.
.SH CONFIGURATION FILE
The standard location of the
.I /etc/blkid.conf
config file can be overridden by the environment variable BLKID_CONF.
The following options control the libblkid library:
.TP
.I SEND_UEVENT=<yes|not>
Sends uevent when
.I /dev/disk/by-{label,uuid,partuuid,partlabel}/
symlink does not match with LABEL, UUID, PARTUUID or PARTLABEL on the device.  Default is "yes".
.TP
.I CACHE_FILE=<path>
Overrides the standard location of the cache file.  This setting can be
overridden by the environment variable BLKID_FILE.  Default is
.IR /run/blkid/blkid.tab ,
or
.I /etc/blkid.tab
on systems without a /run directory.
.TP
.I EVALUATE=<methods>
Defines LABEL and UUID evaluation method(s).  Currently, the libblkid library
supports the "udev" and "scan" methods.  More than one method may be specified in
a comma-separated list.  Default is "udev,scan".  The "udev" method uses udev
.I /dev/disk/by-*
symlinks and the "scan" method scans all block devices from the
.I /proc/partitions
file.
.SH AUTHOR
.B blkid
was written by Andreas Dilger for libblkid and improved by Theodore Ts'o
and Karel Zak.
.SH ENVIRONMENT
.IP "Setting LIBBLKID_DEBUG=all enables debug output."
.SH SEE ALSO
.BR libblkid (3),
.BR findfs (8),
.BR lsblk (8),
.BR wipefs (8)
.SH AVAILABILITY
The blkid command is part of the util-linux package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
