OS X:相当于 Linux 的 wget
Posted
技术标签:
【中文标题】OS X:相当于 Linux 的 wget【英文标题】:OS X: equivalent of Linux's wget 【发布时间】:2011-06-02 02:39:48 【问题描述】:如何在现有的 OS X 系统上从 Un*x shell 脚本执行 HTTP GET? (安装第三方软件不是一种选择,因为它必须在许多我无法控制的不同系统上运行)。
例如,如果我在本地启动 Mercurial 服务器并执行 hg 服务:
... $ hg serve
然后,从具有 wget 命令的 Linux 中,我执行 wget:
... $ wget http://127.0.0.1:8000
--2010-12-31 22:18:25-- http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... 200 Script output follows
Length: unspecified [text/html]
Saving to: `index.html
在我启动 "hg serve" 命令的终端上,我确实可以看到 HTTP GET 成功了:
127.0.0.1 - - [30/Dec/2010 22:18:17] "GET / HTTP/1.0" 200 -
因此,在 Linux 上,从 shell 脚本执行 HTTP GET 的一种方法是使用 wget(当然,如果安装了该命令)。
还有哪些其他方法可以实现与 wget 等效的功能?我特别在寻找适用于现有 OS X 安装的东西。
【问题讨论】:
也方便:mikebeach.org/2012/09/29/how-to-install-wget-in-mac-os-x 【参考方案1】:我不得不说curl http://127.0.0.1:8000 -o outfile
【讨论】:
另外,wget 可通过MacPorts 和Fink 获得。 我来自谷歌搜索如何在 Mac 上获取 wget,因此尽管 OP 要求避免安装第 3 方软件,但我将提供指向我在 @ 上找到的快速指南的链接987654323@ 供将来参考。 Homebrew 上也有。 似乎没有跟上。 对于下载文件,您可以使用-O
或--remote-name
标志来自动重命名下载的文件。例如curl -O http://somehost.org/file.zip
【参考方案2】:
brew install wget
Homebrew 是 OSX 的包管理器,类似于 yum、apt-get、choco、emerge 等。请注意,您还需要安装 Xcode 和命令行工具。几乎任何在 OSX 中使用命令行的人都想安装这些东西。
如果您不能或不想使用自制软件,您也可以:
手动安装 wget:
curl -# "http://ftp.gnu.org/gnu/wget/wget-1.17.1.tar.xz" -o "wget.tar.xz"
tar xf wget.tar.xz
cd wget-1.17.1
./configure --with-ssl=openssl -with-libssl-prefix=/usr/local/ssl && make -j8 && make install
或者,使用 bash 别名:
function _wget() curl "$1" -o $(basename "$1") ; ;
alias wget='_wget'
【讨论】:
您可能需要花一点时间来解释自制软件,但重要的是这里有一个新手可见的wget
答案,因为唯一的另一个答案已被其所有者删除,而curl
是另一种选择而不是字面上的等价物。
谢谢,作为已经安装了 brew 的人,这对我很有帮助。
@Michaelangelo 破坏别人的帖子不是你的工作。您不应该编辑其他答案来表达自己的观点 - 这是不合适的。事实上,这些行动正在 Meta 上讨论:meta.***.com/questions/315892/…
@EricHartford 否决投票并不能解决问题。它提供了 one 替代方案,没有列出如何手动安装 wget 的 other 选项。
我认为你的观点很好。我将编辑答案以纳入您的想法。【参考方案3】:
Curl 有一个几乎等同于默认 wget 的模式。
curl -O <url>
这就像
wget <url>
而且,如果您愿意,可以将其添加到您的 .bashrc:
alias wget='curl -O'
它不是 100% 兼容,但它适用于最常见的 wget 用法 (IMO)
【讨论】:
你如何用这个递归? 您可以使用 bash 将其添加到这样的循环中:for i in `seq 1 <n>` do curl -O <url>;done;
其中 -L
标志来跟踪位置重定向。你可以使用curl -OL <url>
来做到这一点。
-O
也仅适用于下一个参数,因此要下载多个 URL,您必须使用 curl -O "$url1" -O "$url2"
或 printf %s\\n "$url1" "$url2"|xargs -n1 curl -O
之类的东西。
这是一个很棒的技巧。非常感谢!【参考方案4】:
1) 在您的 mac 类型上
nano /usr/bin/wget
2) 粘贴以下内容
#!/bin/bash
curl -L $1 -o $2
3) 关闭然后使其可执行
chmod 777 /usr/bin/wget
就是这样。
【讨论】:
比别名好。 几乎正确。我相信第一步应该是vim /usr/bin/wget
;) 哈哈,开个玩笑。感谢您的回答——这对我来说从来没有真正发生过,出于某种原因,我不想安装 brew/fink/whatever,所以感谢这个简单便携的答案。
-L
对于处理 http 301
响应很重要。 wget 默认处理它们。
"curl -L resource.url/tar.tar.gz -O tar.tar.gz" 工作得很好,感谢这个线程中唯一可行的解决方案。
sudo nano /usr/bin/wget【参考方案5】:
使用curl
;
curl http://127.0.0.1:8000 -o index.html
【讨论】:
【参考方案6】:这是相当于 Linux 的 wget 的 Mac OS X。
对于 Linux,例如 AWS 实例上的 Ubuntu,请使用:
wget http://example.com/textfile.txt
在 Mac 上,即用于本地开发,使用这个:
curl http://example.com/textfile.txt -o textfile.txt
在 Mac 上需要 -o 参数才能输出到文件而不是屏幕上。为重命名下载的文件指定不同的目标名称。
使用 capital -O 来重命名 wget。小写 -o 将指定传输日志的输出文件。
【讨论】:
【参考方案7】:你可以在mac机器上构建wget,也可以使用MacPorts直接安装。
sudo port install wget
这就像一个魅力,你也可以在最新版本可用时立即更新。 Port 比 brew 稳定得多,但公式和端口的数量要少得多。
您可以从https://www.macports.org/install.php
安装MacPorts,您可以下载.pkg
文件并安装它。
【讨论】:
你如何安装端口?【参考方案8】:您可以尝试“brew install wget”并使用 wget。
您需要在您的 mac 中安装 brew。
【讨论】:
不会投反对票,但这是埃里克在 2013 年 6 月 13 日回答的骗局。【参考方案9】:您可以改用curl
。它默认安装到/usr/bin
。
【讨论】:
【参考方案10】:wget 预编译的 Mac 二进制文件
对于那些希望在 Mac 上快速安装 wget 的人,请在此处查看 Quentin Stafford-Fraser 的预编译二进制文件,它已经存在了十多年:
https://statusq.org/archives/2008/07/30/1954/2008 wget.zip 的 MD5:24a35d499704eecedd09e0dd521755822005 wget.zip 的 MD5: c7b48ec3ff929d9bd28ddb87e1a76ffb
没有 make/install/port/brew/curl 垃圾。只需下载、安装和运行。适用于 Mac OS X 10.3-10.12+。
【讨论】:
以上是关于OS X:相当于 Linux 的 wget的主要内容,如果未能解决你的问题,请参考以下文章
Linux (Fedora 13) 与 OS X 中的 sigwait