在Bash中通过管道运算符重定向两个命令的输入

  发布于 2023-02-12 15:43

我没有以正式的方式学习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以一个例子为例,但我正在寻找的解决方案应该更加通用.提前致谢.

1 个回答
  • 如果您尝试将多个命令的输出组合到一个管道中,请使用子shell:

    (cat file1.txt; cat file2.txt) | nl
    

    如果要将命令的输出用作命令的文件名,请使用进程替换:

    diff <(zcat file1.gz) <(zcat file2.gz)
    

    2023-02-12 15:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有