Раз у одного процесса есть вход, а у другого — выход, и их можно подменять, то логично предположить, что их можно соединить. Данный подход носит название pipeline (конвейер). Благодаря пайплайну можно соединять программы и протаскивать данные сквозь них, как сквозь цепочку функций, каждая из которых выступает в роли преобразователя или фильтра.
Когда мы грепали, то делали это по какому-то одному слову, но часто возникает задача грепать по нескольким словам. Не важно, как они расположены внутри строки, главное, что они встречаются там вместе. Такую функциональность можно было бы сделать, усложнив саму программу grep
. Но пайплайн позволяет добиться такого же поведения без необходимости писать сложную программу.
grep alias .bashrc | grep color
# enable color support of handy aliases
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
|
— этот символ называется пайп, он указывает шеллу взять STDOUT одного процесса, и соединить его с STDIN другого процесса. Поскольку grep принимает на вход текст (как я говорил в прошлом уроке, все утилиты, которые читают файлы, могут принимать данные через STDIN) и возвращает текст, то его можно комбинировать бесконечно.
Запись grep alias .bashrc | grep color
можно изменить, используя перенаправление. Так она станет проще для модификации:
cat .bashrc | grep alias | grep color
В примере выше файл читается катом и отправляется в STDIN грепа.
Ещё один пример:
cat source | grep Dog | uniq | sort
Пайплайн стал основой философии Unix, которая звучит так:
Именно поэтому большинство утилит работают с сырым текстом — принимают его на вход и возвращают в STDOUT. Такой подход позволяет получать сложное поведение из крайне простых составных блоков. Такая концепция называется стандартные интерфейсы и хорошо отражена в конструкторах Lego.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт