С чего начать Первые шаги трек · 15 ступеней
Linux Labs

head — первые строки файла

3 мин Ubuntu 24.04 · GNU coreutils 9.4

Команда head печатает начало файла или вывода: по умолчанию 10 строк, ключ -n задаёт сколько.

Шпаргалка

7 команд Версия для печати
  • head file.txt первые 10 строк
  • head -n 3 file.txt первые 3 строки
  • head -n -5 file.txt всё, кроме последних 5 строк
  • head -c 100 file.txt первые 100 байт
  • head -n 1 data.csv строка заголовка таблицы
  • head -n 2 a.txt b.txt по 2 строки из каждого, с именами
  • ps aux --sort=-%mem | head верх длинного вывода

Обзор

head печатает начало файла и останавливается. Без ключей — 10 строк, с -n N — N строк. Если имён несколько, перед каждым куском печатается заголовок:

text
student@ubuntu:~$ head -n 2 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

==> /etc/group <==
root:x:0:
daemon:x:1:

Чаще всего head стоит в конце конвейера и обрезает длинный вывод другой команды: самые большие файлы, самые прожорливые процессы, первые совпадения. Конец файла показывает парная команда tail.

Ключи

4

-n 3 и короткая запись -3 равны. Полный список — man head.

Ключ Что делает Пример
-n N Напечатать первые N строк; -n -N — всё, кроме последних N. head -n 3 file.txt
-c N Напечатать первые N байт. head -c 100 file.txt
-q Не печатать заголовки ==> имя <== для нескольких файлов. head -q -n 1 *.csv
-v Печатать заголовок с именем даже для одного файла. head -v -n 3 app.conf

Ничего не найдено. Попробуй запрос короче.

Рецепты

4

Пять самых больших файлов в каталоге

bash
ls -lS /var/log | head -n 6     # строка total и пять файлов
du -ah /var/log 2>/dev/null | sort -rh | head -n 5

Процессы, которые едят больше всего памяти

bash
ps aux --sort=-%mem | head -n 6   # шапка и пять процессов

Посмотреть, что за файл, не открывая его целиком

bash
head -n 20 /var/log/syslog        # формат строк журнала
head -c 64 archive.bin | od -c    # первые байты двоичного файла

Строки с N-й по M-ю

bash
head -n 30 app.log | tail -n 11   # строки 20–30
sed -n '20,30p' app.log           # то же через sed

Неполадки

4

head: cannot open 'x' for reading: No such file or directory

Файла нет по этому пути. Проверь имя через ls и текущий каталог через pwd.

head: invalid number of lines

После -n должно стоять число: head -n 5, а не head -n five или head -n без числа.

Вывод заканчивается на середине строки

Ты указал -c (байты) вместо -n (строки). С -c head режет по байтам, в том числе посреди русской буквы.

В выводе нет нужной строки

Она дальше первых десяти. Увеличь -n, открой файл в less или найди строку через grep: grep -n слово файл.

См. также

  • tail — последние строки и слежение за журналом.
  • cat — файл целиком.
  • less — листать длинный файл.
  • text-tools — sort, uniq, wc и другие звенья конвейера.
  • grep — найти строки по слову, а не по номеру.
Загрузка…