如何使压缩文件直接用作常规文件?

时间:2013-04-15 16:43:08

标签: bash unix compression named-pipes unzip

我们有一个名为CRAM的基因组数据的定制压缩器,并且它提供了高级压缩,人们不敢使用它,因为它不太容易使用生物信息学工具处理,如常规"文件。我们希望允许压缩文件用作脚本的参数,在GUI中打开等,就像经典文件一样。

类似于命名管道或块设备文件,无论何时从中读取,都会自动执行解压缩命令。如果很容易从系统复制到系统(到电子邮件,sftp等),那就更好了。

我们目前的解决方案:

  1. 让我们说我们有两个命令,cram和uncram(你可以在这里替换gzip和gunzip)和一个输入文件fileX。

  2. 我们压缩:

    cram< fileX> fileX.cram

  3. 我们为cram创建自解压档案:

    echo" uncram< fileX.cram" > fileX.cram.sex
    chmod + x fileX.cram.sex

  4. 我们将它用作工具中的参数:

    mytool<(fileX.cram.sex)

  5. 现在它几乎易于使用,除了"<()"符号,以及您无法立即在GUI中打开它。

    如何使流程透明化?

1 个答案:

答案 0 :(得分:2)

您可以尝试在处理文件的每个命令周围提供一个简单的包装器:

$ mytool () {
>  command mytool <( "$1" )
> }
$ mytool fileX.cram.sex

command内置允许您运行原始命令,而不是影响它的功能。

请注意,fileX.cram.sex不是自解压存档;它只是一个带有硬编码输入文件的shell脚本。