我目前正在尝试curl
一些原始文本,并在终端中以解释的 ANSI 颜色显示它。
目前,当我运行curl http://example.com/test.txt
(不是实际的 URL)时,它只是返回:
\033[0;31mTEST\033[0m
这不是我要找的;我期望返回的是我运行时看到的内容echo -e "\033[0;31mTEST\033[0m"
,它返回TEST
,颜色为红色。
我的问题是:是否有一种方法可以curl
解释 ANSI 颜色代码,以便让颜色在终端中正确显示,正如您在使用时所期望的那样echo -e
?
答案1
不确定这是否是最好的方法,但使用命令替换似乎工作正常(即使它有点笨重):
echo -e "$(curl -s http://example.com/test.txt)"
希望这对未来的人们有帮助。请注意curl -sL
,如果您正在处理缩短的 URL,则可以使用。
答案2
回答:curl --http0.9 example.com/test.txt
从curl 7.66.0开始,默认拒绝原始文本。添加--http0.9解决问题。这是一个使用 netcat 来伪造网络服务器的示例:
echo $'\e[0;31mTEST\e[0m' | nc -l -p 8080 -q0 &
curl --http0.9 localhost:8080
另一个答案:nc example.com 80
Netcat 还可以从网络服务器获取文本。然而,它不支持 HTTP,所以有点棘手:
printf "GET / HTTP/1.0\nHost: example.com\n\n" | nc -C example.com 80