Команда head выводит начальные строки (по умолчанию — 10) из одного или нескольких документов. Также она может показывать данные, которые передает на вывод другая утилита.
Сегодня мы расскажем как работает эта команда для Linux и покажем, как используются на практике наиболее популярные опции head.
Содержание статьи
Команда head в Linux
Синтаксис у команды head следующий:
$ head опции файл
Здесь:
- Опции — это параметр, который позволяет настраивать работу команды таким образом, чтобы результат соответствовал конкретным потребностям пользователя.
- Файл — это имя документа (или имена документов, если их несколько). Если это значение не задано либо вместо него стоит знак «-», команда будет брать данные из стандартного вывода.
Чаще всего к команде head применяются такие опции:
- -c (--bytes) — позволяет задавать количество текста не в строках, а в байтах. При записи в виде --bytes=[-]NUM выводит на экран все содержимое файла, кроме NUM байт, расположенных в конце документа.
- -n (--lines) — показывает заданное количество строк вместо 10, которые выводятся по умолчанию. Если записать эту опцию в виде --lines=[-]NUM, будет показан весь текст кроме последних NUM строк.
- -q (--quiet, --silent) — выводит только текст, не добавляя к нему название файла.
- -v (--verbose) — перед текстом выводит название файла.
- -z (--zero-terminated) — символы перехода на новую строку заменяет символами завершения строк.
Переменная NUM, упомянутая выше — это любое число от 0 до бесконечности, задаваемое пользователем. Оно может быть обычным либо содержать в себе множитель.
Примеры использования head
Самый простой способ использования команды head — с указанием имени файла, но без опций. В таком случае будут выведены на экран первые 10 строк.
head file-name.txt
Если нужно единовременно получить вывод с нескольких файлов, с этим тоже не возникнет проблем. Достаточно перечислить названия, разделяя их пробелом:
head file-name1.txt file-name2.txt
Разумеется, файлов может быть и три, и четыре, и больше. Чтобы не возникало путаницы, их содержимое автоматически разделяется пустой строкой, а перед текстом выводится название документа.
Чтобы название файла выводилось даже в том случае, когда команде задан только один документ, следует воспользоваться опцией -v:
head -v file-name.txt
Если десяти строк, по умолчанию выводимых командой, окажется слишком мало или слишком много, ничто не мешает изменить их количество вручную. Для этой цели служит опция -n:
head -n file-name.txt
Не будем забывать об еще одном интересном свойстве этой опции. Она позволяет вывести то количество строк, которое останется после «отсечения» лишнего текста. Для этого нужно использовать не сокращенную (однобуквенную), а полную запись опции:
head --lines=[-]NUM
Во время работы в терминале квадратные скобки не используются, знак минуса идет сразу же после знака равно. Вместо NUM следует указать число. Вот как выглядит запись команды и ее результат на скриншоте.
Следует заметить, что строки «отсекаются», начиная с последней.
До этого момента мы (и команда head вместе с нами) считали количество текста построчно. Но это не обязательное условие — с таким же успехом единицей измерения может быть байт. Достаточно сообщить команде о новом правиле работы с помощью опции -с, заодно указав и количество байт, которое нужно вывести на экран (NUM):
head -c NUM file-name.txt
Как и в случае с опцией --lines, можно «отсечь» ненужный объем текста, используя полную форму опции -с — --bytes. Запись команды проводится по тому же принципу и лишние байты тоже отсчитываются, начиная с конца документа:
head --bytes=[-]NUM
При записи байт можно использовать буквенные суффиксы:
- b — умножает число на 512.
- kB — на 1000.
- k — на 1024.
- MB — на 1 000 000.
- M — на 1 048 576.
Кстати, команду head можно использовать не только самостоятельно, но и в сочетании с другими командами. Например, такая запись хеширует рандомно выбранную переменную среды, выводит первые 32 байта из указанного файла и отображает случайную строку из 24 символов:
echo $RANDOM | sha512sum | head -c 24 file-name.txt; echo
На этом наши примеры head linux подошли к завершению.
Выводы
Команда head linux, которая выводит начальные строки файла, - это в некотором роде антагонист команды tail (она печатает в терминале последние строки). Поскольку ее синтаксис довольно прост, у пользователей, как правило, не возникает проблем с использованием этой команды. Если у вас появились вопросы или замечания по части команды head и ее применения в Linux-системах, обязательно оставьте комментарий внизу.
Спасибо. И есть вопрос: как вывести одновременно 25 первых строк файла, а следом 5 последних строк файла.? Pipeline отрезает от первых 25 (head -n 25) , 5 указанных (tail -n 5) . А надо 25 плюс 5 получить.
Т.е не работает: head -n 25 | tail -n 5 testfile
Первое что приходит на ум: head -n 25 testfile && tail -n 5 testfile Или возможно с помощью cut можно сделать то, что вам надо.