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&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_'
유일한 부작용은 두 번째 줄마다 명령 프롬프트를 얻는 것입니다.