zsh:当 $curl -s -X localhost:60702/api/bundle?name=light%20reading | 时找不到匹配项j q '.'

问题描述 投票:0回答:3

我正在阅读 Jim Wilson 所著的《Node.js The Right Way》一书。我当前正在尝试使用 PUSH 请求来创建具有指定名称的新包。 *curl -X POST http://:/api/bundle?name=

但是,当我使用命令时:

$ curl -s -X POST localhost:60702/api/bundle?name=light%20reading | jq '.'

我得到的不是指示捆绑包已创建的 JSON,而是:

zsh: no matches found: localhost:60702/api/bundle?name=light%20reading

该命令应该使用 POST 请求来创建一个新的我的所有代码都与书中列出的代码完全相同。有任何想法吗?

node.js express elasticsearch
3个回答
54
投票

你可以尝试一下吗

curl -s -X POST 'localhost:3000/api/bundle?name=light%20reading'

即将 url 括在 '


24
投票

这似乎是 zsh 解决的问题这里

有几种方法可以解决这个问题:

  1. 您可以通过引用 @huzaifa-saifuddin 所解释的 url 来转义 url 中的问号 ?,以避免 zsh 将其视为通配符。

  2. here所述,您可以为curl创建别名:

    alias curl='noglob curl'

  3. here所述,您可以通过将以下内容添加到~/.zshrc来禁用nomatch处理:

    unsetopt nomatch


0
投票

为什么?

你需要避开问号, 否则

zsh
认为它是通配符或通配符并 尝试查找与其匹配的文件
(that's why it says no matches found)

解决方案: 使用双引号或单引号

('URL')
就足够了:

curl "example.com/products?id=42" 
© www.soinside.com 2019 - 2024. All rights reserved.