Поиск по сайту:

Команды Head и Tail в Linux, объясненные примерами


В этом руководстве показано типичное использование команд head и Tail в Linux для получения части текста с помощью примеров.

Получение части текста из входных файлов в Linux является обычным явлением. Однако иногда нам интересно просмотреть только несколько строк файла. Linux предоставляет нам команды head и tail для печати только тех строк, которые нас интересуют.

Команды Linux head и tail очень похожи. По умолчанию они установлены во всех дистрибутивах Linux. Давайте сначала разберемся, что это такое и для чего они используются.

Короче говоря, как следует из их названий, команда head печатает строки с начала файла, а команда tail печатает строки с конца файла. Наконец, обе команды записывают результат в стандартный вывод.

Теперь давайте научимся их использовать на примерах.

Головная команда в Linux

Синтаксис команды head довольно прост:

head [OPTIONS] FILES

По умолчанию, без каких-либо опций, команда head отображает первые десять строк файла. Вот так.

head /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin

Конечно, есть параметры, которые мы можем определить во время выполнения команды, чтобы получить индивидуальный вывод.

Вывод определенного количества строк с помощью команды head

-n

Например, следующая команда отобразит первые три строки из файла /etc/passwd.

head -n 3 /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin

Вывод определенного количества байтов с помощью команды head

-c

Например, следующая команда отобразит первые 8 байтов из файла /etc/passwd.

head -c 8 /etc/passwd
root:x:0

Вывод нескольких файлов с помощью команды head

Конечно, команда head также может обрабатывать несколько файлов. Например, следующая команда покажет первые три строки файлов /etc/passwd и /etc/group.

head -n 3 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin

==> /etc/group <==
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:
-q
head -q -n 3 /etc/passwd /etc/group
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:

Как использовать команду head с трубами

Команду head также можно передавать по конвейеру другим командам. Итак, в следующем примере выходные данные команды ls передаются в head , чтобы отобразить пять последних измененных файлов или папок в /etc каталог.

ls -t /etc | head -n 5
ld.so.cache
resolv.conf
systemd
libreoffice
profile.d

К настоящему моменту вы должны понимать, как правильно использовать команду Linux head. Теперь давайте взглянем на команду tail.

Команда хвоста в Linux

Команда tail в Linux аналогична команде head. Однако, в отличие от команды head, команда tail печатает несколько последних строк определенного файла (по умолчанию 10 строк).

Основной синтаксис команды tail:

tail [OPTIONS] FILES

Например, следующая команда напечатает последние десять строк из файла /etc/locale.gen.

tail /etc/locale.gen
#zh_HK.UTF-8 UTF-8
#zh_HK BIG5-HKSCS
#zh_SG.UTF-8 UTF-8
#zh_SG.GBK GBK
#zh_SG GB2312
#zh_TW.EUC-TW EUC-TW
#zh_TW.UTF-8 UTF-8
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

Вывод определенного количества строк с помощью команды Tail

-n
tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

Как использовать команду Tail с трубами

Ранее мы передавали выходные данные из head в ls. Аналогично мы можем передать вывод других команд в tail.

Например, чтобы определить пять файлов или папок в каталоге /etc с самым старым временем изменения и передать выходные данные команде tail, введите:

ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf

Следите за изменениями в файле с помощью команды Tail

В команде tail есть еще одна мощная и широко используемая функция. Вот в чем дело.

Иногда входной файл, который мы хотим проверить, меняется. Например, работающее приложение может добавить свои выходные данные в файл журнала.

-f

Таким образом, это может быть наиболее практичным и часто используемым вариантом для команды tail.

Например, вы можете увидеть новые строки, которые добавляются в конец файла журнала Nginx по мере их добавления, например:

tail -f /var/log/nginx/access.log
172.16.1.122 - - [08/Apr/2021:08:15:32 +0000] "POST /wp-admin/admin-ajax.php HTTP/1.1" 200 109 "https://linuxwizard.com/wp-admin/post.php?post=18254&action=edit" "Mozilla/5.0 (X11; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0" 
172.16.1.122 - - [08/Apr/2021:08:19:27 +0000] "GET /feed/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1" 
172.16.1.122 - - [08/Apr/2021:08:19:49 +0000] "HEAD /feed/ HTTP/1.1" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" 

При добавлении каждой новой записи в файл журнала tail будет обновлять свое отображение в окне терминала.

Как использовать команды head и Tail вместе в Linux

Поскольку команды tail и head печатают разные части файлов, мы можем объединить их, чтобы напечатать некоторую расширенную фильтрацию содержимого файла.

Например, если вы хотите прочитать содержимое из середины любого файла, вам необходимо использовать обе команды вместе.

Допустим, мы хотим получить строку с 5-й по 10-ю из файла /etc/passwd. Сначала команда head извлечет первые десять строк, а затем команда tail извлечет последние пять строк из вывода head. > команда.

head -n 10 /etc/passwd | tail -n 5
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin

Заключение

В этой статье мы на примерах изучили типичное использование обеих команд. Как видите, команды tail и head удобны для управления тем, какое содержимое файла будет выводиться на экран.

Действительно, это гибкие команды, которые значительно улучшают управление вашими файлами. Итак, дайте им попробовать.

Нужна более подробная информация? Проверьте справочные страницы команд head и tail.

Статьи по данной тематике: