OS X 终端:卡在“>”行

OS X 终端:卡在“>”行

我尝试执行一个 Curl 命令(到 ElasticSearch REST API),如下所示:

curl -X GET "localhost:9200/_search”?pretty -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

我在每一行上都看到了尖括号>,但不知道该如何执行我输入的命令。我找到了这个页面一些信息,但我尝试了建议,但没有用。

Control + D给我:

-bash: 在寻找匹配的 `"' 时出现意外的 EOF -bash: 语法错误:意外的文件结束

写入 EOF,然后Control + D给我相同的结果。

答案1

您的样本是这样的:

curl -X GET "localhost:9200/_search”?pretty -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

后面的第二个引号_search是“智能引号”(即:),而不是直接引号(即":)。所以应该是;请注意我是如何?pretty像这样添加后面的引号的:

curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

但话虽如此,为什么任何在该 URL 两边加上引号,因为它可以轻松地像这样工作:

curl -X GET localhost:9200/_search?pretty -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

答案2

有一些方法可以实现这一点:

1. 从标准输入读取

curl -X GET http://localhost:9200/search?pretty -H 'Content-Type: application/json' -d @-

然后您可以输入JSON代码并按Ctrl+D发送。

您也可以从另一个程序通过管道传输它,例如:

some-node-app-that-outputs-json | curl -X GET http://localhost:9200/search?pretty -H 'Content-Type: application/json' -d @-

2. 从文件读取

您也可以将其写入文件并传递该文件:

curl -X GET http://localhost:9200/search?pretty -H 'Content-Type: application/json' -d @yourfile.json

答案3

第二个“双引号”是错误的。由于引号未闭合,因此您会收到$PS2提示,以便将其闭合。

$ charinfo '"localhost:9200/_search”'
U+0022 QUOTATION MARK [Po]
U+006C LATIN SMALL LETTER L [Ll]
U+006F LATIN SMALL LETTER O [Ll]
 ...
U+0072 LATIN SMALL LETTER R [Ll]
U+0063 LATIN SMALL LETTER C [Ll]
U+0068 LATIN SMALL LETTER H [Ll]
U+201D RIGHT DOUBLE QUOTATION MARK [Pf]

相关内容