Примеры использования конвейеров в Linux

Примеры использования конвейеров в Linux

Рубрики:

Linux, xargs, Утилиты Linux

Метки:

, , ,

Перенаправление ввода-вывода — это важная функция командной строки Linux, которая позволяет объединять несколько команд и выполнять сложные операции с ними. Одной из особенностей этой функции является создание конвейеров (труб). Оператор конвейера (|) позволяет использовать вывод одной команды в качестве ввода для другой, создавая поток данных.

В этой статье мы покажем Вам несколько примеров использования конвейеров в Linux с командами xargs и tee.

Содержание:

  1. Что такое конвейер в Linux
  2. Команда xargs
  3. Команда tee
  4. Выводы

Что такое конвейер в Linux

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

В Linux существует множество утилит, которые обычно используются с трубами. Вот несколько примеров:

  • head — извлекает первые несколько строк ввода;
  • tail — извлекает последние несколько строк ввода;
  • sort — сортирует строки в заданном порядке (например, по алфавиту или по возрастанию числа);
  • xargs — запускает команды на основе ввода от другой команды;
  • tee — считывает строки из стандартного ввода и записывает их в стандартный вывод и файл;
  • wc — подсчитывает количество строк, слов и символов во вводимом тексте.

Общий синтаксис команд с конвейером выглядит следующим образом:

 

Проще всего продемонстрировать принцип работы конвейера с помощью команд head или tail. К примеру:

 

head

Здесь мы передали вывод команды dmesg на ввод head. После чего последняя выбрала первые десять строк и вывела их на экран.

Более сложные конструкции с трубами можно строить с помощью команд xargs и tee. Предлагаем Вам рассмотреть несколько примеров с ними.

Команда xargs

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

Например, у нас в каталоге есть определенное количество файлов с расширением *.txt. С помощью команды ls и опции -1 выведем их в колонку:

 

Затем, используя xargs, расположим выведенные на экран файлы в один ряд:

 

ls-xargs

Читайте также: 12 практических примеров команды xargs для начинающих в Linux, xargs примеры.

Можно усложнить предыдущую конструкцию, добавив к xargs команду wc. Например:

 

ls-xargs-wc

Таким образом, с помощью конвейера и команды xargs мы подсчитали количество строк (в первом случае) и количество слов (во втором случае) в каждом файле.

Команда tee

Утилита tee в Linux позволяет читать стандартный поток ввода и одновременно как записывать его содержимое в файл, так и перенаправлять в стандартный вывод. Она берет результат работы другой команды и перенаправляет его в несколько мест назначения.

В качестве примера мы будем использовать конструкцию команд с двумя конвейерами:

 

tee-to-file

Читайте также: Команда tee в Linux с примерами.

Разберем ее подробнее:

  1. ps — команда для получения списка текущих процессов, работающих в системе.
  2. -eo cmd,pid,ppid,%mem,%cpu — опция -eo выводит на экран указанные в качестве аргументов колонки данных команды ps:
    • cmd — путь расположения команды;
    • pid — идентификатор процесса;
    • ppid — идентификатор родительского процесса;
    • %mem — использование памяти;
    • %cpu — использование ЦП каждым процессом.
  3. --sort=-%mem — опция, которая применяется для сортировки вывода по использованию памяти в порядке убывания (-%mem).
  4. head — команда, которая с помощью конвейера | принимает вывод команды ps и отображает только первые десять строк вывода.
  5. tee file.txt — команда, с помощью конвейера | считывает результат работы head и записывает его одновременно на экран и в файл file.txt.

По умолчанию команда tee перезаписывает существующие файлы новым содержимым. Используя параметр -a, Вы укажете команде добавлять новые строки в конец файла вместо перезаписи. Например:

 

tee-add-to-file

С помощью этой опции мы записали первые десять строк файла 1.txt в конец file.txt и вывели их на экран.

Выводы

В этой статье мы разобрали несколько примеров использования конвейера с командами xargs и tee. Освоив применение труб, Вы сможете значительно повысить свою производительность работы с потоками данных в командной строке Linux.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Linux, xargs, Утилиты Linux

Метки:

, , ,

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню