Syntax

This section describes the many symbols peculiar to the shell. The topics are arranged as follows:

  • Special files

  • Filename metacharacters

  • Brace expansion

  • Quoting

  • Command forms

  • Redirection forms

Special Files

The shell reads one or more startup files. Some of the files are read only when a shell is a login shell. Bash reads these files:

  1. /etc/profile. Executed automatically at login.

  2. The first file found from this list: ~/.bash_profile, ~/.bash_login, or ~/.profile. Executed automatically at login.

  3. ~/.bashrc is read by every nonlogin shell. However, if invoked as sh, Bash instead reads $ENV, for POSIX compatibility.

The getpwnam() and getpwuid() functions are the sources of home directories for ~name abbreviations. (On personal systems, the user database is stored in /etc/passwd. However, on networked systems, this information may come from NIS, NIS+, or LDAP, not your workstation password file.)

Filename Metacharacters

*

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]

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:

?(pattern)

Match zero or one instance of pattern.

*(pattern)

Match zero or more instances of pattern.

+(pattern)

Match one or more instances of pattern ...

Get bash Pocket Reference now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.