关于使用括号的输入流的规则

关于使用括号的输入流的规则

我使用括号创建下一个命令的输入数据流(来自多个源)。例如:

(date; pwd; cat file1.txt) | less

这很方便并且效果很好。但这是可接受的/标准方法吗?这种生成输入流的方式的一般规则是什么?我找不到任何参考资料来获取更多详细信息。

答案1

嗯,“可接受”通常是审稿人眼中的东西,基于意见的问题不太适合 SE,但我想我们可以考虑替代方案,让每个人都做出选择。


为了使其正常工作,您必须以某种方式对命令进行分组,并且使用(...)那里是一个简单的解决方案。另一种单行选项是

{ date; pwd; cat file1.txt; } | less

在其他方面是相同的,但不涉及子 shell(除了从管道中获取的内容之外,因此它甚至可能没有区别),并且带有强制空格和最后分号的语法更丑陋。请参阅 Bash 的手册了解这两个:3.2.5.3 分组命令

当然,您可以将命令组隐藏在外部脚本中,但是拥有额外的文件很不方便。将命令放入函数中可能是一个很好的中间立场。创建一个像这样的函数

somestuff() {
    date
    pwd
    cat file1.txt
}

然后somestuff | less如果在上下文中感觉更好的话就使用。

相关内容