wget을 사용하여 다운로드한 파일을 tar를 통해 어떻게 파이프합니까?

wget을 사용하여 다운로드한 파일을 tar를 통해 어떻게 파이프합니까?

GNU Wget()을 사용하여 다운로드한 타르볼( .tar.gz이 경우 파일) 을 파이프하고 싶지만 (명확하지 않은 경우 압축을 푼다) 방법을 모르겠습니다. 나는 시도했다:wgettar -xzf

wget -q -O- ${SRC_URI} | tar -xzf > ${DESTDIR}

그리고

wget -q -O- ${SRC_URI} | `tar -xzf` > ${DESTDIR}

그리고

wget -q -O- ${SRC_URI} | 'tar -xzf' > ${DESTDIR}

내가 원하는 일을 가까이 하는 사람은 아무도 없습니다. 또한 출력 구성 요소를 생략 > ${DESTDIR}하고 기본적으로 tar가 tarball의 내용을 추출하도록 하려고 했습니다. 시도할 때마다 일반적으로 다음과 같은 오류가 반환됩니다.

tar: option requires an argument -- 'f'

타르볼을 다운로드하기 전에 또는 아무것도 다운로드하지 않고 ${DESTDIR}경로 세트가 생성되었는지 확인하지만(타르를 생성하기 위해 타르를 떠나기 때문에) 확인하지 않습니다.

답변1

f표준 입력에서 tar.gz 파일을 추출하는 경우 이 옵션을 지정할 필요가 없습니다. 이 옵션 tar은 기본적으로 표준 입력에서 읽는 것입니다.

내용을 $DESTDIR로 추출하려면 GNU tar-C(디렉토리 변경) 옵션도 사용해야 합니다.

또한 "$SRC_URI 또는 ​​$DESTDIR에 공백이나 쉘 메타 문자(- 등) 가 포함되어 있는 경우 변수 주위에 따옴표를 붙였습니다 &.*?

마지막으로 {}변수 주변의 중괄호는 여기서 꼭 필요한 것은 아니지만 어쨌든 그대로 두었습니다. 확실히 어떤 해를 끼치지는 않습니다.

이 모든 것을 합치면 다음과 같은 결과를 얻을 수 있습니다.

wget -q -O- "${SRC_URI}" | tar -xz -C "${DESTDIR}"

답변2

-추출하려는 "파일"을 지정해야 합니다 . 이 wget명령은 STDOUT( -O-)으로 출력되며 tar는 STDIN을 입력 파일로 사용하여 tar zxf -추출해야 합니다.

관련 정보