Команды Head и Tail в Linux, объясненные примерами
В этом руководстве показано типичное использование команд head и Tail в Linux для получения части текста с помощью примеров.
Получение части текста из входных файлов в Linux является обычным явлением. Однако иногда нам интересно просмотреть только несколько строк файла. Linux предоставляет нам команды head и tail для печати только тех строк, которые нас интересуют.
Команды Linux head и tail очень похожи. По умолчанию они установлены во всех дистрибутивах Linux. Давайте сначала разберемся, что это такое и для чего они используются.
Короче говоря, как следует из их названий, команда head печатает строки с начала файла, а команда tail печатает строки с конца файла. Наконец, обе команды записывают результат в стандартный вывод.
Теперь давайте научимся их использовать на примерах.
Головная команда в Linux
Синтаксис команды head довольно прост:
head [OPTIONS] FILESПо умолчанию, без каких-либо опций, команда head отображает первые десять строк файла. Вот так.
head /etc/passwdroot: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/passwdroot: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/passwdroot: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:-qhead -q -n 3 /etc/passwd /etc/grouproot: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 5ld.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
-ntail -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 5wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.confСледите за изменениями в файле с помощью команды Tail
В команде tail есть еще одна мощная и широко используемая функция. Вот в чем дело.
Иногда входной файл, который мы хотим проверить, меняется. Например, работающее приложение может добавить свои выходные данные в файл журнала.
-fТаким образом, это может быть наиболее практичным и часто используемым вариантом для команды tail.
Например, вы можете увидеть новые строки, которые добавляются в конец файла журнала Nginx по мере их добавления, например:
tail -f /var/log/nginx/access.log172.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 5http: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.
