特定のディレクトリにアーカイブをダウンロードして解凍したいと思います。これまで私がしたことは次のとおりです。
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
ペイロードを標準出力(フラグを使用-O-
)に出力し、独自の出力を抑制(フラグを使用)するように指示することで-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
このオネライナーは次のことを行います。
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