The essence of all console utilities in GNU/Linux comes down to one simple rule: do one thing, but do it well. And commands like head and tail are no exception. With their help, the productivity of the terminal accelerates significantly. This article covers these two utilities.
Their main task is to output 10 lines from the “head” or from the “tail” of a document or data from another program (in other words, incoming data). This number of lines is set by default, but thanks to the options, the output capabilities can be significantly improved.
Syntax and Options Head/tail
These commands are pretty easy to use. Their main difference is that “head” works from the beginning of incoming data, and “tail”—from the end.
Here is their syntax when working with a file:
head [options] file tail [options] file
If the utility processes the data of another program, then everything works according to the standard rules of the shell:
previous command | head previous command | tail
The options is an optional parameter: without it, the 10 lines of incoming data will be displayed. Here are frequently used options:
|Short (BSD) form||Long (GNU) form||Value|
|-c||–bytes=[-]N||sets the number of bytes to output instead of whole lines; when using the minus sign — displays all content except the last (for head) or first (for tail) N bytes|
|-n||–lines=[±]N||sets the number of bytes to output instead of whole lines; when using the minus sign — displays all content except the last (for head) or first (for tail with plus sign) N bytes|
|-q||–quiet, –silent||shows the contents of a file without its name; works by default|
|-v||–verbose||Shows the file name first|
Specifying the number of bytes output using the –bytes option, you can use the multiplier suffix: b (512), kB (1000), K (1024), MB (1000 × 1000), M (1024 × 1024), etc. Instead of single-letter pointers, KiB, MiB, etc. are also applicable.
There are other options for tail that complement its functionality. They are quite specific. You can read more about them in the tail help documentation. But here it is worth mentioning the -f option, which displays the contents of the file in real time (especially useful when tracking logs).
Examples of using Head/Tail Command
There are lot of options for using head and tail. In fact, only your imagination can be a limitation.
Output the First/last 10 Lines of a File
The easiest way to use utilities is to specify them without parameters:
You can also output multiple files in a row. In this case, the file names are specified by default:
head file math.txt
Output a Specific Range of Lines
By combining head and tail, you can display the specified range of lines/bytes of text. Here, for example, the output from line 25 to line 40 of the pacman.log:
cat -n /var/log/pacman.log | head -n 40 | tail -n +25
Track File Changes
A very useful option, which in its functionality resembles the watch utility. It allows you to display the contents of the file online.
The external difference from the usual output is the absence of the prompt line, because the process is in an active state.
tail -f /var/log/pacman.log
To exit this mode, press Ctrl + C.