
多くのウェブサイトでは、最新バージョンのバイナリを取得するためにURLをリダイレクトします。
たとえば、
wget https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=linux64&lang=fr
Firefoxの最新の開発者バージョンをダウンロードできます。出力ファイルは「firefox-50.0a2.fr.linux-x86_64.tar.bz2」。
しかし、
wget https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=linux64&lang=fr -P $HOME
次の出力ファイル名が生成されます。?product=firefox-aurora-latest-l10n&os=linux64&lang=fr」。
だから私は次を使用します:
wget https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=linux64&lang=fr -P $HOME --trust-server-names
正しいファイル名にリダイレクト: "Firefox-50.0a2.fr.linux-x86_64.tar.bz2"。
ただし、次のアップデートではファイル名が異なります。
現在スクリプトを作成しているため、正しいファイル名のファイルをダウンロードする必要があります。
私の質問は次のとおりです
後でアーカイブを抽出するために使用できるように、$ varにダウンロードしたファイル名をどのように取得できますか?
注:デフォルト名はURLにないため使用できません。
注2:実験的で信頼できない--trust-server-names
ため、これを使用しています。--content-disposition
答え1
ファイル名は、次のようにコマンドのstderr出力で見ることができます。
Saving to: 'firefox-50.0a2.fr.linux-x86_64.tar.bz2'
したがって、stderrをファイルまたはパイプとしてキャプチャし、文字列を抽出できます。
if wget ... 2>log
then filename=$(awk <log '/^Saving to:/{print substr($0,13,length($0)-14)}')
...
または、必要に応じて、次のようにしてリダイレクトからファイル名を取得できます。
wget -S --max-redirect=0 ...
ファイルは検索しませんが、stderrに新しい場所が表示されます。
Location: https://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora-l10n/firefox-50.0a2.fr.linux-x86_64.tar.bz2
その後、ファイル名を抽出できます。