我编写了一个bash脚本,它使用curl从一个网站输出,并在html输出上做了一堆字符串操作.问题是当我针对返回其输出gzip的网站运行它时.在浏览器中访问该网站工作正常.
当我手动运行curl时,我得到gzipped输出:
$ curl "http://example.com"
Run Code Online (Sandbox Code Playgroud)
这是该特定网站的标题:
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
X-Powered-By: PHP/5.2.17
Last-Modified: Sat, 03 Dec 2011 00:07:57 GMT
ETag: "6c38e1154f32dbd9ba211db8ad189b27"
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-Control: must-revalidate
Content-Encoding: gzip
Content-Length: 7796
Date: Sat, 03 Dec 2011 00:46:22 GMT
X-Varnish: 1509870407 1509810501
Age: 504
Via: 1.1 varnish
Connection: keep-alive
X-Cache-Svr: p2137050.pubip.peer1.net
X-Cache: HIT
X-Cache-Hits: 425
Run Code Online (Sandbox Code Playgroud)
我知道返回的数据是gzip压缩的,因为这会返回html,如预期的那样:
$ curl "http://example.com" | gunzip
Run Code Online (Sandbox Code Playgroud)
我不想通过gunzip管道输出,因为脚本在其他站点上按原样运行,并且通过gzip管道将破坏该功能.
一切都空了
有任何想法吗?
git树对象的内容格式是什么?
blob对象的内容是blob [size of string] NUL [string],但对于树对象是什么?
使用OS X终端,
如何以纯文本格式查看这些文件的内容?
我有一些pig带part-r-00000.deflate扩展名的生成文件.我知道这是一个压缩文件.如何以可读格式生成普通文件.当我使用时hadoop fs -text,我无法获得纯文本输出.输出仍然是二进制的.我该如何解决这个问题?
以协作为中心的Web应用程序,提供git托管(作为barerepos)
允许用户将一组文件直接添加到其现有存储库.
我们现在可以使用临时服务器端稀疏检出来执行此操作,但我们希望优化此过程.
上下文:我希望能够通过我的git提交消息和提交进行搜索而无需经历令人费解的复杂git grep命令,因此我决定看看如何存储git commit消息.
我看了一下.git文件夹,它看起来像是存储的提交
.git/objects
Run Code Online (Sandbox Code Playgroud)
.git对象文件夹包含一堆名称为a6和9b的文件夹.这些文件夹中的每个文件夹都包含一个名称类似于提交的文件2f29598814b07fea915514cfc4d05129967bf7.当我在文本编辑器中打开其中一个文件时,我会感到胡言乱语.
在这个git commit日志中,文件夹9b包含一个commit sha
aed8a9f773efb2f498f19c31f8603b6cb2a4bc
Run Code Online (Sandbox Code Playgroud)
为什么,并且是否存在多个提交sha将存储在文件9b中的情况?
有没有办法将这个乱码转换成纯文本,以便我可以在文本编辑器中混淆提交?
提交487128950df6ee433c131b5feaafe81ee86629f4可以在https://github.com/signalwire/freeswitch.git找到。
git log -1 487128950df6ee433c131b5feaafe81ee86629f4 --pretty=fuller 印刷:
commit 487128950df6ee433c131b5feaafe81ee86629f4
Author: Travis Cross <tc@traviscross.com>
AuthorDate: Fri Mar 21 06:12:02 2014 +0000
Author: Anthony Minessale <anthm@freeswitch.org>
AuthorDate: Fri Mar 14 02:59:13 2014 +0500
Commit: Travis Cross <tc@traviscross.com>
CommitDate: Mon Mar 24 12:54:50 2014 +0000
Use the system version of APR / APR-util if possible
Autodetect whether the system libapr / libaprutil has our
necessary modifications and use it if it does.
Run Code Online (Sandbox Code Playgroud)
它有 2 个作者。如果 fsck 检查打开,则将此提交推送到 Gitlab 或 …
我熟悉Git 如何为文件(blob)创建 SHA1 哈希值,但不熟悉如何为标签对象创建它们。如果我创建一个带注释的标签,我认为它们是,但是配方是什么?我如何在 Git 之外复制它(例如,在 Perl 或 Python 中)?
我对如何计算提交,树和blob的SHA-1哈希感到困惑.根据本文,提交哈希值基于以下因素计算:
树木和斑点哈希是否也涉及相同的因素?
当 Git 存储文件的快照时,它会存储一个称为 blob 的对象。
这是使用 zlib 压缩的。请参阅http://nfarina.com/post/9868516270/git-is-simler;要么我是瞎子,要么他没有解释文件 blob 是如何在第一处解压缩的(而其他所有内容都像向菜鸟一样解释)
我们如何提取它并查看 blob 的内容?谷歌搜索的大部分结果适用于脚本/程序中的解压缩,而不是手动/CL:
Deflate 命令行工具, https://unix.stackexchange.com/q/22834
我一直在寻找一种单行命令行方法来在单个文件上执行此操作。
提前致谢!
(即使这个问题听起来像是重复的,但另一个链接中的一系列答案并不像这里的答案那么准确。我认为这个线程应该保持活跃,或者将这个答案发布在那里,以帮助其他人解决不复杂的问题泄气的方法)
我来使用一种奇怪的数据库文件格式.每个DB都带有两个文件:一个是"database.db",另一个是"database.key".
".db"文件始终以0x78 0x9C二进制头开头,而".key"始终在文件的随机部分中包含字符串"1.00 Peter's B Tree".
在线查看我发现标头0x78 0x9C可以引用压缩Zlib,但是没有找到任何方法来查看数据库的内容.
这里有没有人知道可以帮助我这种格式的东西?Thnaks :)
编辑1: ".db"文件似乎包含多个zlib放气流:签名0x78 0x9C不仅出现在文件的开头,而且出现在文件的不同部分.例如,这是我可以在一个文件中找到的一些流:
78 9C CB 63 40 07 33 76 5B 6A AF 78 DD 54 23 CE C9 90 C4 78 89 81 89 81 F1 22 86 9A ED 6A D7 44 F6 03 D5 B0 31 30 94 60 91 F6 D4 2A 76 3B 0C 94 E6 63 60 2C 51 B6 63 00 00 22 13 11 57
78 9C CB 63 40 07 …Run Code Online (Sandbox Code Playgroud) 可能重复:
Deflate命令行工具
是的,我知道我可以在shell上使用PHP本身,但我需要在PHP可用之前部署的脚本中使用此功能.
我已经尝试过gzip,unzip但是我的参数不正确或者它们只是不使用相同的压缩.
我想在bash脚本中使用它.进入更高级别的脚本语言不是一种选择.
我编写了以下PHP脚本用于测试目的:
#!/usr/bin/php
<?
$contents = file_get_contents( $argv[1] );
$data = gzuncompress( $contents );
echo substr( $data, 0, 20 ) . "\n";
?>
Run Code Online (Sandbox Code Playgroud)
这会输出我所期望的(解码数据的开头).
如果我将同一个文件传递给gunzip:
$ gunzip -c data
gzip: data: not in gzip format
Run Code Online (Sandbox Code Playgroud)
如果我尝试unzip:
$ unzip data
Archive: data
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory …Run Code Online (Sandbox Code Playgroud) 我知道git压缩文件,然后计算SHA1并将其存储在内,.git/objects/我们可以看到内容使用,git cat-file -p 'sha1'但我很想知道git在哪里存储压缩的blob对象.
如下文所述
http://gitready.com/beginner/2009/02/17/how-git-stores-your-data.html
更新我只能看到SHA1在.git/objects我认为是参照实际的斑点,而不是BLOB