Вы когда-нибудь задумывались, как эти гуру Linux пишут непонятные команды в командной строке и как они выполняют свою работу?

Вы когда-нибудь сталкивались с ситуациями, когда вы копировали код, чтобы сделать что-то на своем компьютере с Linux, но никогда не имели возможности понять, что означает этот странный знак "|"?

Then you are on the wrong page gentleman, go study those huge ass Linux Manual pages and learn it for yourself. You cheeky goose monkey!!
JOKING | KIDDING | BEING SARCASTIC 

Вот мое краткое руководство для начинающих «Трубопроводы в Linux 101». Без дальнейших церемоний, давайте нырнем прямо.

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

Для новичков «Конвейер — это не что иное, как соединение потока одной команды или программы с другой командой или программой. Прежде чем углубиться в «конвейер», давайте также поймем, что мы подразумеваем под «потоком». Поток — это просто стандартный вывод одной команды или программы. Давайте разберемся во всем этом на простом примере.

Вкратце: есть очень-очень распространенная команда Linux под названием ls, которая просто выводит список всех файлов или каталогов в любом целевом каталоге.

По умолчанию в нем перечислены файлы для каталога, в котором в данный момент находится пользователь. Так что я, находящийся в настоящее время в каталоге «mediumTest», перечислил все файлы и каталоги, которые были внутри него.

Теперь, когда вы видите, что «поток» в этом случае был выходом команды ls, мы можем далее обработать этот «поток» в другую команду и заставить ее делать что-то еще для нас. Но как это сделать? Здесь вступает в действие "Трубопровод".

Теперь я просто направлю вывод командыls , скажем, в команду sort, которая просто сортирует все, что ей передается.

ls | sort

Давайте поймем используемый здесь жаргон, системы Linux позволяют использовать стандартный вывод команды в качестве стандартного ввода другой команды с использованием вертикальной черты «|».

Вы также можете визуализировать это как временное соединение между двумя или более командами/программами/процессами.

Каналы однонаправлены, т. е. данные идут в одном направлении, слева направо.

syntax: command 1 | command 2 | command 3 | command 4...| command n

Здесь вывод command 1 будет обрабатываться как ввод command 2, и цикл будет продолжаться и продолжаться до command n;

Давайте посмотрим еще несколько примеров,

ls -l /usr/bin/ | less

это приведет к выводу ls -l /usr/bin/, который будет просто перечислять все файлы в каталоге /usr/bin/ в длинном формате, а затем это будет передано нашей команде less, которая, в свою очередь, выведет информацию один scenful вовремя.

Теперь главный вопрос: зачем все это знать, почему мы не можем просто использоватьls и прокручивать вывод?

Дело в том, что все дело в эффективности программиста, /usr/bin/ содержит почти "1676" файлов, и пролистывание каждого из них было бы пустой тратой времени.

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

Я просто передал ls -l /usr/bin, который перечисляет все файлы в строку за строкой, с помощью команды wc -l, которая подсчитывает количество строк.

Это одно из преимуществ конвейерной обработки: она выполняет свою работу, занимает минимальное время и очень эффективна.

Что такое Ти?

Если вы когда-нибудь видели, как работают сантехники, то все, что они делают, — это трубопровод, перенаправляя поток воды из одной трубы в другую. Но иногда им нужно объединить или разделить поток трубы, и здесь в дело вступает плохой мальчик «Ти».

В концепциях трубопроводов у нас тоже есть тройник, давайте посмотрим, как он используется через команду и его вариант использования.

Например, если вам нужно перечислить 3 самых больших файла, присутствующих в /usr/bin/ вашего компьютера с Linux, и вы также должны сохранить тот же результат в другом файле, например, «3badboys.txt». И все это с помощью одной-единственной команды, как ты собираешься это сделать? ну, труба с тройником - это ответ.

Давайте подумаем над решением вместе и интуитивно. Нам нужно перечислить файлы, поэтому мы можем использовать команду ls, мы также должны отсортировать их по размеру файлов, поэтому мы должны использовать команду sort

du -ha /usr/bin/ | sort -h | tail -4 | head -3 |tee 3bigboys.txt

du лучше, чем ls, для обработки использования диска, -h для чтения человеком, -a для всех внутренних файлов, здесь, в конце концов, с |tee мы просто также направляем вывод в новый файл «3badboys.txt». tail -4 | head -3 (включите свою голову, чтобы расшифровать это, а то ругайте меня в разделе комментариев!!)

Давайте запустим эту команду,

отлично, теперь давайте также проверим, создан ли файл «3badboys.txt» или нет.

cat 3badboys.txt

Этого вполне достаточно для «Трубопровода в Linux 101», увидимся, братан.