【问题标题】:Any recommendations for viewing source files inside a .tgz file?对于查看 .tgz 文件中的源文件有什么建议吗?
【发布时间】:2023-12-30 12:34:01
【问题描述】:

Haskell 的 cabal 包管理器将最近的包源代码存储在 ~/Library/Haskell/repo-cache/*/*.tgz 我发现人们经常希望将 Haskell 模块源代码作为文档来引用。

我很高兴简单地将 zless 用于小型文本包,但我可以很容易地想象改进这个工作流程。

我可以安装go 以使用go-fuse 中的zipfs 直接挂载经常引用的.tgz 文件,这可能很有用。有人见过在一个挂载点上挂载多个 .tgz 文件的 fuse 实用程序吗?

我也可以编写一个tarless 实用程序,通过将.tgz 文件解压缩到/tmp 中并显示出现在*.tgz/ 之后的文件来将其视为目录。然后,我将构建 bash 选项卡完成以从命令行导航 .tgz 文件。

有人有这个或类似方向的建议吗?

【问题讨论】:

标签: bash haskell gzip tar cabal


【解决方案1】:

我不确定这是否是您要查找的内容,但据我所知,您可以直接使用 vim 和 emacs(也可能使用其他编辑器)打开/编辑/保存对 .tar.gz 文件的更改。

【讨论】:

  • 我设想了一个命令行解决方案,但那很完美,谢谢。
【解决方案2】:

zcat 或 gzcat 在我的 Mac 上与 .tgz 文件配合得相当好。

【讨论】:

  • 顺便说一句,gunzip -c file.gz 也可以这样做。
  • 对我来说 zcat 或 gzcat 或 gunzip -c 的行为与 Mac 上的 zless 不同,因为 zless 会显示许多有趣的不可打印字符。
【解决方案3】:

AVFS 是一个 FUSE 文件系统,它提供一个文件系统视图,其中每个存档都有一个关联的目录(至少对于只读访问)。文件系统的视图通常挂载在~/.avfs 上,与存档关联的目录末尾有一个#

mountavfs
ls ~/.avfs$HOME/Library/Haskell/repo-cache/foo/bar.tgz\#

【讨论】: