Colors

用 curl 顯示 ANSI 顏色?

  • February 21, 2022

我目前正在嘗試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

不確定這是否是最好的方法,但使用命令替換似乎工作正常(即使它有點笨重):

echo -e "$(curl -s http://example.com/test.txt)"

希望這對未來的人們有所幫助。請注意,curl -sL如果您正在處理縮短的 URL,則可以使用。

回答: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

引用自:https://unix.stackexchange.com/questions/499976