Linux head and tails

Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки

Глава 8. Работа с содержимым файлов

В данной главе мы будем работать с содержимым текстовых файлов , используя утилиты head , tail , cat , tac , more , less и strings .

Также мы познакомимся с возможностями таких инструментов с интерфейсом командной строки, как cat .

Утилита head

Утилита tail

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

Утилита cat

Комбинация клавиш Ctrl+d позволяет передать исполняющемуся процессу символ окончания файла (End of File — EOF), что приведет приведет к завершению исполнения процесса cat .

Специальный маркер окончания файла

Утилита tac

Утилиты more и less

Утилита more может оказаться полезной в случае возникновения необходимости вывода содержимого файлов, которое не умещается на экране. Утилита more позволяет ознакомится с содержимым файла, разделенным на страницы. После открытия файла с использованием данной утилиты следует использовать клавишу «пробел» для перехода к следующей странице или клавишу q для выхода из режима просмотра содержимого файла. Некоторые пользователи предпочитают использовать утилиту less вместо утилиты more .

Утилита strings

Практическое задание: работа с содержимым файлов

1. Осуществите вывод первых 12 строк файла /etc/services .

2. Осуществите вывод последней строки файла /etc/passwd .

4. Используйте утилиту cp для создания резервной копии этого файла с именем cnt.txt .

5. Используйте утилиту cat для создания резервной копии этого файла с именем catcnt.txt .

6. Осуществите вывод содержимого файла catcnt.txt таким образом, чтобы строки из файла были выведены в обратном порядке.

7. Используйте утилиту more для вывода содержимого файла /var/log/messages .

8. Осуществите вывод читаемых пользователем строк из бинарного файла /usr/bin/passwd .

9. Используйте утилиту ls для поиска файла наибольшего размера в директории /etc .

10. Откройте два окна терминала (или вкладки) и убедитесь в том, что в каждом из окон открыта одна и та же директория. Введите команду echo это первая строка > tailing.txt в первом окне терминала, после чего выполните команду tail -f tailing.txt во втором окне терминала. Теперь перейдите в первое окно терминала и введите команду echo это вторая строка >> tailing.txt (обратите внимание на два символа >>), после чего убедитесь в том, что средствами команды tail -f во втором окне терминала выводятся обе строки. Прекратите исполнение команды tail -f с помощью сочетания клавиш Ctrl+C .

11. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого файла tailing.txt , после которых в него должны быть добавлены данные из файла /etc/passwd .

Читайте также:  Панель управления электропитание windows 10

12. Используйте утилиту cat для создания файла с именем tailing.txt , в котором должны содержаться данные из самого этого файла tailing.txt , перед которыми в него должны быть добавлены данные из файла /etc/passwd .

Корректная процедура выполнения практического задания: работа с содержимым файлов

1. Осуществите вывод первых 12 строк файла /etc/services .

2. Осуществите вывод последней строки файла /etc/passwd .

4. Используйте утилиту cp для создания резервной копии этого файла с именем cnt.txt .

5. Используйте утилиту cat для создания резервной копии этого файла с именем catcnt.txt .

6. Осуществите вывод содержимого файла catcnt.txt таким образом, чтобы строки из файла были выведены в обратном порядке.

7. Используйте утилиту more для вывода содержимого файла /var/log/messages .

8. Осуществите вывод читаемых пользователем строк из бинарного файла /usr/bin/passwd .

9. Используйте утилиту ls для поиска файла наибольшего размера в директории /etc .

Источник

Команда head linux

Команда 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-name1.txt file-name2.txt

Разумеется, файлов может быть и три, и четыре, и больше. Чтобы не возникало путаницы, их содержимое автоматически разделяется пустой строкой, а перед текстом выводится название документа.

Чтобы название файла выводилось даже в том случае, когда команде задан только один документ, следует воспользоваться опцией -v:

head -v file-name.txt

Если десяти строк, по умолчанию выводимых командой, окажется слишком мало или слишком много, ничто не мешает изменить их количество вручную. Для этой цели служит опция -n:

head -n file-name.txt

Не будем забывать об еще одном интересном свойстве этой опции. Она позволяет вывести то количество строк, которое останется после «отсечения» лишнего текста. Для этого нужно использовать не сокращенную (однобуквенную), а полную запись опции:

Во время работы в терминале квадратные скобки не используются, знак минуса идет сразу же после знака равно. Вместо NUM следует указать число. Вот как выглядит запись команды и ее результат на скриншоте.

Читайте также:  Mac os vmware готовый образ виртуальная машина

Следует заметить, что строки «отсекаются», начиная с последней.

До этого момента мы (и команда head вместе с нами) считали количество текста построчно. Но это не обязательное условие — с таким же успехом единицей измерения может быть байт. Достаточно сообщить команде о новом правиле работы с помощью опции -с, заодно указав и количество байт, которое нужно вывести на экран (NUM):

head -c NUM file-name.txt

Как и в случае с опцией —lines, можно «отсечь» ненужный объем текста, используя полную форму опции -с — —bytes. Запись команды проводится по тому же принципу и лишние байты тоже отсчитываются, начиная с конца документа:

При записи байт можно использовать буквенные суффиксы:

  • 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-системах, обязательно оставьте комментарий внизу.

Источник

Bash Head and Tail Command Tutorial

You can use any existing file or create any new file to test the functions of ‘head’ and ‘tail’ commands. Here, two text files named products.txt and employee.txt are created to show the use of ‘head’ and ‘tail’ commands.

Run the following command to display the content of products.txt file.

Run the following command to display the content of employee.txt file.

Use of ‘head’ command:

By default, ‘head’ command reads first 10 lines of the file. If you want to read more or less than 10 lines from the beginning of the file then you have to use ‘-n’ option with ‘head’ command.

head command syntax:

head [option] [filename]…[filename]

Using option in ‘head’ command is optional. You can apply ‘head’ command for one or more files.

Example – 1: ‘head’ command without any option

products.txt file has 11 lines with heading. The following command will display the first 10 lines of products.txt file because no option is used with ‘head’ command.

Example – 2: ‘head’ command with -n option and positive value

‘-n’ option with 5 is used in the following ‘head’ command. The first five lines of products.txt file will be shown in the output.

Example – 3: ‘head’ command with -n option and negative value

You can use negative value with ‘-n’ option in ‘head’ command if you want to omit the some lines from the file. The following command will omit the last 7 lines from products.txt file.

Example – 4: ‘head’ command with multiple files

You can apply ‘head’ command for reading specific lines of multiple files. The following command will read first 2 lines of products.txt and employee.txt files.

Use of ‘tail’ command:

By default, ‘tail’ command reads last 10 lines of the file. If you want to read more or less than 10 lines from the ending of the file then you have to use ‘-n’ option with ‘tail’ command.

Читайте также:  Чем отформатировать флешку под линуксом

tail command syntax:

tail [option] [filename]…[filename]

Like ‘head’ command ‘tail’ command is also applicable for multiple files and using option is optional for ‘tail’ command.

Example – 1: ‘tail’ command without any option

employee.txt file has only 6 lines which is less than 10. So, the following command will display the full content of employee.txt file.

Example – 2: ‘tail’ command with -n option and positive value

When you want to read particular lines from the ending of the file then you have to use ‘-n’ option with positive value. The following command will display the last 2 lines of employee.txt file.

Example – 3: ‘tail’ command with -n and negative value

If you want to omit the specific lines from the beginning then you have to use ‘-n’ option with negative value in ‘tail’ command. The following command will display the content of employee.txt file by omitting 3 lines from the beginning.

Example – 4: ‘tail’ command with multiple files

The following command will display the last 3 lines of products.txt and employee.txt file.

Example – 5: Using ‘head’ and ‘tail’ commands together

If you want to read the content from the middle of any file then only ‘head’ or ‘tail’ command can’t solve this problem. You have to use both ‘head’ and ‘tail’ commands together to solve this problem. The following command will read lines from 2 to 6 of products.txt file. At first, ‘head’ command will retrieve first 6 lines by omitting the last 5 lines for negative value and ‘tail’ command will retrieve the last 5 line from the output of ‘head’ command.

I hope after practicing the above examples, anyone will be able to apply ‘head’ and ‘tail’ command properly.

About the author

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.

1 Comment

To omit NUM lines from the beginning of a file when using the tail command, the correct way is to use tail -n +NUM file.txt as described by the manual page. Your article implies that this is done by using tail -n -NUM file.txt (a negative number).

This will not produce the desired behaviour, and the reason that it appears to work on the screenshot in the article is because it is actually just working as if the negative sign is not even there, i.e. as if you just specified NUM.

That means it is outputting the last 3 lines of the file, but since the file only has 6 lines that is the same as omitting the first 3 lines so this mistake is not immediately apparent unless you use a different number than 3, if you used `-n -2` for example it would only print the 2 last lines instead of the 4 last lines which would be expected if you are trying to omit the first 2 lines in a 6 line file. To correct it the only thing you need to do is change the usage of negative with tail to usage of +.

For the head command, using negative is correct. A negative number is only a mistake when used with the tail command, so references to using negative with head do not need to be changed.

Источник

Оцените статью