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 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.