head/tail — вывод первых/последних строк из файлов

We use cookies. Read the Privacy and Cookie Policy

Иногда требуется выводить не все результаты работы команды, а только несколько первых или несколько последних строк. Команда head выводит первые 10 строк из файла, а tail — последние 10 строк. По умолчанию обе команды выводят 10 строк текста, но это число можно изменить с помощью параметра -n:

[me@linuxbox ~]$ head -n 5 ls-output.txt

total 343496

-rwxr-xr-x 1 root root 31316 2011-12-05 08:58 [

-rwxr-xr-x 1 root root 8240 2011-12-09 13:39 411toppm

-rwxr-xr-x 1 root root 111276 2011-11-26 14:27 a2p

-rwxr-xr-x 1 root root 25368 2010-10-06 20:16 a52dec

[me@linuxbox ~]$ tail -n 5 ls-output.txt

-rwxr-xr-x 1 root root 5234 2011-06-27 10:56 znew

-rwxr-xr-x 1 root root 691 2009-09-10 04:21 zonetab2pot.py

-rw-r--r-- 1 root root 930 2011-11-01 12:23 zonetab2pot.pyc

-rw-r--r-- 1 root root 930 2011-11-01 12:23 zonetab2pot.pyo

lrwxrwxrwx 1 root root 6 2012-01-31 05:22 zsoelim -> soelim

Их также можно использовать в конвейерах:

[me@linuxbox ~]$ ls /usr/bin | tail -n 5

znew

zonetab2pot.py

zonetab2pot.pyc

zonetab2pot.pyo

zsoelim

Команда tail позволяет наблюдать, как изменяется содержимое файла в режиме реального времени. Эту ее особенность удобно использовать для наблюдения за появлением новых записей в файлах журналов. В следующем примере демонстрируется наблюдение за файлом messages в каталоге /var/log. В некоторых дистрибутивах Linux для этого требуется обладать привилегиями суперпользователя, поскольку файл /var/log/messages может содержать секретную информацию.

[me@linuxbox ~]$ tail -f /var/log/messages

Feb 8 13:40:05 twin4 dhclient: DHCPACK from 192.168.1.1

Feb 8 13:40:05 twin4 dhclient: bound to 192.168.1.4 -- renewal in 1652 seconds.

Feb 8 13:55:32 twin4 mountd[3953]: /var/NFSv4/musicbox exported to both 192.168.1.0/24 and twin7.localdomain in 192.168.1.0/24,twin7.localdomain

Feb 8 14:07:37 twin4 dhclient: DHCPREQUEST on eth0 to 192.168.1.1 port 67

Feb 8 14:07:37 twin4 dhclient: DHCPACK from 192.168.1.1

Feb 8 14:07:37 twin4 dhclient: bound to 192.168.1.4 -- renewal in 1771 seconds.

Feb 8 14:09:56 twin4 smartd[3468]: Device: /dev/hda, SMART Prefailure Attribute: 8 Seek_Time_Performance changed from 237 to 236

Feb 8 14:10:37 twin4 mountd[3953]: /var/NFSv4/musicbox exported to both 192.168.1.0/24 and twin7.localdomain in 192.168.1.0/24,twin7.localdomain

Feb 8 14:25:07 twin4 sshd(pam_unix)[29234]: session opened for user me by (uid=0)

Feb 8 14:25:36 twin4 su(pam_unix)[29279]: session opened for user root by me(uid=500)

При вызове с параметром -f команда tail продолжает следить за файлом и при добавлении в конец этого файла новых строк немедленно выводит их. Так продолжается до тех пор, пока пользователь не нажмет комбинацию клавиш CTRL-C.