Я ищу альтернативу для |
оператор в ударе окружает для перенаправления вывода команды, как введено к следующей команде. Действительно ли там кто-либо альтернативен?
что-то как:
command1 | command2 | command3
с альтернативой:
command1 X command2 X command3
X
будет использование вместо |
. Действительно ли возможно избежать использования |
и замените его фактическим оператором этого?
Эквивалент 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.