在命令行中解压缩 zlib 文件

Uncompressing zlib file in command line

当Git 存储文件的快照时,它会存储一个称为 blob 的对象。

这是使用 zlib 压缩的。请参阅 http://nfarina.com/post/9868516270/git-is-simpler;要么我是盲人,要么他没有解释文件 blob 是如何在第一个地方解压缩的(而其他一切都解释得好像是对菜鸟)

我们如何提取它并查看 blob 的内容?谷歌搜索的大部分结果适用于 scripts/programs 内的解压缩,而不是 manual/CL:

Deflate command line tool, https://unix.stackexchange.com/q/22834

我一直在寻找一种单行命令行方式来在单个文件上执行此操作。

提前致谢!

(即使这个问题听起来像是重复的,其他 link 中的大量答案也不如这里的答案准确。我认为这个线程应该保持活跃或发布这个答案在那里用一种简单的方法来帮助其他人放气)

使用git cat-file -p SHA1查看blob的文件内容。

文件内容是这样的:blob XXX NULL Content

例如:

a.txt包含Hello World

SHA-1 的内容是:

blob 11[=12=]0Hello World 然后这个字符串被 GZipped

如果你在 unix 上,你可以使用它来压缩内容:
perl -MCompress::Zlib -e 'undef $/; print uncompress(<>)'