Альтернатива для | (канал) оператор

Я ищу альтернативу для | оператор в ударе окружает для перенаправления вывода команды, как введено к следующей команде. Действительно ли там кто-либо альтернативен?

что-то как:

command1 | command2 | command3

с альтернативой:

command1 X command2 X command3

X будет использование вместо |. Действительно ли возможно избежать использования | и замените его фактическим оператором этого?

7
задан 22 December 2014 в 10:24

1 ответ

Эквивалент command1 | command2 command2 < <(command1)

, Это может быть расширено на три (или больше) команды также.

command3 < <(command2 < <(command1))

$ lspci | grep 'Network'
 02:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

$ grep 'Network' <(lspci)
 02:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) (rev 01)

$ lspci | grep 'Network' | grep -o 'controller'
 controller

$ grep -o 'controller' < <(grep 'Network' < <(lspci))
 controller

Однако как предложенный Oli, хотя это может произвести тот же вывод, это не технически то же как канал.

< (..) превращает внутренний STDOUT вывода команды в обработчик файлов (что команда, grep в Вашем примере) открывается. Когда Вы передаете по каналу, команда чтения читает непосредственно из STDIN (который заполнен STDOUT переданной по каналу команды). Тонкие различия, но могут быть значительными с командами, которые только знают, как считать STDIN.

12
ответ дан 23 November 2019 в 06:21

Другие вопросы по тегам:

Похожие вопросы: