특정 디렉토리에 아카이브를 다운로드하고 압축을 풀고 싶습니다. 지금까지 내가 한 일은 다음과 같습니다.
wget http://downloads.mysql.com/source/dbt2-0.37.50.3.tar.gz
tar zxf dbt2-0.37.50.3.tar.gz
mv dbt2-0.37.50.3 dbt2
아카이브를 다운로드하고 압축을 풀고 싶습니다.비행 중, 디스크에 쓸 필요가 없습니다 tar.gz
. 출력을 파이프 wget
로 연결하여 대상을 tar
제공하는 것이 가능할 것이라고 생각했지만 tar
실제로는 조각을 어떻게 합치는지 모르겠습니다.
답변1
wget
페이로드를 표준 출력( flag 사용 -O-
)으로 출력하고 자체 출력을 억제( flag 사용 )하도록 지시하여 -q
이를 수행 할 수 있습니다 .
wget -qO- your_link_here | tar xvz
대상 디렉토리를 지정하십시오:
wget -qO- your_link_here | tar xvz -C /target/directory
GNU가 있는 경우 tar
출력 디렉터리의 이름을 바꿀 수도 있습니다.
wget -qO- your_link_here | tar --transform 's/^dbt2-0.37.50.3/dbt2/' -xvz
답변2
또 다른 옵션은 기본 curl
쓰기를 사용하는 것입니다.stdout
curl -s -L https://example.com/archive.tar.gz | tar xvz - -C /tmp
답변3
이 oneliner는 다음과 같은 작업을 수행합니다.
tar xvzf -C /tmp/ < <(wget -q -O - http://foo.com/myfile.tar.gz)
간단한 설명: 대괄호의 오른쪽이 먼저 실행됩니다( -q
wget에게 조용히 실행하도록 지시하며 -O -
이는 출력을 stdout에 쓰는 데 사용됩니다).
그런 다음 Bash에서 프로세스 대체 연산자를 사용하여 명명된 파이프를 생성합니다 <(
.명명된 파이프. 이러한 방식으로 임시 파일 설명자를 만든 다음 파일 리디렉션 연산자를 사용하여 해당 설명자의 내용을 tar로 보냅니다 <
.
답변4
리디렉션을 처리하고 파일을 추출할 수 있는 라이너입니다 tar.bz2
. xz
gzip 파일을 추출 하는 데 사용됩니다 .
curl -L https://downloads.getmonero.org/cli/linux64 | tar xj