如何使用 Bash 从 JAR 读取 MANIFEST.MF 文件
我需要使用 bash 从“some.jar”读取 MANIFEST.MF maven 清单文件
I need to read MANIFEST.MF maven manifest file from "some.jar" using bash
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
-q
将抑制解压缩程序的详细输出-c
将提取到 stdout示例:
或者您可以使用
-p
而不是-q -c
。-q
will suppress verbose output from the unzip program-c
will extract to stdoutExample:
Alternatively you can use
-p
instead of-q -c
.使用
unzip
:它将悄悄地(
-q
)从jarfile(使用zip格式压缩)读取路径META-INF/MANIFEST.MF到stdout(<代码>-c)。然后,您可以将输出通过管道传输到其他命令来回答诸如“这个 jar 的主类是什么:”之类的问题:(这会删除所有不包含字符串
Main-Class
的行,然后拆分该行在:
处,仅保留第二个字段(类名)。当然,可以适当地定义$JARFILE_PATH
或将$JARFILE_PATH
替换为您感兴趣的 jarfile 的路径。use
unzip
:that will quietly (
-q
) read the path META-INF/MANIFEST.MF from the jarfile (which is compressed using the zip format) to stdout (-c
). You can then pipe the output to other command to answer questions like 'what is the main class for this jar:(this removes all lines which don't contain the string
Main-Class
, then splits the line at:
, keeping only the second field, the class name). Of course, either define$JARFILE_PATH
appropriately or replace$JARFILE_PATH
with the path to a jarfile you're interested in.根据您的发行版,安装
unzip
软件包。然后只需发出This 会将内容转储到 STDOUT。
华泰
Depending on your distribution, install the
unzip
package. Then simply issueThis will dump the contents to STDOUT.
HTH
$ tar xfO some.jar META-INF/MANIFEST.MF
x
提取并O
重定向到 stdout。注意:似乎仅适用于 bsdtar,不适用于 GNU tar。
$ tar xfO some.jar META-INF/MANIFEST.MF
x
extracts andO
redirects to stdout.Note: Seem to work only in bsdtar, not GNU tar.
其他人已经发布了有关使用 unzip -p 和管道到 grep 或 awk 或任何您需要的内容的文章。虽然这适用于大多数情况,但值得注意的是,由于 MANIFEST.MF 每行 72 个字符的限制,您可能会查找其值分散在多行中的键,因此很难解析。我很想看到一个 CLI 工具能够真正从文件中提取渲染值。
http://delaltctrl.blogspot.com/2009/11 /manifestmf-apparently-you-are-just.html
Others have been posting about using unzip -p and piping to grep or awk or whatever you need. While that works for most cases, it's worth noting that because of the 72 characters-per-line limit of MANIFEST.MF, you may be grepping for keys whose values are split across multiple lines and will therefore be very difficult to parse. I'd love to see a CLI tool that can actually pull a rendered value out of the file.
http://delaltctrl.blogspot.com/2009/11/manifestmf-apparently-you-are-just.html
以下 Groovy 脚本使用 Java 的 API 来解析清单,避免了清单格式奇怪的换行问题:
将 JAR 文件作为参数传递:
或者如果您迫切需要一行代码:
The following Groovy script uses Java's API to parse the manifest, avoiding issues with the manifest format's weird line breaking:
Pass JAR files as arguments:
Or if you're desperate for a one-liner: