Перенаправление ввода-вывода — это важная функция командной строки Linux, которая позволяет объединять несколько команд и выполнять сложные операции с ними. Одной из особенностей этой функции является создание конвейеров (труб). Оператор конвейера (|
) позволяет использовать вывод одной команды в качестве ввода для другой, создавая поток данных.
В этой статье мы покажем Вам несколько примеров использования конвейеров в Linux с командами xargs
и tee
.
Содержание:
Что такое конвейер в Linux
Конвейер (труба) в Linux — это способ соединения нескольких команд, когда вывод предыдущей служит вводом для следующей. Каждая команда в конвейере работает с полученными данными, выполняя определенные операции или преобразования.
В Linux существует множество утилит, которые обычно используются с трубами. Вот несколько примеров:
head
— извлекает первые несколько строк ввода;tail
— извлекает последние несколько строк ввода;sort
— сортирует строки в заданном порядке (например, по алфавиту или по возрастанию числа);xargs
— запускает команды на основе ввода от другой команды;tee
— считывает строки из стандартного ввода и записывает их в стандартный вывод и файл;wc
— подсчитывает количество строк, слов и символов во вводимом тексте.
Общий синтаксис команд с конвейером выглядит следующим образом:
Проще всего продемонстрировать принцип работы конвейера с помощью команд head
или tail
. К примеру:
Здесь мы передали вывод команды dmesg
на ввод head
. После чего последняя выбрала первые десять строк и вывела их на экран.
Более сложные конструкции с трубами можно строить с помощью команд xargs
и tee
. Предлагаем Вам рассмотреть несколько примеров с ними.
Команда xargs
Утилита xargs
берет данные из стандартного ввода, разбивает их в соответствии с указанными параметрами, а затем передает другой команде в качестве аргумента. Утилита особенно полезна, когда нужно обработать список элементов или выполнить действия над несколькими файлами.
Например, у нас в каталоге есть определенное количество файлов с расширением *.txt
. С помощью команды ls
и опции -1
выведем их в колонку:
Затем, используя xargs
, расположим выведенные на экран файлы в один ряд:
Читайте также: 12 практических примеров команды xargs для начинающих в Linux, xargs примеры.
Можно усложнить предыдущую конструкцию, добавив к xargs
команду wc
. Например:
Таким образом, с помощью конвейера и команды xargs
мы подсчитали количество строк (в первом случае) и количество слов (во втором случае) в каждом файле.
Команда tee
Утилита tee
в Linux позволяет читать стандартный поток ввода и одновременно как записывать его содержимое в файл, так и перенаправлять в стандартный вывод. Она берет результат работы другой команды и перенаправляет его в несколько мест назначения.
В качестве примера мы будем использовать конструкцию команд с двумя конвейерами:
Читайте также: Команда tee в Linux с примерами.
Разберем ее подробнее:
ps
— команда для получения списка текущих процессов, работающих в системе.-eo cmd,pid,ppid,%mem,%cpu
— опция-eo
выводит на экран указанные в качестве аргументов колонки данных командыps
:cmd
— путь расположения команды;pid
— идентификатор процесса;ppid
— идентификатор родительского процесса;%mem
— использование памяти;%cpu
— использование ЦП каждым процессом.
--sort=-%mem
— опция, которая применяется для сортировки вывода по использованию памяти в порядке убывания (-%mem
).head
— команда, которая с помощью конвейера|
принимает вывод командыps
и отображает только первые десять строк вывода.tee file.txt
— команда, с помощью конвейера|
считывает результат работыhead
и записывает его одновременно на экран и в файлfile.txt
.
По умолчанию команда tee
перезаписывает существующие файлы новым содержимым. Используя параметр -a
, Вы укажете команде добавлять новые строки в конец файла вместо перезаписи. Например:
С помощью этой опции мы записали первые десять строк файла 1.txt
в конец file.txt
и вывели их на экран.
Выводы
В этой статье мы разобрали несколько примеров использования конвейера с командами xargs
и tee
. Освоив применение труб, Вы сможете значительно повысить свою производительность работы с потоками данных в командной строке Linux.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.