UNIX Tutorial Four

4.1 Wildcards

The characters * and ?

The character * is called a wildcard, and will match against none or more character(s) in a file (or directory) name. For example, in your unixstuff directory, type

% ls list*

This will list all files in the current directory starting with list....

Try typing

% ls *list

This will list all files in the current directory ending with ....list

The character ? will match exactly one character.
So ls ?ouse will match files like house and mouse, but not grouse.
Try typing

% ls ?list

4.2 Other Pattern Matching Features

A set of optional characters for a single match position can be specified using square brackets '[' and ']'. For example, the command:

% ls [Aab]*

will list all file and directory names whose first letter is either an upper case A, a lower case a, or a lower case b.

The command:

% ls ?[aeiou]*

will list all files and directories whose second character is a vowel (excluding 'y' in this example).

There is a simple notation for specifying a range of letters. For example, if we wanted to concatenate all text files beginning with the letters 'A' through 'M' and put the results in a file named 'Files_A_to_M.txt', we can use the command:

% cat [A-M]*.txt > Files_A_to_M.txt

When using wildcards and a command that processes files (e.g., cat), the user should be careful not to specify a pattern that will match the names of sub-directories. Using the cat command on a directory name will not produce a useful result, and may create some confusion.

We can also specify multiple ranges in the same pattern, separating them with a comma. For example, if we wanted to list all files and directories beginning with the letters 'A' through 'M' or 'a' through 'm' (i.e., include both upper and lower case), we would use the command:

% ls [A-M,a-m]*

The pattern matching features described here are not limited to the command line. The grep command discussed in Tutorial 2 will also accept patterns with options and wildcards. However, to prevent the shell from interpreting the wildcard characters before grep has a chance to consider them, the pattern must be enclosed in quotes. For example:

% grep "[BC]e" science.txt

will match all lines in the file science.txt which contain either a capital B or a capital C followed by a lower case e.

4.3 Filename conventions

We should note here that a directory is merely a special type of file. So the rules and conventions for naming files apply also to directories.

In naming files, characters with special meanings such as / * & % , should be avoided. Also, avoid using spaces within names. The safest way to name a file is to use only alphanumeric characters, that is, letters and numbers, together with _ (underscore) and . (dot).

File names conventionally start with a lower-case letter, and may end with a dot followed by a group of letters indicating the contents of the file. For example, all files consisting of C code may be named with the ending .c, for example, prog1.c . Then in order to list all files containing C code in your home directory, you need only type ls *.c in that directory.

Beware: some applications give the same name to all the output files they generate.

For example, some compilers, unless given the appropriate option, produce compiled files named a.out. Should you forget to use that option, you are advised to rename the compiled file immediately, otherwise the next such file will overwrite it and it will be lost (until you recreate it by recompiling the previous source file).

4.4 Getting Help

On-line Manuals

There are on-line manuals which gives information about most commands. The manual pages tell you which options a particular command can take, and how each option modifies the behaviour of the command. Type man command to read the manual page for a particular command.

For example, to find out more about the wc (word count) command, type

% man wc

Alternatively

% whatis wc

gives a one-line description of the command, but omits any information about options etc.

Apropos

When you are not sure of the exact name of a command,

% apropos keyword

will give you the commands with keyword in their manual page header. For example, try typing

% apropos copy

Summary

* match any number of characters
? match one character
man command read the online manual page for a command
whatis command brief description of a command
apropos keyword match commands with keyword in their man pages

 

Continue with the Tutorial


M.Stonebank@surrey.ac.uk, © 9th October 2000