Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt

Use this file to discover all available pages before exploring further.

The -b operator is a unary file test operator in Bash used to evaluate whether a specified file path exists and is a block special file (block device). Block special files are device nodes that provide buffered, block-oriented access to hardware, such as hard drives, loopback devices, or flash memory. When executed, the operator yields the following exit statuses:
  • 0 (True): The path exists and is explicitly a block special file.
  • 1 (False): The path does not exist, or it exists but is a different file type (e.g., regular file, directory, character special file, socket, or symlink pointing to a non-block file).

Syntax

The operator can be invoked using the standard test command, the POSIX single-bracket [ ] test construct, or the Bash-specific double-bracket [[ ]] extended test construct.

# Using the test command
test -b /path/to/file


# Using the POSIX single-bracket construct
[ -b /path/to/file ]


# Using the Bash extended double-bracket construct
[[ -b /path/to/file ]]

Evaluation Mechanics

  • Symlink Resolution: If the target path is a symbolic link, the -b operator dereferences the link. It evaluates the file type of the ultimate target, not the symlink itself.
  • Operand Requirement and Quoting: The operator expects exactly one string operand representing the file path. If the operand is omitted (e.g., [ -b ]) or an unquoted variable is null (e.g., var=""; [ -b $var ]), the test and [ commands are left with exactly one argument ("-b"). According to POSIX evaluation rules for a single argument, the command simply checks if that string is non-empty. Since the string "-b" is not empty, the command evaluates to 0 (True). To safely evaluate to 1 (False) for an empty or null operand, you must use a properly quoted single-bracket construct ([ -b "$var" ]) or the Bash double-bracket construct ([[ -b $var ]]).
  • Permissions: The operator requires search (execute) permissions on the directory hierarchy leading up to the file to successfully resolve the path. It does not require read permissions on the block device itself to determine its file type.
Master Bash with Deep Grasping Methodology!Learn More