GNU Wget()을 사용하여 다운로드한 타르볼( .tar.gz
이 경우 파일) 을 파이프하고 싶지만 (명확하지 않은 경우 압축을 푼다) 방법을 모르겠습니다. 나는 시도했다:wget
tar -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 -
추출해야 합니다.