0

我正在尝试分析此命令:

$ http :"/hello"
HTTP/1.1 401 Unauthorized
<headers>

<body>

我试图将整个事情保存在一个变量中VAR=$( ... ),但到目前为止无济于事。

如果我跑

$ http :"/hello" 1>/dev/null

一切都消失了,所以我得出一切都是标准输出。

但是,如果我尝试将其发送到文件或我的变量,我看不到初始部分。所以我认为这是stderr,所以我做了2>&1,但这也没有任何效果。

我该如何理解这一点?

谢谢

4

2 回答 2

1

HTTPie 改变它的输出,这取决于它是写入终端还是普通文件。

手册

重定向输出

HTTPie 对重定向输出使用一组与终端输出不同的默认值。区别在于:

不应用格式和颜色(除非--pretty指定)。仅打印响应正文(除非设置了输出选项之一)。此外,不会抑制二进制数据。

[...]

您可以使用特定的命令行选项来覆盖默认值。

于 2021-05-25T13:24:10.477 回答
0

您可以尝试使用选项“-v”和“-o”来捕获文件中的标题和正文,如:

http -v -o output.file "google.com/bla"

正如@chepner 在评论中提到的,一些工具会检测 stdout 是否是文件并更改它们的输出。

编辑:为了你想要的最简单的工作(到标准输出),你可以使用:

http -v -o /dev/stdout "google.com/bla"
于 2021-05-25T13:21:50.797 回答