Конвейер команд в Линукс — часть 2, курсы Astra Linux Вильнюс

Конвейер команд в Линукс — часть 2, курсы Astra Linux Вильнюс

Статьи

В предыдущей статье мы уже познакомили наших читателей с конвейерами команд в Линукс. Стоит отметить, что данная тема крайне важная для изучения всеми, кто планирует стать айтишником в 2023 году. Сегодня мы расскажем о том, как использовать конвейер с командами grep, sort и uniq. Детальнее узнать о способах комбинирования команд помогут курсы Astra Linux Вильнюс на платформе SEDICOMM University.

Использование конвейера с командой grep, курсы Astra Linux Вильнюс

Прежде всего остального, давайте разберемся в том, что собой представляет команда grep. Она является инструментом командной строки Линукс и других UNIX-подобных ОС. Предназначенным для фильтрации текста по заданному шаблону. Если вы хотите научиться использовать данную утилиту в работе, советуем пройти обучение операционный система Linux Вильнюс.

Также, как и в случае с командами head или tail, данная утилита самостоятельно «умеет» извлекать данные из файлов для обработки. Потому ее на самом деле тоже нет смысла объединять конвейером, к примеру, с командой cat. С другой стороны, команда grep часто используется как часть конвейера. Обрабатывая и фильтруя вывод других команд, чтобы он был более информативным и понятным.

Для примера давайте попробуем выполнить фильтрацию вывода команды ls с опцией -l. Выбрав в качестве поискового шаблона слово root. Для этого введите в командную строку следующую комбинацию команд: ls -l | grep ‘root’. В результате вывод будет содержать только те строки вывода, которые включают искомый шаблон. Применительно к команде ls и ее длинному формату вывода, это означает файлы и каталоги. В атрибутах которого в качестве владельца или группы владельца указан суперпользователь.

Теперь давайте используем grep для фильтрации вывода команды tree. Данная утилита предназначена для вывода структуры файловой системы в виде дерева. Предположим, что нас интересуют только те файлы, которые имеют расширение *.tar. То есть, несжатые архивы с данными. В таком случае нужно ввести в командную строку команду tree | grep ‘.tar$’.

В результате на экран будут выведены только те части древовидной структуры файловой системы. Являющиеся архивами tar, к которым не было применено сжатие. То есть, шаблон *.tar обязательно является концом названия файла. Тогда как *.tar.gz или *.tar.bz2 будут проигнорированы как несовпадающие с шаблоном. Детальнее о том, как писать регулярные выражения, поможет узнать курс системный администратор Вильнюс.

Использование конвейера с командами sort и uniq в Линукс

Стоит отметить, что информацию (в том числе — отфильтрованную командой grep), можно дополнительно сделать более удобочитаемой. Например, с помощью команд sort и uniq. Детальнее о том, как их использовать, поможет узнать системный администратор обучение Вильнюс. В целом сейчас вам нужно знать следующее об этих инструментах командной строки Линукс:

  • sort — выполняет сортировку в алфавитном / обратном алфавитному порядке, возрастанию / убыванию числа и так далее;
  • uniq — исключает из вывода повторяющиеся строки.

Как и в случае с grep, данные команды «умеют» самостоятельно считывать данные для обработки из файла. Однако с помощью конвейера вы также можете расширить свои возможности по обработке вывода других утилит. Для примера давайте отсортируем в алфавитном порядке длинный формат вывода команды ls: ls -l | sort.

Стоит отметить, что по умолчанию вывод этой команды сортирует строки по названиям файлов в алфавитном порядке. Тогда как утилита sort без дополнительных опций сортирует строки по их первому символу. В данном случае — по типу файла (сначала будут каталоги, потом обычные файлы).

Теперь давайте попробуем помимо сортировки по алфавиту добавить функцию удаления повторов из вывода. Допустим, что у вас есть файл с именами пользователей. Однако в данном файле имеются повторяющиеся строки. Чтобы получить вывод в алфавитном порядке и без повторов. Введите в командную строку команду sort filename.txt | uniq.

Команда SEDICOMM University: Академия Cisco, Linux Professional Institute, Python Institute.