首先是具体问题:在linux中,我使用zcat来列出一个.zip文件。 在osx中,zcat似乎自动将.Z添加到文件名中。 各种各样的人build议用gzcatreplacezcat; 但是,gzcat抱怨文件不是gzip格式!
'文件'显示这个:…压缩归档数据,至lessv2.0提取
所以zcat和gzcat都不能在osx中工作,我该怎么办?
我在bash中有一个中等大小的脚本,它使用zcat / gzcat,sed awk和其他基本实用程序来处理一些文件。 我想复制我的OSX笔记本电脑上的环境,所以我可以脱机工作。 任何一般的build议如何我可以避免这种痛苦? 我希望这是一个相当常规的工作stream程,因此必须由其他人来整理。
你是对的。 这是烦人的行为。
$ zcat foo.txt.gz zcat: can't stat: foo.txt.gz (foo.txt.gz.Z): No such file or directory
尝试这个:
$ zcat < foo.txt.gz asdfadsf
我知道这是一个古老的问题。 但是,我发现了一个更古老的github线程的解决scheme。
您可以简单地使用与zcat
类似的gunzip -c
,而不会在Mac OS X上发生错误。
$ gunzip -c 20150707_backup.sql.gz | mysql -u mysql_user -p
你可以在Mac OS X上安装GNU utils,比如使用自制软件 (运行brew install coreutils gnu-sed
,安装gzcat
gsed
)。 这将为您提供每个命令的GNU实现。
然后,为了让你的生活更轻松,为每个命令(例如sed=gsed
,然后使用$sed
)创build一个variables,或者简单地在你编写的任何脚本alias sed=gsed
它们别名(例如alias sed=gsed
)。 为了您的方便,我为此写了一个Gist: gnu-tools-for-mac.sh 。 把这个代码放在脚本的顶部。
使用GNU实现压缩和提取档案。 我想说你不能混用OS X和GNU实现的用法。
gzip(1)
的Mac OS X版本不支持读取zip文件 。 从手册页:
这个版本的gzip也可以解压缩使用
compress(1)
或bzip2(1)
压缩的文件。
但是Linux(GNU)版本呢 。
gunzip
目前可以解压缩由gzip
,zip
,compress
,compress -H
或pack
创build的文件。
第三方已经为Mac OS X打包了GNU gzip; 你可以从networkingsearch中find这些。 这可能是阻力最小的path。