Filename Metacharacters

Characters

Meaning

*

Match any string of zero or more characters.

?

Match any single character.

[ abc...]

Match any one of the enclosed characters; a hyphen can specify a range (e.g., a–z, A–Z, 0–9).

[! abc...], [^ abc...]

Match any character not enclosed as above.

~

Home directory of the current user.

~ name

Home directory of user name.

~+

Current working directory ($PWD).

~-

Previous working directory ($OLDPWD).

With the extglob option on:

Characters

Meaning

?( pattern)

Match zero or one instance of pattern.

*( pattern)

Match zero or more instances of pattern.

+( pattern)

Match one or more instances of pattern.

@( pattern)

Match exactly one instance of pattern.

!( pattern)

Match any strings that don’t match pattern.

This pattern can be a sequence of patterns separated by |, meaning that the match applies to any of the patterns. This extended syntax resembles that available in egrep and awk.

Bash supports the POSIX [[= c =]] notation for matching characters that have the same weight, and [[. c .]] for specifying collating sequences. In addition, character classes, of the form [[: class :]], allow you to match the following classes of characters.

Class

Characters matched

Class

Characters matched

alnum

Alphanumeric characters

graph

Nonspace characters

alpha

Alphabetic characters

print

Printable characters

blank

Space or tab

punct

Punctuation characters

cntrl

Control characters

space

Whitespace characters

digit

Decimal digits

upper

Uppercase characters

lower

Lowercase characters

xdigit

Hexadecimal digits

Bash also accepts ...

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.