如何使用单个命令在 UNIX 文件系统中提取 JAR,并使用 JAR 命令指定其目标目录?

2022-08-31 17:26:00

我正在创建一个Python脚本,在其中执行UNIX系统命令。我有一个名为Binaries.war的战争档案,它位于一个名为Portal.ear的耳朵档案中。

Portal ear 文件位于 /home/foo/bar/

jar xf /home/foo/bar/Portal.ear Binaries.war

将 Binaries.war 文件从 /home/foo/bar/Portal.ear 存档中提取到我正在运行脚本的当前目录中。

如何指定要仅使用一个命令提取的目标目录?我想做这样的事情来提取Binaries.war到目录/home/foo/bar/baz中。

jar xf /home/foo/bar/Portal.ear Binaries.war [into target directory /home/foo/bar/baz]

我在JAR手册页中搜索了选项,似乎找不到一个简单的方法来做到这一点。当然,我可以将存档解压缩到我当前的目录中,然后使用mv移动它,但我想一次性完成此操作,而不是随机排列目录和文件。


答案 1

如果你的 jar 文件已经有一个绝对的路径名,如图所示,这特别容易:

cd /where/you/want/it; jar xf /path/to/jarfile.jar

也就是说,您由 Python 更改目录为您执行 shell,然后运行提取。

如果您的jar文件还没有绝对路径名,那么您必须将相对名称转换为绝对名称(通过在当前目录的路径前面加上前缀),以便在目录更改后可以找到它。jar

唯一需要担心的问题是路径名中的空格等问题。


答案 2

我不认为jar工具本身支持这一点,但是你可以用“解压缩”解压缩一个JAR文件,然后用“-d”选项指定输出目录,所以像这样:

$ unzip -d /home/foo/bar/baz /home/foo/bar/Portal.ear Binaries.war