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

1

у меня есть 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).

Justin808
источник
Я знаю, что вы говорите, что не можете обновить установленную систему wget но с тех пор wget не входит в стандартную настройку ядра системы Mac OS X и должна выполняться самостоятельно, кто-то четко скомпилировал ее и установил там. Тем не менее, есть способ для вас, чтобы скомпилировать и запустить более новую версию wget без необходимости обновлять wget это уже установлено в вашей системе. Подробности в моем ответ опубликован ,
JakeGould
Мне бы хотелось, чтобы я мог. Я думаю, что это было установлено с Brew, но это не мой компьютер, поэтому я не могу просто обновить его.
Justin808
1
Пожалуйста, посмотрите на мой ответ. Вам не нужно обновлять wget что Homebrew установлен для запуска более новой версии wget, Если он был установлен Homebrew, то Homebrew зависит от Xcode для компиляции из исходного кода. Мои инструкции покажут вам, как вы можете скомпилировать wget самостоятельно в своем домашнем каталоге и запускайте его из этого домашнего каталога, вообще не мешая Homebrew.
JakeGould

Ответы:

2

Но это работает только в новых версиях 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 есть надежда, поскольку если в вашей системе установлен Homebrew, то в вашей системе также должен быть установлен Xcode и соответствующие инструменты / компиляторы командной строки.

Теперь, зная это, вы сможете собрать обновленную версию wget - как 1.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 <hniksic@xemacs.org>.
Please send bug reports and questions to <bug-wget@gnu.org>.

Что означает, что вы сейчас в бизнесе!

Запуск вашего 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
JakeGould
источник
1
Вы сделали это снова - решили проблему, выполнив обход ограничений. Хороший ответ.
fixer1234