簡體   English   中英

如何使用單個命令在UNIX文件系統中提取JAR並使用JAR命令指定其目標目錄?

[英]How do you extract a JAR in a UNIX filesystem with a single command and specify its target directory using the JAR command?

我正在創建一個Python腳本,我在其中執行UNIX系統命令。 我有一個名為Binaries.war的war存檔,它位於名為Portal.ear的ear存檔中

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

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

將/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]

我搜索了JAR手冊頁中的選項,似乎無法找到一種簡單的方法來執行此操作。 當然,我可以將存檔提取到我當前的目錄中,然后使用mv移動它,但我想一次性完成此操作,而不是隨機播放目錄和文件。

如果您的jar文件已經具有如圖所示的絕對路徑名,那么它特別容易:

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

也就是說,您可以通過Python更改目錄執行shell,然后運行提取。

如果您的jar文件還沒有絕對路徑名,那么您必須將相對名稱轉換為絕對名稱(通過在其前面添加當前目錄的路徑),以便jar在更改目錄后可以找到它。

唯一需要擔心的問題是路徑名中的空白。

我不認為jar工具本身支持這個,但你只需用“解壓縮”解壓縮一個JAR文件,並使用“-d”選項指定輸出目錄,如下所示:

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

你不能只使用os.chdir(target)改變python腳本中的工作目錄嗎? 我同意,我無法從jar命令本身看到任何方法。

如果您不想永久更改目錄,則將當前目錄(使用os.getcwd() )存儲在變量中,然后再更改回來。

如果這是一個個人腳本,而不是您計划分發的腳本,那么為此編寫shell函數可能更簡單:

function warextract { jar xf $1 $2 && mv $2 $3 }

你可以從python調用,如下所示:

warextract /home/foo/bar/Portal.ear Binaries.war /home/foo/bar/baz/

如果您真的喜歡它,可以使用sed從路徑中解析文件名,這樣您就可以使用它來調用它

warextract /home/foo/bar/Portal.ear /home/foo/bar/baz/Binaries.war

不過,我會把它留作讀者的練習。

當然,因為這會首先將.war提取到當前目錄中,然后移動它,它有可能覆蓋你所在的具有相同名稱的東西。

更改目錄,解壓縮和回送CD有點干凈,但是當我想減少代碼混亂時,我發現自己一直使用這樣的小型單行shell函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM