TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #189 10.6K
Ничего лишнего, только head и tail

Утилиты head и tail можно назвать сестрами. Они обе позволяют просматривать только часть того, что поступило на вход: head показывает начало, а tail — конец.

Команды могут принимать входные данные либо с какого-то ресурса (файла) либо от других утилит через конвейер "|":


$ head test
Line 1
Line 2
Line 3
...


$ ls | head
adduser.conf
alsa
alternatives
...


Если в команде head не указаны флаги, то по умолчанию выводятся первые 10 строк.

Для того, чтобы ограничить вывод и просмотреть N элементов, используем параметр "-n":


$ head -n2 test
Line 1
Line 2


Параметр "-n" также можно использовать для того, чтобы вывести все содержимое, за исключением N последних строк. Для этого нужно использовать выражение вида "-n-N".

Если у нас всего 10 строк и требуется получить первые 3, сделаем:


$ head -n-7 test
Line 1
Line 2
Line 3


Без проблем можно единовременно получить вывод с нескольких файлов. Достаточно перечислить названия через пробел:


$ head -n2 test test2
==> test <==
Line 1
Line 2

==> test2 <==
Line 11
Line 12


Если вывод названий файлов и разделителей "\n" нам не нужен, используем флаг "-q":


$ head -n2 -q test test2
Line 1
Line 2
Line 11
Line 12


Команда tail печатает последние строки файла — по умолчанию также 10:


$ tail test
Line 1
Line 2
Line 3
...


Принцип использования команды tail практически аналогичен head. Если хотим ограничить вывод последними 3 строками, добавляем флаг "-n":


$ tail -n3 test
Line 8
Line 9
Line 10


Если поставить перед номером знак "+", печать начнется со строки этого номера и продолжится до конца файла:


$ tail -n+9 test
Line 9
Line 10


Обе команды вместе

Объединяйте head и tail, чтобы напечатать любой диапазон строк.

Например, чтобы вывести строки c 4 по 7, используем head для элементов "1-7" и tail для "7-4":


$ head -n7 test | tail -n4
Line 4
Line 5
Line 6
Line 7


В общем, чтобы отобразить строки от M до N, извлеките первые N строк с помощью head, затем выведите последние N-M+1 строк с помощью tail.

Чуток жизненной практики

Последнее время частенько приходится работать с патчами - накладывать их на приложения через quilt и снимать.

Нужно было наложить на утилиту только 10 патчей из 20. Для того, чтобы поработать с диапазоном, использовал команду head:


$ quilt series | head -n 10 | xargs -L1 quilt push


1) quilt series выводит список патчей в столбец;

2) head -n 10 отображает только первые 10 строк;

3) xargs -L1 quilt push выполняет команду для каждого отдельного патча;

LinuxCamp | #utils
  • 👍 34
  • 🔥 8
  • ❤ 4
  • ❤‍🔥 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →