題 如何在Bash中將名稱更改為另一個命令的文件傳遞?


我經常使用wget從網上下載tarball和zip文件,然後解壓或解壓縮它們。我做:

wget google.com/somefile.zip
unzip somefile.zip
rm somefile.zip

有沒有辦法讓我自動將zip文件傳遞給tar或解壓縮WHILE wget-ting?在偽代碼中:

wget google.com/somfile.zip && unzip

4
2018-06-09 14:32


起源




答案:


您可以避免使用中間文件,問題就會消失

wget -O - http://example.com/file.zip | funzip

7
2018-06-09 14:39



所以儘管沒有解壓縮文件的文件名,這仍然有用嗎?如果是,請+1並接受。乾淨整潔。 - n0pe
是的,請注意兩者之間的區別 unzip 它作用於文件和 funzip 作用於 stdin。 - slhck
啊,是的,我沒有看到。非常感謝! - n0pe
@MaxMackie是的, -O - 意思是'輸出到標準輸出'。沒有文件,沒有文件。只有一個管道直接到 funzip 將提取到CWD。 - Rich Homolka
我比我的回答更喜歡這個。我之前從未遇到過funzip!謝謝! - Kirk


MYFILE=filename; wget google.com/${MYFILE} && unzip ${MYFILE} && rm -f ${MYFILE}

1
2018-06-09 14:37





這兩個答案都有效,而且@RedGrittyBrick的答案會刪除你刪除的臨時文件(我會接受他的)。我會添加另一種方式。

你可以做 字符串操作 關於用於獲取輸出文件的URL的變量。

URL=google.com/somefile.zip
wget $URL
FILE=${URL##*/} # strip everything up to last /
unzip $FILE
rm -f $FILE

0
2018-06-09 14:57



我認為你的意思是“一切都是 持續 /“? - slhck
@slhck好點,我改為最後/,在評論和代碼中。謝謝 - Rich Homolka