Объединение команд в конвейер (|)
Узнайте, как конвейеры связывают команды, передавая вывод одной команды в качестве входных данных другой для выполнения сложных операций.
«Объединение команд в конвейер (|)» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Объединение команд с помощью каналов
Добро пожаловать! В Linux часто требуется объединить возможности нескольких команд, чтобы получить определённый результат. Здесь на помощь приходят каналы.
Канал позволяет передать вывод одной команды непосредственно на ввод другой. Представьте его как конвейер для данных!
Символ канала '|'
Символ канала — вертикальная черта: |. Его помещают между двумя командами.
- Команда слева отправляет свой стандартный вывод (то, что обычно выводится на экран).
- Команда справа получает этот вывод как стандартный ввод.
Это фундаментальная концепция эффективной работы в командной строке!
Ваш первый канал: `ls | less`
Посмотрим, как работает канал. Команда ls -l /usr/bin выводит список множества файлов, который часто не помещается на одном экране.
Передав её вывод команде less, можно просматривать его постранично. Попробуйте выполнить этот пример:
ls -l /usr/bin | lessФильтрация вывода с помощью `grep`
Каналы отлично подходят для фильтрации. Команда grep ищет шаблоны в тексте. В сочетании с каналом она может фильтровать вывод другой команды.
Эта команда выводит список всех файлов в текущем каталоге, а затем оставляет только файлы, имена которых заканчиваются на .txt:
ls | grep .txtПодсчёт элементов с помощью `wc`
Команда wc (подсчёт слов) может подсчитывать строки, слова или символы. При использовании с каналом она выполняет подсчёт во входных данных, переданных по каналу.
Чтобы подсчитать количество файлов .txt в текущем каталоге, можно объединить команды ls, grep и wc -l (подсчёт строк):
ls | grep .txt | wc -lОбъединение нескольких команд
Вы не ограничены всего двумя командами! Можно объединить множество команд с помощью нескольких каналов, создавая мощные последовательности.
Каждый канал передаёт вывод предыдущей команды следующей команде в цепочке:
ps aux | grep chrome | wc -lСортировка вывода из канала (`sort`)
Команда sort упорядочивает строки текста в алфавитном или числовом порядке. Её часто используют после канала для организации данных.
В этом примере содержимое /etc выводится и сортируется в обратном алфавитном порядке, после чего показываются только первые 5 результатов:
ls /etc | sort -r | head -n 5Поиск уникальных строк (`uniq`)
Команда uniq удаляет повторяющиеся соседние строки. Наиболее эффективно использовать её после sort, которая собирает одинаковые строки вместе.
Давайте отсортируем список фруктов, а затем найдём уникальные элементы:
echo -e "apple\nbanana\napple\norange" | sort | uniqКаналы и перенаправление ввода-вывода
Помните о перенаправлении ввода-вывода (>, >>, <) из предыдущего урока?
- Каналы (
|): соединяют вывод одной команды с вводом другой команды. Благодаря этому данные передаются между программами. - Перенаправление (
>,<): соединяет ввод-вывод команды с файлом. Это позволяет сохранять данные на диске или читать их с диска.
Оба механизма мощны, но предназначены для разных целей.
Проверка знаний о каналах
Вы научились объединять команды с помощью каналов. Давайте проверим, насколько хорошо вы усвоили материал!
Повторение: возможности каналов
Отличная работа! Вы освоили основы передачи данных между командами в Linux.
- Каналы (
|) соединяют вывод одной команды с вводом другой. - Они позволяют объединять команды в цепочки для мощной фильтрации, сортировки и обработки данных.
- Каналы отличаются от перенаправления ввода-вывода, которое соединяет команды с файлами.
Продолжайте практиковаться с разными командами и наблюдайте, чего можно достичь, объединяя их!
Часто задаваемые вопросы
Урок «Объединение команд в конвейер (|)» бесплатный?
Да — полный текст урока «Объединение команд в конвейер (|)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Объединение команд в конвейер (|)»?
Узнайте, как конвейеры связывают команды, передавая вывод одной команды в качестве входных данных другой для выполнения сложных операций. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Объединение команд в конвейер (|)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Управление процессами (ps, top, kill)
- Перенаправление ввода и вывода (>, >>, <)
- Объединение команд в конвейер (|)
- Фоновые задания и управление заданиями