wget의 출력을 압축 해제된 입력으로 리디렉션하는 방법은 무엇입니까?

wget의 출력을 압축 해제된 입력으로 리디렉션하는 방법은 무엇입니까?

여기에서 파일을 다운로드해야 해요협회. 다운로드한 파일은 zip 파일이므로 현재 폴더에 압축을 풀어야 합니다.

일반적으로 먼저 다운로드한 다음 unzip 명령을 실행합니다.

wget http://www.vim.org/scripts/download_script.php?src_id=11834 -O temp.zip
unzip temp.zip

temp.zip하지만 이런 방식으로 두 개의 명령을 실행해야 하고, 다음 명령을 실행하기 전에 첫 번째 명령이 완료될 때까지 기다려야 하며, 이를 제공할 파일 이름을 알아야 합니다 unzip.

wget출력을 로 리디렉션할 수 있습니까 unzip? 그것은 마치

unzip < `wget http://www.vim.org/scripts/download_script.php?src_id=11834`

그러나 그것은 작동하지 않았습니다.

bash: `wget http://www.vim.org/scripts/download_script.php?src_id=11834 -O temp.zip`: ambiguous redirect

또한 wget두 번 실행되어 파일이 두 번 다운로드되었습니다.

답변1

다음과 같은 이유로 파일을 임시 파일로 다운로드해야 합니다(압축 해제 매뉴얼 페이지 인용).

funzip(아카이브의 첫 번째 구성원만 추출할 수 있음)을 제외하고 표준 입력에서 읽은 아카이브는 아직 지원되지 않습니다.

다음 명령을 함께 결합하면 됩니다.

wget "http://www.vim.org/scripts/download_script.php?src_id=11834" -O temp.zip
unzip temp.zip
rm temp.zip

그러나 보다 유연하게 만들려면 타이핑을 저장하기 위해 이를 스크립트에 넣어야 하며, 실수로 덮어쓰지 않도록 하려면 mktemp다음 명령을 사용하여 임시 파일에 대한 안전한 파일 이름을 만들 수 있습니다.

#!/bin/bash
TMPFILE=`mktemp`
PWD=`pwd`
wget "$1" -O $TMPFILE
unzip -d $PWD $TMPFILE
rm $TMPFILE

답변2

이것이 전달된다내 대답비슷한 질문의 경우:

ZIP 파일 형식에는 아카이브 끝에 목차(색인)가 포함되어 있습니다. 이 디렉터리는 아카이브 내 각 파일의 위치를 ​​설명하므로 전체 아카이브를 읽지 않고도 빠르고 무작위로 액세스할 수 있습니다.

파이프를 통해 ZIP 아카이브를 읽으려고 할 때 인덱스가 끝까지 액세스되지 않아 파일을 완전히 읽고 더 이상 사용할 수 없을 때까지 개별 구성원을 올바르게 추출할 수 없기 때문에 문제가 발생하는 것 같습니다. 따라서 아카이브가 파이프를 통해 제공될 때 대부분의 ZIP 압축 해제기가 실패하는 것은 놀라운 일이 아닙니다.

아카이브 끝에 있는 디렉토리는 다음과 같습니다.오직파일 메타 정보가 저장되는 아카이브의 위치입니다. 또한 개별 항목에는 중복성을 위해 로컬 파일 헤더에 이 정보가 포함되어 있습니다.

인덱싱을 사용할 수 없을 때 모든 ZIP 압축 해제기가 로컬 파일 헤더를 사용하는 것은 아니지만 tar 및 cpio 프런트 엔드는 libarchive(즉, bsdtar 및 bsdcpio)를 가리킵니다.할 수 있고 그럴 것이다파이프에서 읽는 동안 이 작업을 수행하면 다음을 수행할 수 있습니다.

wget -qO- http://example.org/file.zip | bsdtar -xvf-

답변3

JDK가 설치되어 있으면 다음을 사용할 수 있습니다 jar.

wget -qO- http://example.org/file.zip | jar xvf /dev/stdin

답변4

wget의 출력을 unzip으로 파이프하고 싶지도 않을 것 같습니다.

위키피디아에서"ZIP(파일 형식)"기사:

ZIP 파일은 파일 끝에 있는 중앙 디렉터리로 식별됩니다.

wget은 압축 해제가 작업을 수행하기 전에 다운로드를 완전히 완료해야 하므로 생각처럼 서로 얽혀 있지 않고 순차적으로 실행됩니다.

관련 정보