Объяснение труб в Linux

Трубы — это мощный инструмент в операционной системе Linux с открытым исходным кодом. Например, трубы Linux позволяют обрабатывать серию команд, которые ссылаются на набор данных, или эффективно перемещать данные туда и обратно между командами. Преимущество заключается в том, что сложные процессы упрощаются, поскольку отдельные команды становятся настоящей «командной группой». Узнайте подробнее, как работают pipes в Linux и почему эта команда так полезна.

Что такое трубы в Linux?

Термин «pipe» происходит от слова «pipeline». В информатике трубопровод — это поток данных, проходящий между двумя процессами, которые либо тесно связаны, либо не имеют общего происхождения. Это означает, что результат, выводимый одной программой, служит входом для другой программы. Помимо прочего, это позволяет разделить большие проблемы на более мелкие подпроблемы для лучшего обзора.

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

Примечание

Логическое связывание команд, конечно, не является чем-то необычным в информатике. С помощью команды linux in, например, можно простейшим способом установить ссылку на файл или каталог. В нашей обзорной статье мы расскажем, какие еще важные команды Linux вам следует знать.

Синтаксис команды pipe в Linux и примеры использования

Для того чтобы правильно использовать трубы в Linux, полезно сначала понять синтаксис. Ниже вы увидите сначала структуру команды pipe, а затем примеры того, как она выглядит в вашем терминале или командной строке.

Примечание

Наши инструкции относятся к широко распространенным установкам Ubuntu, которые доступны бесплатно и регулярно обновляются.

Command-1 | Command-2 | …| Command-N

Как вы можете видеть, синтаксис безымянной трубы довольно прост. Он состоит из символа «|», который помещается, например, между двумя другими командами. В приведенном ниже примере труба действует только временно.

$ cat contents.txt |grep file
0 Aug  9 13:55  file1
0 Aug  9 13:55  file2
0 Aug  9 13:55  file3
0 Aug  9 13:55  file4
0 Aug  9 13:55  file5
$ cat contents.txt |grep "file"|awk '{print $8}'
file1
file2
file3
file4
file5
$ cat contents.txt |wc -l
8
$

Выше, в файле contents.txt содержится список всех файлов в каждом каталоге — точнее, вывод команды ls -al. Сначала мы передаем имена файлов с ключевым словом «file» из contents.txt, чтобы вывод команды cat послужил входом для команды grep. Затем мы передаем команду awk, которая отображает 8-й столбец отфильтрованного вывода команды grep. Мы также можем подсчитать количество строк в файле contents.txt с помощью команды wc -l.

Совет

Команду grep можно использовать для поиска строк из кода и файлов журналов. Если вы хотите легко найти файл Linux в командной строке, используйте эту команду.

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

 

mkfifo <named-pipe>

или

mknod p <named-pipe>

Представьте, что у вас есть процесс, запущенный в одном терминале, который производит вывод. Теперь вы хотите передать этот вывод на второй терминал. Здесь вам очень поможет именованная труба. Чтобы перенаправить стандартный вывод любой команды другому процессу, используйте символ «>». Чтобы перенаправить стандартный ввод любой команды, используйте символ «<«. В следующем примере вы назвали трубу в первом терминале.

$ mkfifo named-pipe
$ ls > named-pipe

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

$ cat < named-pipe

В следующий раз, когда вы будете работать с командами pipe в Linux и вам понадобится переместить данные между командами, вы, надеюсь, сможете сделать это быстро и легко с помощью безымянного или именованного pipe.

Совет

Вы используете Linux и ищете комплексный пакет веб-хостинга, который позволит вам самостоятельно писать все части программного кода или использовать интуитивно понятный набор конструктора? Linux хостинг от IONOS имеет масштабируемую производительность, защиту от DDoS, георезервирование и многие другие возможности.

Оцените статью
cdelat.ru
Добавить комментарий