cURL 是所有类 Unix 操作系统的标准部分吗?

mar*_*tin 7 unix curl

我正在编写一个需要从 Internet 下载一些数据的 shell 脚本,我只是在想是否可以依靠cURL它预装在所有 Unix 发行版上。
我知道wget默认情况下不在 OS X 上,但在 OS XcURL上。我还记得我cURL在 Ubuntu Server 上安装,但已经一两年了。我今天尝试了 Ubuntu Server 12.04,它是cURL开箱即用的。

Dan*_*man 11

不,cURL 不是操作系统的标准部分。它不是所有基于 Linux 的发行版的标准。

  • 是否有某种列表可用于所有预装命令的每个发行版? (7认同)

Kaj*_*nbo 7

curl 和 wget 都不能“保证”安装在任何地方,尤其是在正确的 UNIX 系统上。它们不是 POSIX 标准。ftp、ssh / scp / sftp、rsync、telnet、nc / netcat、openssl 或可能想到的任何相关工具都不是。对我来说,这似乎是一个奇怪的疏忽,但事实就是如此。

各种 GNU/Linux 发行版可能包括curl 和/或wget,但YMMV。

对于这种情况,FreeBSD 标配了“ fetch ”工具,而 OpenBSD 则配备了一个增强的“ ftp ”客户端,可以通过“AUTO-FETCHING”功能完成这项工作。

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/

据我所知,POSIX根本没有定义“tcp”文件传输工具。 uucp是标准的,但我不知道您是否可以在两端不更改配置的情况下使其工作。

您可以对它们进行测试(正如许多人所建议的那样),但为了确定您需要安装一些东西或编写一些东西。

具有 tcp 套接字支持的 shell(如 ksh93 或 Bash)应该可以让您在紧要关头编写函数调用。当然,您仍然需要适当的权限来读取/写入套接字。

GNU awk(“gawk”)可以做到这一点,但是对我来说,拥有 gawk 以及没有像curl 或 wget 这样更方便的东西的可能性很小。可以肯定POSIX awk不支持网络,我不记得在“ The AWK 编程语言”中看到过任何有关它的内容,但已经有一段时间了。当然,Perl、Python、Ruby、C 等也可以做到。

请参阅: https: //www.shell-tips.com/bash/download-files-from-shell/

https://unix.stackexchange.com/questions/83926/how-to-download-a-file-using-just-bash-and-nothing-else-no-curl-wget-perl-et

https://unix.stackexchange.com/questions/336876/simple-shell-script-to-send-socket-message

注意:截至 2022 年,古腾堡计划似乎不再支持通过端口 80 进行不安全下载,因此下面的脚本示例已使用 HTTP 镜像进行了更新。

#!/bin/ksh

## Tested with ksh93u+ and Bash v3.2x
## Not tested with Binary files
## HTTP/1.1 will cause output to hang

#xHOST=gutenberg.org
#xDOC=/files/84/old/84.txt

gpHOST=mirrors.xmission.com
gpDOC=/gutenberg/8/84/old/84.txt
gpPORT=80

exec 3<>/dev/tcp/${gpHOST}/${gpPORT}
printf "GET ${gpDOC} HTTP/1.0\r\nHost: ${gpHOST}\r\n\r\n" >&3

# drop the header from the data stream
while IFS= read -r line ; do
   [ "$line" == $'\r' ] && break
done <&3

cat <&3 | tee Frankenstein.txt

Run Code Online (Sandbox Code Playgroud)

专业提示:“tar”也不是 POSIX!请改用“ pax ”。


and*_*dol 5

其他一切都等于我会说你安装 wget 的可能性更大。

然而,为什么不简单地创建一个条件,在 PATH 中同时查找 wget 和 curl,并使用任何可用的东西(如果有的话)?如果你想野心勃勃,也可以随意在 lynx、w3m 等中混用。