Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OSX:相当于Linux';s wget_Macos_Shell_Unix_Http Get - Fatal编程技术网

Macos OSX:相当于Linux';s 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..

如何在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... 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
对于处理http
301
响应非常重要。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