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

Chr*_*kar 46 python java unix linux jar

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

Portal耳朵文件位于/ home/foo/bar /

jar xf /home/foo/bar/Portal.ear Binaries.war
Run Code Online (Sandbox Code Playgroud)

将/home/foo/bar/Portal.ear存档中的Binaries.war文件解压缩到我运行脚本的当前目录中.

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

jar xf /home/foo/bar/Portal.ear Binaries.war [into target directory /home/foo/bar/baz]
Run Code Online (Sandbox Code Playgroud)

我搜索了JAR手册页中的选项,似乎无法找到一种简单的方法来执行此操作.当然,我可以将存档提取到我当前的目录中,然后使用mv移动它,但我想一次性完成此操作,而不是随机播放目录和文件.

Jon*_*ler 63

如果您的jar文件已经具有如图所示的绝对路径名,那么它特别容易:

cd /where/you/want/it; jar xf /path/to/jarfile.jar
Run Code Online (Sandbox Code Playgroud)

也就是说,您可以通过Python更改目录执行shell,然后运行提取.

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

唯一需要担心的问题是路径名中的空白.


tdd*_*key 59

我不认为jar工具本身支持这个,但你只需用"解压缩"解压缩一个JAR文件,并用"-d"选项指定输出目录,如下所示:

$ unzip -d /home/foo/bar/baz /home/foo/bar/Portal.ear Binaries.war
Run Code Online (Sandbox Code Playgroud)