我没有以正式的方式学习Bash,所以请给我一些更具描述性的问题标题的建议.
而不是创建一个临时文件,其生命周期限于(在这种情况下command
)使用的命令的生命周期,如:
zcat input.txt.gz > input.txt command input.txt rm input.txt
我们可以避免如下:
zcat input.txt.gz | command -
现在我的问题是两个输入是否可行.我希望避免创建两个临时文件,如:
zcat input1.txt.gz > input1.txt zcat input2.txt.gz > input2.txt command input1.txt input2.txt rm input1.txt input2.txt
我猜测以下解决方案可以消除创建两个临时文件之一的需要,如:
zcat input1.txt.gz > input1.txt zcat input2.txt.gz | command input1.txt - rm input1.txt
但我想知道是否有办法完全避免创建临时文件.
我希望我的问题很清楚.虽然我zcat
以一个例子为例,但我正在寻找的解决方案应该更加通用.提前致谢.
如果您尝试将多个命令的输出组合到一个管道中,请使用子shell:
(cat file1.txt; cat file2.txt) | nl
如果要将命令的输出用作命令的文件名,请使用进程替换:
diff <(zcat file1.gz) <(zcat file2.gz)