在 gzip 中使用 "--stdout" 和不使用有什么区别?

  • 本文关键字:区别 --stdout gzip unix gzip
  • 更新时间 :
  • 英文 :


下面的代码让我对gzip中的--stdout感到好奇。在两个不同命令的输出上使用diff命令告诉我这两个文件是不同的,但手动检查则不然。这是怎么呢

$echo "test" > tmpx
$cat tmpx | gzip > tmpx1.gz
$cat tmpx | gzip --stdout > tmpx2.gz
$diff tmpx1.gz tmpx2.gz
Binary files tmpx1.gz and tmpx2.gz differ
$zcat tmpx1.gz
test
$zcat tmpx2.gz
test
$cat tmpx1.gz
a▒U+I-.▒▒5▒; 
$cat tmpx2.gz
?▒U+I-.▒▒5▒; 

压缩后的数据没有区别。

您看到的是文件中字节4-8的差异。这包含创建gzip文件的unix时间戳。

加上Terrence的正确答案,没有差异,句号。当您将输入管道传输到gzip时,无论您是否指定--stdout,它都会自动将其输出发送到stdout。

正如Terrence所指出的,区别仅仅在于时间戳。如果您在至少两秒钟之后执行cat tmpx | gzip > tmpx1.gzcat tmpx | gzip > tmpx2.gz,那么您将看到由于时间戳的不同,结果文件将有所不同。

最新更新