下面的代码让我对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.gz
和cat tmpx | gzip > tmpx2.gz
,那么您将看到由于时间戳的不同,结果文件将有所不同。