Как запустить эквивалентную команду «curl», которая выполняет те же функции, что и команда «wget»?

Как запустить эквивалентную команду «curl», которая выполняет те же функции, что и команда «wget»?

у меня есть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. К сожалению, у меня старая версия wget(GNU Wget 1.15, построенная на darwin14.3.0), и я не могу ее обновить. Конкретно эта wget --show-progressопция не распознается.

Мне интересно, есть ли эквивалентная команда дляcurl? Версия curlна моей системе — 7.37.1 (x86_64-apple-darwin14.0).

решение1

Но это работает только в новых версиях wget. К сожалению, у меня старая версия wget(GNU Wget 1.15, построенная на darwin14.3.0), и я не могу ее обновить. Конкретно эта wget --show-progress опция не распознается.

Исходя из того, что я знаю о том, как curlработает и как wgetработает, они могут на первый взгляд показаться одинаковыми, но в wget. curlЧтобы сделать что-то подобное в , curlтребуется какой-нибудь замысловатый скрипт Bash для обертывания curlкоманды.

Итак, когда вы говорите, что не можете обновить wget, что именно вы имеете в виду? Поскольку wgetэто инструмент GNU, он не устанавливается вместе с Darwin (который основан на BSD) и часто компилируется из исходников. Фактически, предоставленные вами сведения о версии явно скомпилированы из исходников, поскольку версия — «GNU Wget 1.15, построенная на darwin14.3.0». Так что если эта версия wgetбыла установлена ​​чем-то вродеДомашнее пиво, есть надежда, поскольку если Homebrew установлен в вашей системе, то в вашей системе также должен быть установлен Xcode и связанные с ним инструменты командной строки/компиляторы.

Теперь, зная это, вы должны быть в состоянии скомпилировать обновленную версию —например, wget1.16.3—из исходного кода; минуя установленную версию Homebrew и просто сделав ее исполняемой из вашего домашнего каталога. У вас нет доступа root/ sudoдля этого; вот как вы можете это сделать.

Компиляция 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

Если все прошло успешно, то новая скомпилированная версия wgetдвоичного файла 1.16.3 готова к использованию.

Запуск свежескомпилированной версии wgetиз вашего домашнего каталога.

Теперь, на этом этапе, большинство инструкций скажут, что вам следует запустить sudo make install, чтобы wgetполностью установиться в системе. Но если у вас нет root/ sudoпривилегий — или вы не хотите обновлять версию wget, которая установлена ​​в системе — вы все равно можете запустить wgetтолько что скомпилированный вами двоичный файл, как здесь. Сначала давайте вернемся из wgetисходного каталога, как здесь:

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/

Очистка после использования.

А если вы хотите избавиться от wgetтолько что скомпилированного вами материала 1.16.3 (поскольку, по вашим словам, компьютер, на котором вы работаете, вам не принадлежит), то просто удалите wgetисходные файлы, с которыми вы только что работали, вот так:

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

Связанный контент