我有一个正在ubuntu终端(bash)中运行的脚本。目前,我正在使用以下命令将脚本的输出直接附加到文件中:
./ run.sh> a.txt
但是对于某些输入文件,run.sh可能会生成较大的输出,而无需压缩。是否可以将这些输出直接写到zip文件中,而无需通过转储文件中间文件? 我知道在Java和python中是可能的。但是我想要在bash中执行此操作的通用方法,这样即使正在运行的程序发生更改,我也可以保持run.sh不变。
我尝试过搜索网络,但是没有发现有用的信息。
我有一个正在ubuntu终端(bash)中运行的脚本。目前,我正在使用以下命令将脚本的输出直接附加到文件中:
./ run.sh> a.txt
但是对于某些输入文件,run.sh可能会生成较大的输出,而无需压缩。是否可以将这些输出直接写到zip文件中,而无需通过转储文件中间文件? 我知道在Java和python中是可能的。但是我想要在bash中执行此操作的通用方法,这样即使正在运行的程序发生更改,我也可以保持run.sh不变。
我尝试过搜索网络,但是没有发现有用的信息。
在这种情况下,gzip文件会更合适。与zip是一种存档格式不同,gzip只是一种压缩数据格式,可以轻松地在管道中使用:
./run.sh | gzip > a.txt.gz
可以使用gunzip
命令解压缩所生成的文件(产生文件a.txt
),用zmore
查看或用zcat
列出,这使您可以使用过滤器处理输出,而无需将整个解压缩的文件写入任何地方。
“ zip”格式用于存档。 “ zip”程序可以获取现有文件,并将压缩后的版本放入存档中。例如:
./run.sh > a.txt
zip a.zip a.txt
但是,您要特别询问“流”解决方案(给定文件大小)。很少有实用程序使用“流媒体满意”的格式:gz,bz2和xz。每种类型都擅长使用不同类型的数据,但是在许多情况下,所有数据都可以使用。
./run.sh | gzip > a.txt.gz
./run.sh | bzip2 > a.txt.bz2
./run.sh | xz > a.txt.xz
如果您正在寻找最广泛的兼容性,那么gzip通常是您的朋友。
,在bash中,您可以使用进程替换。
zip -FI -r file.zip <(./run.sh)