[curl] 컬 응답 본문 끝에 줄 바꿈을 자동으로 추가

curl 요청에 대한 HTTP 응답 본문에 후행 줄 바꿈이 포함되어 있지 않으면 쉘 프롬프트가 줄 중간에 있고 마지막 컬을 넣을 때 탈출이 엉망이되는 성가신 조건으로 끝납니다. curl 명령에서 문자를 삭제하면 잘못된 문자가 삭제됩니다.

예를 들면 다음과 같습니다.

[root@localhost ~]# curl jsonip.com
{"ip":"10.10.10.10","about":"/about"}[root@localhost ~]#

컬 응답 끝에 줄 바꿈을 자동으로 추가하여 화면 왼쪽 가장자리에 프롬프트를 다시 표시하는 데 사용할 수있는 트릭이 있습니까?



답변

man 파일에서 :

스크립트 프로그래머가 curl의 진행 상황을 더 잘 알 수 있도록 -w /-write-out 옵션이 도입되었습니다. 이를 사용하여 이전 전송에서 추출 할 정보를 지정할 수 있습니다.

일부 텍스트 및 끝 줄 바꿈과 함께 다운로드 된 바이트 양을 표시하려면

curl -w 'We downloaded %{size_download} bytes\n' www.download.com

따라서 ~/.curlrc파일에 다음을 추가 하십시오.

-w "\n"


답변

시도해보십시오 :

curl jsonip.com; echo

산출

{"ip":"x.x.x.x","about":"/about"}

이는 것을 간단한;)

(curl 명령에 국한되지 않고 개행으로 끝나지 않는 모든 명령)


답변

컬 후 깔끔한 새로운 라인뿐만 아니라 더 많은 정보

~/.curlrc

-w "\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\"%{content_type}\"\n"

(더 많은 옵션이 여기에 있습니다 )

redirect_url 요청이 리디렉션되지 않거나 사용하는 경우 비어 있습니다. -L 을 따르기 위해 하는 .

출력 예 :

~ ➤  curl https://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.uk/?gfe_rd=cr&amp;ei=FW">here</A>.
</BODY></HTML>

status=302 https://www.google.co.uk/?gfe_rd=cr&ei=FW size=262 time=0.044209 content-type="text/html; charset=UTF-8"
~ ➤

Edit , 일을 더 읽기 쉽게하기 위해 ANSI 색상을 -w줄에 추가 할 수는 있지만 직접 작성하는 것은 쉽지 않지만 스크립트는 ~/.curlrc색상이 있는 파일을 생성 할 수 있습니다 .

#!/usr/bin/env python3
from pathlib import Path
import click
chunks = [
    ('status=', 'blue'),
    ('%{http_code} ', 'green'),
    ('%{redirect_url} ', 'green'),
    ('size=', 'blue'),
    ('%{size_download} ', 'green'),
    ('time=', 'blue'),
    ('%{time_total} ', 'green'),
    ('content-type=', 'blue'),
    ('\\"%{content_type}\\"', 'green'),
]
content = '-w "\\n'
for chunk, colour in chunks:
    content += click.style(chunk, fg=colour)
content += '\\n"\n'

path = (Path.home() / '.curlrc').resolve()
print('writing:\n{}to: {}'.format(content, path))
path.write_text(content)


답변

bash의 일반적인 해결책은 명령 줄에 개행 기호를 추가하는 것입니다.

관련 질문 ( bash 프롬프트 전에 줄 바꿈을하는 방법?
) 및 해당 답변을 참조하십시오

이 솔루션은 컬뿐만 아니라 각 명령에 적용됩니다.

echo $PS1 # To get your current PS1 env variable's value aka '_current_PS1_'
PS1='\n_current_PS1_'

유일한 부작용은 두 번째 줄마다 명령 프롬프트를 얻는 것입니다.


답변