LPIC-1 Linux Professional Institute Certification Study Guide. Richard Blum
as
pr
, but it generates PostScript output that can take better advantage of modern printer features.
File-Viewing Commands
Sometimes you just want to view a file or part of a file. A few commands can help you accomplish this goal without loading the file into a full-fledged editor.
As described earlier, the cat
command is also handy for viewing short files.
Viewing the Starts of Files with head
Sometimes all you need to do is see the first few lines of a file. This may be enough to identify what a mystery file is, for instance; or you may want to see the first few entries of a log file to determine when that file was started. You can accomplish this goal with the head
command, which echoes the first 10 lines of one or more files to standard output. (If you specify multiple filenames, each one's output is preceded by a header to identify it.) You can modify the amount of information displayed by head
in two ways:
Specify the Number of Bytes
The -c
num or -bytes=
num option tells head
to display num bytes from the file rather than the default 10 lines.
Specify the Number of Lines
You can change the number of lines displayed with the -n
num or -lines=
num option.
Viewing the Ends of Files with tail
The tail
command works just like head
, except that tail
displays the last 10 lines of a file. (You can use the -c
or -bytes
, and -n
or -lines
options to change the amount of data displayed, just as with head
.) This command is useful for examining recent activity in log files or other files to which data may be appended.
The tail
command supports several options that aren't present in head
and that enable the program to handle additional duties, including the following:
Track a File
The -f
or -follow
option tells tail
to keep the file open and to display new lines as they're added. This feature is helpful for tracking log files because it enables you to see changes as they're made to the file.
Stop Tracking on Program Termination
The -pid=
pid option tells tail
to terminate tracking (as initiated by -f
or -follow
) once the process with a process ID (PID) of pid terminates. (PIDs are described in more detail in Chapter 2, “Managing Software.”)
Some additional options provide more obscure capabilities. Consult tail
's man
page for details.
You can combine head
with tail
to display or extract portions of a file. For instance, suppose you want to display lines 11 through 15 of a file, sample.txt
. You can extract the first 15 lines of the file with head
and then display the last five lines of that extraction with tail
. The final command would be head – n 15 sample.txt | tail – n 5.
Paging through Files with less
The less
command's name is a joke; it's a reference to the more
command, which was an early file pager. The idea was to create a better version of more
, so the developers called it less
(“less is more”).
The idea behind less
(and more
, for that matter) is to enable you to read a file a screen at a time. When you type less filename, the program displays the first few lines of filename. You can then page back and forth through the file:
● Pressing the spacebar moves forward through the file a screen at a time.
● Pressing Esc followed by V moves backward through the file a screen at a time.
● The Up and Down arrow keys move up or down through the file a line at a time.
● You can search the file's contents by pressing the slash (/) key followed by the search term. For instance, typing /portable finds the first occurrence of the string portable
after the current position. Typing a slash followed by the Enter key moves to the next occurrence of the search term. Typing n alone repeats the search forward, while typing N alone repeats the search backward.
● You can search backward in the file by using the question mark (?) key rather than the slash key.
● You can move to a specific line by typing g followed by the line number, as in g50 to go to line 50.
● When you're done, type q to exit from the program.
Unlike most of the programs described here, less
can't be readily used in a pipe, except as the final command in the pipe. In that role, though, less
is very useful because it enables you to examine lengthy output conveniently.
Although less
is quite common on Linux systems and is typically configured as the default text pager, some Unix-like systems use more
in this role. Many of less
's features, such as the ability to page backward in a file, don't work in more
.
One additional less
feature can be handy: Typing h displays less
's internal help system. This display summarizes the commands you may use, but it's long enough that you must use the usual less
paging features to view it all! When you're done with the help screens, just type q as if you were exiting from viewing a help document with less
. This action will return you to your original document.
File-Summarizing Commands
The final text-filtering commands described here are used to summarize text in one way or another. The cut
command takes segments of an input file and sends them to standard output, while the wc
command displays some basic statistics on the file.
Extracting Text with cut
The cut
command extracts portions of input lines and displays them on standard output. You can specify what to cut from input lines in several ways:
By Byte
The -b
list or -bytes=
list option cuts the specified list of bytes from the input file. (The format of list is described shortly.)
By Character
The -c
list or -characters=
list option cuts the specified list of characters from the input file. In practice, this method and the by-byte method usually produce identical results. (If the input file uses a multibyte encoding system, though, the results won't be identical.)
By Field
The -f
list or -fields=
list option cuts the specified list of fields from the input file. By default, a field is a tab-delimited section of a line, but you can change the delimiting character with the -d
char, -delim=
char, or -delimiter=
char option, where char is the character you want to use to delimit fields. Ordinarily, cut
echoes lines that don't contain delimiters. Including the -s
or -only-delimited
option changes this behavior so that the program doesn't echo lines that don't contain the delimiter character.
Many of these options take a list option, which is a way to specify