我如何运行与此“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。不幸的是,我有一个较旧版本的wget(基于 darwin14.3.0 构建的 GNU Wget 1.15),无法升级它。具体来说,是wget --show-progress无法识别的选项。

我想知道是否有等效的命令curl? 我的系统上的版本curl是 7.37.1 (x86_64-apple-darwin14.0)。

答案1

但它只适用于较新版本的wget。不幸的是,我有一个较旧版本的wget(基于 darwin14.3.0 构建的 GNU Wget 1.15),无法升级它。具体来说,是wget --show-progress 无法识别的选项。

根据我对 how curlworks 和 how wgetworks 的了解,它们表面上可能看起来相同,但在 中没有等效的wget递归功能curl。要在 中执行此类操作,curl需要一些花哨的 Bash 脚本来包装curl命令。

所以当你说无法升级时wget,你到底是什么意思?由于wget是 GNU 工具,它不会随 Darwin(基于 BSD)一起安装,并且通常是从源代码编译的。事实上,你提供的版本详细信息显然是以某种方式从源代码编译的,因为版本是“基于 darwin14.3.0 构建的 GNU Wget 1.15”。因此,如果该版本的wget安装方式类似于自制,如果您的系统上有 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

如果运行顺利,那么新编译的 1.16.3 二进制版本wget就可以供您使用了。

wget从您的主目录运行新编译的版本。

现在,大多数说明都会说您应该运行sudo make installwget在系统上完全安装。但是,如果您没有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

相关内容