Wild cards are a way of specifying one or more files using a pattern. When you type in a command the shell will search for the characters '*', '?', '{', '~' and '[' in each word of the command and its arguments. If one of the characters appears then the word is regarded as a pattern and is replaced with an alphabetically sorted list of file names that match the pattern. Patterns are matched in the context of the given word. For example, if a legal character is given as part of the pattern, then the wild card attempts to match the file(s) given the character's position within the pattern.
Some of the most common patterns are:
Unlike a Disk Operating System (DOS), where it is the command's responsibility to perform wild card expansion, UNIX lets the shell do the expansion. So the Command "command a?" does not pass "a?" to the command, rather, it passes however many files fit the description of "a?" to the command; DOS commands would simply get "a?" as the argument.
To make use of the wild cards above, the file must exist, or the shell will report No match. However the {...} pattern does not follow this convention; files that it attempts to match do not have to exist, the result is simply passed to the command
Mixing of the characters above are allowed (with the exception of the '~', which must occur at the beginning of the pattern). You can use any combination of the above in a single word or multiple words when using them. Another caveat is that "dot" files (filenames that begin with a '.') are not matched by wild cards unless the word explicitly begins with a '.'.