如何在UNIX文件系统中使用JAR命令提取JAR并指定目标目录?
我正在写一个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命令移动过去,但我希望能一次性完成,不想来回折腾目录和文件。
4 个回答
1
你难道不能在Python脚本里用 os.chdir(target)
来改变工作目录吗?我觉得这样做是可以的,我也看不出有什么方法可以直接通过jar命令来做到这一点。
如果你不想永久性地改变目录,那你可以先用 os.getcwd()
把当前目录存到一个变量里,然后再改回去。
67
我觉得jar工具本身不支持这个功能,不过你可以用“unzip”命令来解压JAR文件,并且可以用“-d”选项指定输出目录。也就是说,你可以这样做:
$ unzip -d /home/foo/bar/baz /home/foo/bar/Portal.ear Binaries.war
80
如果你的jar文件已经有了绝对路径,就特别简单了:
cd /where/you/want/it; jar xf /path/to/jarfile.jar
也就是说,你可以让Python执行的命令行先切换到那个目录,然后再进行提取。
如果你的jar文件没有绝对路径,那你就需要把相对路径转换成绝对路径(也就是在前面加上当前目录的路径),这样在切换目录后,jar
才能找到它。
剩下需要注意的就是路径中可能有空格的问题。