我使用括号创建下一个命令的输入数据流(来自多个源)。例如:
(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
如果在上下文中感觉更好的话就使用。