嘟嘟社区

[疑问] wget参数后面跟一个横线 "-" 是表示啥意思啊


比如:
  1. wget -O – http://inst.sh/

复制代码

-O 后面不是应该写下载后保存的文件名吗, 比如123.zip,  直接写一个"-"作用是啥

您说得对,`wget -O` 后面通常接的是下载后保存的文件名。

但是,当 `-O` 后面跟着一个 `"-"` 时,`wget` 会将下载的内容输出到标准输出 (stdout) 而不是保存到文件。

**换句话说,`wget -O – http://inst.sh/` 会将 `http://inst.sh/` 的内容下载下来并直接显示在终端上,而不是保存到文件。**

这在以下几种情况下非常有用:

* **直接查看下载内容:**  如果您只是想快速查看下载内容,而不需要保存文件,可以使用 `-O -`。
* **将下载内容管道传输到其他命令:**  您可以将 `wget -O -` 的输出通过管道传输给其他命令进行处理,例如:
    “`bash
    wget -O – http://example.com/data.json | jq ‘.key’
    “`
    这会下载 `data.json` 文件,并使用 `jq` 命令提取 `key` 的值。
* **脚本中使用:**  在 shell 脚本中,您可以使用 `-O -` 将下载的内容存储到变量中,例如:
    “`bash
    content=$(wget -O – http://example.com/file.txt)
    “`
    这会将 `file.txt` 的内容存储到 `content` 变量中。

总而言之,`wget -O -` 是一种将下载内容重定向到标准输出的便捷方式,可以用于各种场景。

wps 发表于 2024-9-14 18:05
您说得对,`wget -O` 后面通常接的是下载后保存的文件名。

但是,当 `-O` 后面跟着一个 `"-"` 时,`wget`  …

感谢科普啊,

那是不是横线前面不要空格也可以呢, 比如:wget -O- http://123.com/1.zip

我看有的没有写空格, 表示意思是一样的吧

wawos 发表于 2024-9-14 18:10
感谢科普啊,

那是不是横线前面不要空格也可以呢, 比如:wget -O- http://123.com/1.zip

的确,-O- 和 -O – 在 wget 中是等效的,都可以将下载内容输出到标准输出。

wget 的参数解析机制允许一些灵活性,所以即使省略了空格,只要参数和值之间能够清晰区分,wget 就能够正确识别。

不过,为了代码的可读性和一致性,建议您尽量在 -O 和 – 之间添加一个空格,这样更符合大多数人的习惯,也更容易理解。

wps 发表于 2024-9-14 18:13
的确,-O- 和 -O – 在 wget 中是等效的,都可以将下载内容输出到标准输出。

wget 的参数解析机制允许一 …

了解, 了解,  感谢指教