この「wget」コマンドと同様の機能を持つ同等の「curl」コマンドを実行するにはどうすればよいですか?

この「wget」コマンドと同様の機能を持つ同等の「curl」コマンドを実行するにはどうすればよいですか?

私はwget指示:

wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

しかし、これは の新しいバージョンでのみ機能しますwget。残念ながら、私は の古いバージョン (darwin14.3.0 でビルドされた GNU Wget 1.15) を持っており、アップグレードできません。具体的には、認識されないオプションwgetです。wget --show-progress

同等のコマンドがあるかどうか知りたいのですがcurl? 私のシステム上の のバージョンはcurl7.37.1 (x86_64-apple-darwin14.0) です。

答え1

しかし、これは の新しいバージョンでのみ機能しますwget。残念ながら、私は の古いバージョン (darwin14.3.0 でビルドされた GNU Wget 1.15) を持っており、アップグレードできません。具体的には 、認識されないオプションwgetです。wget --show-progress

curlと の動作に関する私の知識に基づくと、表面的には同じように見えるかもしれませんが、には再帰機能wgetに相当するものはありません。 で同様のことを行うには、コマンドをラップする高度な Bash スクリプトが必要です。wgetcurlcurlcurl

では、 をアップグレードできないとおっしゃるのはwget、具体的にはどういう意味ですか?wgetは GNU ツールなので、Darwin (BSD ベース) ではインストールされず、ソースからコンパイルされることがよくあります。実際、あなたが提供したバージョンの詳細は、バージョンが「GNU Wget 1.15 は darwin14.3.0 でビルドされています」なので、何らかの方法でソースからコンパイルされていることは明らかです。したがって、 のバージョンが次のwgetような方法でインストールされた場合、自家製ただし、Homebrew がシステムにインストールされている場合は、Xcode と関連するコマンドライン ツール/コンパイラもシステムにインストールされているはずなので、希望はあります。

これで、ソースから更新バージョン (1.16.3 など) をコンパイルできるはずです。Homebrew でインストールされたバージョンをバイパスし、ホーム ディレクトリから実行できるようにします。これを行うには/アクセス権wgetがありません。方法は次のとおりです。rootsudo

wgetソースからコンパイルしています。

まず、公式wgetソース サイトから圧縮アーカイブを取得します。

curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz

次に、次のようにアーカイブを解凍します。

tar -xzf wget-1.*.tar.gz

次に、解凍​​したディレクトリに移動します。

cd wget-1.*

次のconfigureコマンドを実行します:

./configure --with-ssl=openssl

何らかの理由でそのconfigureコマンドが失敗した場合は、次のような値を追加する必要があるかもしれません--with-libssl-prefix

./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib

プロセスが完了したらconfigure、次を実行しますmake

make

それが問題なく実行された場合、1.16.3 バイナリの新しくコンパイルされたバージョンwgetが使用できるようになります。

wgetホーム ディレクトリから新しくコンパイルされたバージョンの を実行します。

この時点で、ほとんどの手順では、システムに完全にインストールするsudo make installには を実行する必要があると書かれています。ただし、 /権限wgetがない場合、またはシステム全体にインストールされているバージョンをアップグレードしたくない場合は、コンパイルしたバイナリを次のように実行できます。まず、次のようにしてソース ディレクトリから戻ります。rootsudowgetwgetwget

cd ~/

ここで、wgetコンパイルした 1.16.3 バイナリを次のように明示的に実行して、動作していることを確認します。

~/wget-1.16.3/src/wget --version

出力は次のようになります。

GNU Wget 1.16.3 built on darwin13.4.0.

+digest +https +ipv6 -iri +large-file -nls +ntlm +opie -psl +ssl/openssl 

Wgetrc: 
    /usr/local/etc/wgetrc (system)
Compile: 
    gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc" 
    -DLOCALEDIR="/usr/local/share/locale" -I. -I../lib -I../lib 
    -DNDEBUG 
Link: 
    gcc -DNDEBUG -liconv -lssl -lcrypto -ldl -lz ftp-opie.o openssl.o 
    http-ntlm.o ../lib/libgnu.a 

Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <[email protected]>.
Please send bug reports and questions to <[email protected]>.

つまり、あなたは今ビジネスを始めているということです!

wgetホームディレクトリからコマンドを実行します。

wgetしたがって、質問に投稿されたコマンドを次のように実行できます。

~/wget-1.16.3/src/wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

また、小さな変更点ですが、注目に値するのは、多くのwgetオプションにフルネームと短縮された頭字語があることです。したがって、次のようにコマンドを--no-parent短縮することができます。-np

~/wget-1.16.3/src/wget -r -np -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

使用後のクリーンアップ。

そして、今コンパイルした 1.16.3 のものを削除したい場合はwget(作業しているコンピューターは自分のものではないとのことなので)、wget次のようにして、今作業したソース ファイルを削除します。

rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3

関連情報