Трубопровод в Unix или Linux

Опубликовано: 16 Февраля, 2022

Канал - это форма перенаправления (передача стандартного вывода в другое место назначения), которая используется в Linux и других Unix-подобных операционных системах для отправки вывода одной команды / программы / процесса другой команде / программе / процессу для дальнейшей обработки. . Системы Unix / Linux позволяют подключать стандартный вывод команды к стандартному вводу другой команды. Вы можете сделать это, используя вертикальную черту '|' .

Канал используется для объединения двух или более команд, и в этом случае выходные данные одной команды действуют как входные данные для другой команды, а выходные данные этой команды могут выступать в качестве входных данных для следующей команды и так далее. Его также можно визуализировать как временное соединение между двумя или более командами / программами / процессами. Программы командной строки, выполняющие дальнейшую обработку, называются фильтрами.

Это прямое соединение между командами / программами / процессами позволяет им работать одновременно и позволяет передавать данные между ними непрерывно, вместо того, чтобы передавать их через временные текстовые файлы или через экран дисплея.
Каналы являются однонаправленными, т. Е. Данные передаются по конвейеру слева направо.

Синтаксис:

 command_1 | command_2 | command_3 | .... | command_N

Пример :
1. Вывести список всех файлов и каталогов и передать его в качестве входных данных для команды more.

$ ls -l | more 

Выход :

Команда more принимает в качестве входных данных вывод $ ls -l. Чистый эффект этой команды заключается в том, что вывод ls -l отображается по одному экрану за раз. Канал действует как контейнер, который принимает выходные данные команды ls -l и передает их в качестве входных данных. Эта команда не использует диск для подключения стандартного вывода ls -l к стандартному вводу more, потому что конвейер реализован в основной памяти.
С точки зрения операторов перенаправления ввода-вывода приведенная выше команда эквивалентна следующей последовательности команд.

$ ls -l -> темп
more -> temp (или more temp)
[содержание температуры]
rm temp

Выход :

Вывод двух вышеуказанных команд одинаков.

2. Используйте команду sort и uniq, чтобы отсортировать файл и распечатать уникальные значения.

 $ sort record.txt | уникальный

Это отсортирует данный файл и напечатает только уникальные значения.
Выход :

3. Используйте head и tail для печати строк в определенном диапазоне в файле.

 $ cat sample2.txt | голова -7 | хвост -5

Эта команда выбирает первые 7 строк через команду (head -7), и она будет введена в команду (tail -5), которая, наконец, напечатает последние 5 строк из этих 7 строк.
Выход :

4. Используйте ls и find, чтобы перечислить и распечатать все строки, соответствующие определенному шаблону в совпадающих файлах.

 $ ls -l | найти ./ -type f -name "* .txt" -exec grep "program" {} ;

Эта команда выбирает файлы с расширением .txt в заданном каталоге и выполняет поиск шаблона, такого как «программа» в приведенном выше примере, и распечатывает те файлы, в которых есть программа.
Выход :

5. Используйте команду cat, grep, tee и wc, чтобы прочитать конкретную запись от пользователя и сохранить в файле и распечатать количество строк.

 $ cat result.txt | grep "Раджат Дуа" | tee file2.txt | wc -l

Эта команда выбирает Rajat Dua и сохраняет их в file2.txt и выводит общее количество строк, соответствующих Rajat Dua.
Выход :