use*_*398 67 linux bash mac-osx
首先是具体问题:在 linux 中,我使用 zcat 列出一个 .zip 文件。在 osx 中,zcat 似乎会自动将 .Z 附加到文件名。很多人建议用 gzcat 替换 zcat;但是,gzcat 抱怨该文件不是 gzip 格式!
'file ' 显示: ...Zip 存档数据,至少要提取 v2.0
所以 zcat 或 gzcat 在 osx 中都不起作用,我该怎么办?
我在 bash 中有一个中等大小的脚本,它使用 zcat/gzcat、sed awk 和其他基本实用程序来处理许多文件。我想在我的 osx 笔记本电脑上复制该环境,以便我可以离线工作。有什么一般性建议可以避免这种痛苦吗?我希望这是一个相当常规的工作流程,所以一定是由其他人整理出来的。
vy3*_*y32 126
你是对的。这是令人讨厌的行为。
$ zcat foo.txt.gz
zcat: can't stat: foo.txt.gz (foo.txt.gz.Z): No such file or directory
Run Code Online (Sandbox Code Playgroud)
尝试这个:
$ zcat < foo.txt.gz
asdfadsf
Run Code Online (Sandbox Code Playgroud)
小智 30
我知道这是一个老问题。但是,我从更旧的github thread找到了一个解决方案。
您可以简单地使用gunzip -c
类似于zcat
Mac OS X 上没有错误的工作方式。
$ gunzip -c 20150707_backup.sql.gz | mysql -u mysql_user -p
Run Code Online (Sandbox Code Playgroud)
Pet*_*ino 17
您可以为 Mac OS X 安装 GNU 实用程序,例如,使用自制软件(运行brew install coreutils gnu-sed
,安装gzcat
等。和gsed
)。这将为您提供每个命令的 GNU 实现。
然后,为了让您的生活更轻松,为每个命令创建一个变量(例如sed=gsed
,然后使用$sed
),或者alias sed=gsed
在您编写的任何脚本中简单地将它们别名(例如)。为了您的方便,我为此编写了一个要点:gnu-tools-for-mac.sh。将此代码放在(或包含)脚本之上。
使用 GNU 实现来压缩和提取档案。我会说你不能混合使用 OS X 和 GNU 实现。
小智 10
我只是尝试了一下,发现了一些非常有趣的东西!对于gz
文件,我们预计gzcat
在 Mac OS 上运行。
gzcat /path/to/file.gz
它应该可以工作。zcat /path/to/file.gz
会给你一个错误。zcat
,它将起作用。cat /path/to/file.gz | zcat
将工作。我希望这有帮助!
归档时间: |
|
查看次数: |
51402 次 |
最近记录: |