我想tar一个写入stdout的程序的输出和fd = 3的fifo。这是我的第一次尝试:
#!/bin/bash
#Create fd=3
exec 3> >(cat)
#Start the tar
tar -cvzf ha.tgz /dev/fd/1 /dev/fd/3
#Write data
echo stdout
echo 'fd=3'>&3
#close
exec 3>&-
它创建了ha.tgz,其内容为/ dev / fd / 1和/ dev / fd / 3。但是,当我提取文件时,它基本上会创建符号链接到/ dev / fd / 1和/ dev / fd / 3(这是破坏的)。我希望文件只是普通文件,其内容将是我在脚本中回应的内容。有没有办法做到这一点?
答案 0 :(得分:3)
有办法做到这一点吗?
没有。 / dev下的条目不是真实文件,它们只是与设备驱动程序类似的文件接口。如果您想要常规文件,请使用常规文件。
答案 1 :(得分:2)
使用zip,它应该像这样工作:
zip -FI MyZipFile /dev/fd/1 /dev/fd/3
答案 2 :(得分:1)
只需将fifo内容传输到gzip
和文件中。