- Фундаментальные основы Linux. Часть II: Первые шаги в изучении интерфейса командной строки
- Глава 8. Работа с содержимым файлов
- Утилита head
- Утилита tail
- Утилита cat
- Утилита tac
- Утилиты more и less
- Утилита strings
- Практическое задание: работа с содержимым файлов
- Корректная процедура выполнения практического задания: работа с содержимым файлов
- Cat head tail linux
- Операции с файлами и фильтрация
- cat, tail, head, tee: Команды для вывода содержимого файлов
- grep: Поиск строк в файлах
- wc: Подсчёт элементов в файлах
- sort: Сортировка содержимого файла
- Эффективное управление файлами с помощью команд head, tail и cat в Linux
- 1. Команда головы
- 2. Команда tail
- 3. Команда cat
Фундаментальные основы 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 .
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 .
Источник
Cat head tail linux
Библиотека сайта rus-linux.net
Операции с файлами и фильтрация
Chapter 5. Утилиты командной строки
Операции с файлами и фильтрация
Основная часть работы в командной строке ведётся с файлами. В этом разделе мы рассмотрим, как просматривать и фильтровать содержимое файлов, извлекать из файлов нужную информацию при помощи одной команды и сортировать их содержимое.
cat, tail, head, tee: Команды для вывода содержимого файлов
Эти команды имеют почти один и тот же синтаксис: имя_команды [опции] [файл(ы)], и могут быть использованы в каналах. Все они используются для вывода части файла согласно определенным критериям.
Утилита cat объединяет файлы и выводит результат на стандартный вывод. Это одна из наиболее широко используемых команд. Вы можете использовать:
для вывода, например, содержимого файла с журналом почтового демона на стандартный вывод [14] . Команда cat имеет очень полезную опцию ( -n ), которая позволяет вам выводить номера строк.
Некоторые файлы, типа журналов демонов (если они запущены) обычно имеют довольно большой размер [15] и полный их вывод на экран будет не очень полезным. Часто вам нужно увидеть только несколько строк из файла. Для этого вы можете воспользоваться командой tail . Следующая команда выведет (по умолчанию) последние 10 строк из файла /var/log/mail/info :
Вы можете использовать опцию -n для вывода последних N строк файла. Например, для вывода последних 2-х строк наберите:
Команда head похожа на tail , но она выводит первые строки файла. Следующая команда выведет (по умолчанию) первые 10 строк файла /var/log/mail/info :
Как и в случае с tail вы можете использовать опцию -n для указания количества выводимых строк. Например, для вывода первых 2-х строк наберите:
Также вы можете использовать эти две команды совместно. Например, если вы хотите увидеть только строки 9 и 10, вы можете воспользоваться командой, в которой head выберет первые 10 строк из файла и передаст их по каналу в команду tail.
Затем вторая часть команды отберет последние 2 строки и выведет их на экран. Таким же способом вы можете выбрать 20-ю от конца файла строку:
В этом примере мы говорим команде tail выбрать последние 20 строк файла и передать их по каналу в head. Затем команда head выводит на экран первую строку из полученных данных.
Допустим, что результат последнего примера нам нужно одновременно вывести на экран и сохранить его в файл results.txt . В этом нам может поможет утилита tee . Ее синтаксис:
Теперь мы можем изменить предыдущую команду следующим образом:
Давайте рассмотрим еще один пример. Нам нужно выбрать последние 20 строк, сохранить их в файл results.txt , а на экран вывести только первую из них. Тогда мы должны ввести следующее:
У команды tee есть полезная опция ( -a ), которая позволяет вам дописать данные в конец существующего файла.
Давайте вернемся назад к команде tail . Такие файлы как журналы обычно динамически изменяются, т.к. демон постоянно добавляет в них отчет о совершенных действиях или событиях. Поэтому, если вам нужно наблюдать за изменениями в лог-файле в режиме реального времени, тогда вам нужно воспользоваться преимуществами опции -f :
В этом случае все изменения в файле /var/log/mail/info будут немедленно выводиться на экран. Использование команды tail с опцией -f весьма полезно, когда вам нужно знать, как работает ваша система. Например, наблюдая за файлом журнала /var/log/messages , вы сможете всегда получать обновленную информацию о системных сообщенях и различных демонах.
В следующем разделе мы рассмотрим, как можно использовать утилиту grep в качестве фильтра для отделения сообщений Postfix от сообщений других служб.
grep: Поиск строк в файлах
Ни имя команды, ни ее аббревиатура (“General Regular Expression Parser” — синтаксический анализатор общих регулярных выражений) не слишком интуитивны, но ее действие и ее использование довольно просты для понимания: grep выполняет поиск в одном или нескольких файлах по шаблону, заданному в качестве аргумента. Ее синтаксис:
Если указано несколько файлов, в отображаемом результате их имена будут выводиться перед каждой найденной строкой. Для предотвращения вывода этих имен используйте опцию -h ; используйте опцию -l для вывода только имен файлов с найденными совпадениями. Шаблон — это регулярное выражение, хотя в большинстве случаев он состоит просто из одного слова. Наиболее часто используемые опции:
- -i : поиск без учета регистра (т.е. игнорирование разницы между верхним и нижним регистром);
- -v : обратный поиск. Вывод строк, которые не соответствуют шаблону;
- -n : вывод номера строки для каждой из найденных строк;
- -w : сообщает grep’у, что шаблон должен совпадать со всем словом.
Итак, давайте теперь вернемся к анализу лог-файла почтового демона. Нам необходимо найти все строки в файле /var/log/mail/info , содержащие шаблон “postfix”. Для этого мы вводим такую команду:
Команда grep может быть использована в канале. Так мы можем получить такой же результат, что и в предыдущем примере, при помощи следующего:
Если нам нужно найти все строки, не содержащие шаблона “postfix”, нам надо будет воспользоваться опцией -v :
Давайте предположим, что нам необходимо найти все сообщения об успешно отправленных письмах. В этом случае мы должны отфильтровать все строки, добавленные почтовым демоном в файл журнала (содержащие шаблон “postfix”), и они должны содержать сообщение об успешной отправке (“status=sent”):
В этом случае команда grep использована дважды. Это разрешается, но не совсем красиво. Мы можем получить тот же результат при помощи утилиты fgrep . Сначала нам нужно создать файл, содержащий шаблоны, записанные в столбик. Такой файл может быть создан следующим образом (мы используем patterns.txt в качестве имени файла):
Затем мы вызываем следующую команду, в которой мы используем файл patterns.txt со списком шаблонов и утилиту fgrep вместо “двойного вызова” команды grep:
Файл ./patterns.txt может содержать сколько угодно шаблонов. Каждый из них должен быть введен в виде одной строки. Например, для выборки сообщений о письмах, успешно отправленных на адрес peter@mandrakesoft.com , достаточно будет добавить адрес этого электронного ящика в наш файл ./patterns.txt , выполнив следующую команду:
Понятное дело, что вы можете комбиноровать команду grep с tail и head . Если нам нужно найти сообщения о предпоследнем электроном письме, отправленном на адрес peter@mandrakesoft.com , мы используем:
Здесь мы применили описанный выше фильтр и отправили результат через канал в команды tail и head. Они выбрали из данных предпоследнее значение.
wc: Подсчёт элементов в файлах
Команда wc (Word Count — подсчёт слов) используется для подсчёта числа строк и слов в файлах. Она также полезна для подсчёта байтов, символов и длины самой длинной строки. Её синтаксис:
Список полезных опций:
- -l : вывод количества новых строк;
- -w : вывод количества слов;
- -m : вывод общего количества символов;
- -c : вывод количества байт;
- -L : вывод длины самой длинной строки в заданном тексте.
По умолчанию команда wc выводит количество новых строк, слов и символов. Вот несколько примеров использования:
Если нам нужно определить число пользователей в нашей системе, мы можем ввести:
Если нам нужно узнать число CPU в нашей системе, мы пишем:
В предыдущем разделе мы получили список сообщений об успешно отправленных письмах на адреса, перечисленные в нашем файле ./patterns.txt . Если нам нужно узнать количество таких сообщений, мы можем перенаправить наш отфильтрованный результат через канал в команду wc :
sort: Сортировка содержимого файла
Ниже представлен синтаксис этой можно утилиты для сортировки [16] :
Давайте отсортируем часть файла /etc/passwd . Как видите сам по себе этот файл не отсортирован:
Если нам нужно отсортировать его по полю login , мы набираем:
По умолчанию команда sort сортирует информацию по первому полю в порядке возрастания (в нашем случае по полю login ). Если нам нужно отсортировать данные в порядке убывания, мы используем опцию -r :
Для каждого пользователья имеется свой собственный UID , записанный в файле /etc/passwd . Давайте отсортируем этот файл в порядке возрастания по полю UID :
Здесь мы используем следующие опции sort:
- -t»:» : сообщает sort ‘у, что разделителем полей является символ «:» ;
- -k3 : означает, что сортировка должна быть выполнена по по третьему столбцу;
- -n : сообщает, что выполняется сортировка числовых данных, а не буквенных.
То же самое может быть выполнено в обратном порядке:
Обратите внимание, что sort обладает двумя важными опциями:
- -u : строгая сортировка: исключаются повторяющиеся поля сортировки;
- -f : игнорирование регистра (строчные символы обрабатываются так же, как и прописные).
И в заключение, если нам нужно найти пользователя с наивысшим UID , мы можем воспользоваться этой командой:
, где мы сортируем файл /etc/passwd в порядке возрастания по столбцу UID и прогоняем результат по каналу через команду tail , которая выводит первое значение из отсортированного списка.
[14] Некоторые примеры в этом разделе основаны на реальной работе с файлами журналов некоторых серверов (служб, демонов). Убедитесь, что у вас запущен syslogd (разрешает журналирование демонов), соответствующий демон (в нашем случае Postfix), и что вы в работаете под root ‘ом. И, естественно, вы всегда можете применять наши примеры к другим файлам.
[15] Например, файл /var/log/mail/info содержит информацию обо всех отправленных письмах, сообщениях о выборке почты пользователями по протоколу POP и т.д.
[16] Здесь мы только вкратце рассмотрим sort , потому что о её возможностях можно написать целую книгу.
Источник
Эффективное управление файлами с помощью команд head, tail и cat в Linux
В Linux есть несколько команд и программ для просмотра содержимого файла. Работа с файлами — одна из сложных задач, которую выполняет большинство пользователей компьютеров, будь то новичок, обычный пользователь, опытный пользователь, разработчик, администратор и т. Д. Эффективная и действенная работа с файлами — это искусство.
Сегодня в этой статье мы обсудим самые популярные команды, называемые head, tail и cat, большинство из нас уже знает о таких командах, но очень немногие из нас реализуют их, когда это необходимо.
1. Команда головы
Команда head считывает первые десять строк любого имени файла. Базовый синтаксис команды head:
Например, следующая команда отобразит первые десять строк файла с именем «/ etc/passwd».
Если указано более одного файла, head покажет первые десять строк каждого файла отдельно. Например, следующая команда покажет десять строк каждого файла.
Если желательно получить большее количество строк, чем десять по умолчанию, то используется опция «-n» вместе с целым числом, указывающим количество строк, которые должны быть извлечены. Например, следующая команда отобразит первые 5 строк из файла «/var/log/yum.log».
Фактически, нет необходимости использовать параметр «-n». Просто поставьте дефис и укажите целое число без пробелов, чтобы получить тот же результат, что и в приведенной выше команде.
Команда head также может отображать любое желаемое количество байтов, используя параметр «-c», за которым следует количество отображаемых байтов. Например, следующая команда отобразит первые 45 байтов данного файла.
2. Команда tail
Команда tail позволяет отображать последние десять строк любого текстового файла. Подобно команде head выше, команда tail также поддерживает параметры «n» количество строк и «n» количество символов.
Базовый синтаксис команды tail:
Например, следующая команда напечатает последние десять строк файла с именем «access.log».
Если предоставлено более одного файла, tail напечатает последние десять строк каждого файла, как показано ниже.
Точно так же вы также можете распечатать последние несколько строк, используя параметр «-n», как показано ниже.
Вы также можете напечатать количество символов, используя аргумент «-c», как показано ниже.
3. Команда cat
Команда «кошка» — наиболее широко используемый и универсальный инструмент. Он копирует стандартный ввод в стандартный вывод. Команда поддерживает прокрутку, если текстовый файл не умещается на текущем экране.
Базовый синтаксис команды cat:
Чаще всего cat используется для чтения содержимого файлов. Все, что требуется, чтобы открыть файл для чтения, — это ввести cat, затем пробел и имя файла.
Команда cat также используется для объединения нескольких файлов.
Его также можно использовать для создания файлов. Это достигается путем выполнения cat, за которым следует оператор перенаправления вывода и имя создаваемого файла.
У нас может быть специальный производитель концов для команды «кошка». Вот это реализовано.
Никогда не недооценивайте силу команды «cat», она может быть полезна для копирования файлов.
А что противоположно кошке? Да, это «тактика». «Tac» — это команда под Linux. Лучше показать пример «тактика», чем что-либо о нем говорить.
Создайте текстовый файл с названиями всех месяцев так, чтобы в строке появлялось одно слово.
Дополнительные примеры использования команды cat см. В разделе 13 Использование команд cat.
На этом пока все. Я снова буду здесь с другой интересной статьей, о которой стоит знать. А пока следите за обновлениями и подключайтесь к Tecmint. Не забудьте оставить свой ценный отзыв в разделе комментариев.
Источник