我正在寻找|
bash shell 中运算符的替代方法,用于将命令的输出重定向为下一个命令的输入。有什么替代方法吗?
就像是 :
command1 | command2 | command3
Run Code Online (Sandbox Code Playgroud)
替代方案:
command1 X command2 X command3
Run Code Online (Sandbox Code Playgroud)
X
将代替|
. 是否可以避免使用|
它并将其替换为实际的操作员?
Roh*_*van 17
相当于command1 | command2
IScommand2 < <(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
Run Code Online (Sandbox Code Playgroud)
然而,正如 Oli 所建议的,虽然这可能会产生相同的输出,但它在技术上与管道不同。
<(..) 将内部命令输出的 STDOUT 转换为文件处理程序(该命令,在您的示例中为 grep)打开。当您使用管道时,读取命令直接从 STDIN 读取(用管道命令的 STDOUT 填充)。细微的差异,但对于只知道如何读取 STDIN 的命令来说可能很重要。
归档时间: |
|
查看次数: |
14198 次 |
最近记录: |