You have already been introduced to several basic shell prompt commands
for reading files in text editors. Here are a few more.
13.11.1. The head Command
You can use the head command to look at the
beginning of a file. The command is:
head can be a useful command, but because it is
limited to the first several lines, you will not see how long the file
actually is. By default, you can only read the first ten lines of a
file. You can change the number of lines displayed by specifying a
number option as shown in the following command:
13.11.2. The tail Command
The reverse of head is tail.
Using tail, you can view the last ten lines of a
file. This can be useful for viewing the last 10 lines of a log file
for important system messages. You can also use
tail to watch log files as they are updated. Using
the -f option, tail automatically
print new messages from an open file to the screen in real-time. For
example, to actively watch /var/log/messages,
type the following at a shell prompt as the root user:
tail -f /var/log/messages
13.11.3. The grep Command
The grep command is useful for finding specific
character strings in a file. For example, if you want to find every
reference made to "coffee" in the file
sneakers.txt, you would type:
You would see every line in that file where the word "coffee" is
Unless otherwise specified,
grep searches are case
sensitive. That means that searching for
Coffee is different than searching for
coffee. Among grep's options
is -i, which allows for a case-insensitive search
through a file. Read the grep man page for more
about this command.
13.11.4. I/O Redirection and Pipes
You can use pipes and output redirection when you want to store and/or
print information to read at a later time.
You can, for example, use grep to search for
particular contents of a file, then have those results either saved as
a file or sent to a printer.
To print the information about references to "coffee" in
sneakers.txt, for example, just type:
grep coffee sneakers.txt | lpr
13.11.5. Wildcards and Regular Expressions
What if you forget the name of the file you are looking for? Using
wildcards or regular expressions, you can perform actions on a file or
files without knowing the complete filename. Just fill out what you
know, then substitute the remainder with a
wildcard. Wildcards are special symbols that
you can substitute for letters, numbers, and symbols that make finding
particular directories and files easier than examining long directory
listings to find what you are searching for.
To read more about wildcards and regular expressions, take a look at
the bash man page (man
bash). Remember that you can save the file to a text
file by typing man bash | col -b >
bash.txt. Then, you can open and read the file with
less or vi
(vi bash.txt). If you want to print the
file, be aware that it is quite long.
We know the file is called "sneak____.txt," so type:
and there is the name of the file:
You will probably use the asterisk (*) most
frequently when you are searching. The asterisk will search out
everything that matches the pattern you are looking for. So even by
You would find sneakers.txt and any other
files whose name ends with .txt or begin with
sn. It helps to narrow your search as much as
One way to narrow a search is to use the question mark symbol
(?). Like the asterisk, using ?
can help locate a file matching a search pattern.
In this case, though, ? is useful for matching a
single character, so if you were searching for
sneaker?.txt, you would get
sneakers.txt as a result, and/or
sneakerz.txt, if there were such a filename.
Regular expressions are more complex than the straightforward
asterisk or question mark.
When an asterisk, for example, just happens to be part of a filename,
as might be the case if the file sneakers.txt was
called sneak*.txt, that is when regular
expressions can be useful.
Using the backslash (\), you can specify that you
do not want to search out everything by using the
asterisk, but you are instead looking for a file with an asterisk in
If the file is called sneak*.txt, type:
Here is a brief list of wildcards and regular expressions:
* — Matches all characters
? — Matches one character in a string
\* — Matches the * character
\? — Matches the ? character
\) — Matches the ) character