Macos OSX:相当于Linux';s wget
如何在stock OS x系统上从Un*x shell脚本执行HTTP GET?(安装第三方软件不是一个选项,因为它必须在许多我无法控制的不同系统上运行) 例如,如果我在本地启动Mercurial服务器执行hg服务: 然后,在具有wget命令的Linux上,我执行wget:Macos OSX:相当于Linux';s wget,macos,shell,unix,http-get,Macos,Shell,Unix,Http Get,如何在stock OS x系统上从Un*x shell脚本执行HTTP GET?(安装第三方软件不是一个选项,因为它必须在许多我无法控制的不同系统上运行) 例如,如果我在本地启动Mercurial服务器执行hg服务: 然后,在具有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..
... $ 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得到了满足:
127.0.0.1 - - [30/Dec/2010 22:18:17] "GET / HTTP/1.0" 200 -
因此,在Linux上,从shell脚本执行HTTP GET的一种方法是使用wget(当然,如果安装了该命令)
还有什么其他方法可以达到wget的效果?特别是,我正在寻找一些可以在OSX安装上运行的东西。我不得不说
curlhttp://127.0.0.1:8000 -o输出文件
您可以使用curl
。它默认安装到/usr/bin
使用curl
curl http://127.0.0.1:8000 -o index.html
brew安装wget
是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'
这是与Linux的wget相当的MacOSX 对于Linux,例如AWS实例上的Ubuntu,请使用:
wget http://example.com/textfile.txt
在Mac上,即对于本地开发,使用以下方法:
curl http://example.com/textfile.txt -o textfile.txt
Mac上需要-o参数才能输出到文件中,而不是在屏幕上。为重命名下载的文件指定其他目标名称
使用大写字母-O进行wget重命名。小写-o将在mac类型上指定传输日志的输出文件。1)
nano /usr/bin/wget
2) 将以下内容粘贴到
#!/bin/bash
curl -L $1 -o $2
3) 关闭,然后使其可执行
chmod 777 /usr/bin/wget
就是这样。Curl的模式几乎等同于默认的wget
curl -O <url>
它不是100%兼容的,但它适用于最常见的wget用法(IMO)您可以在mac计算机上构建wget,也可以使用MacPorts直接安装它
sudo port install wget
这将像一个魅力,你也可以更新到最新版本,只要它是可用的。端口比brew稳定得多,但公式和端口的数量要少得多
您可以从
https://www.macports.org/install.php
您可以下载.pkg
文件并安装它 您可以尝试“brew安装wget”并使用wget,而不是使用等效的
您需要在mac中安装brew。wget预编译mac二进制文件
对于那些希望在Mac上快速安装wget的人,请查看昆汀·斯塔福德·弗雷泽(Quentin Stafford Fraser)的预编译二进制文件,它已经存在了十多年:
2008年的MD5 wget.zip:24a35d499704eecedd09e0dd52175582
2005年的MD5 wget.zip:c7b48ec3ff929d9bd28ddb87e1a76ffb
没有make/install/port/brew/curl垃圾。只需下载、安装并运行。适用于Mac OS X 10.3-10.12+。此外,wget可通过和获得。我是通过谷歌搜索在Mac上获得wget的,因此尽管OP要求避免安装第三方软件,我将提供一个指向我在上找到的快速指南的链接,以供将来参考。它也在自制软件上提供。似乎没有后续内容。要下载文件,您可以使用
-O
或-remote name
标志自动重命名下载的文件。e、 g.curl-Ohttp://somehost.org/file.zip
也很方便:您可能会花一点时间来解释自制,但重要的是,这里有一个新的wget
答案,因为只有另一个被它的所有者删除了,curl
是一个替代品,而不是字面上的等价物。谢谢,这对我很有帮助,因为已经安装了brew。@Michaelangelo,破坏别人的帖子不是你的工作。你不应该编辑其他答案来表达你自己的观点——这是不合适的。事实上,这些行动正在Meta上讨论:@EricHartford Down投票并不能解决问题。它提供了一个备选方案,没有列出如何手动安装wget的另一个选项。我会编辑答案,把你的想法融入其中。比化名更好。几乎正确。我认为第一步应该是vim/usr/bin/wget
哈哈,开玩笑而已。感谢您的回答——我从未真正想到过这一点,而且出于某种原因,我不想安装brew/fink/任何东西,因此,对于这个简单的可移植答案,我感到非常荣幸。-L
对于处理http301
响应非常重要。wget默认处理它们。“curl-L-O tar.tar.gz”工作得很好,这要感谢我的用例中这个线程中唯一可行的解决方案。sudo nano/usr/bin/wgethow你用这个做递归吗?你可以使用bash将它添加到这样的循环中:for i in`seq 1`do curl-O;完成
where是您要迭代的次数,是要提取的url。有时您需要添加-L
标志以跟踪位置重定向。您可以使用curl-OL
来实现这一点。-O
也只适用于下一个参数,因此要下载多个URL,您必须使用类似于curl-O“$url1”-O“$url2”
或printf%s\\n“$url1”“$url2”| xargs-n1 curl-O的东西。这是一个很棒的技巧。非常感谢你!你是怎么安装端口的?不会否决,但这是埃里克2013年6月13日回答的一个骗局。
wget <url>
alias wget='curl -O'
sudo port install wget