[英]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.