[http] 컬로 줄 바꿈을 보내는 방법은 무엇입니까?

curl로 줄 바꿈을 보내기 위해 다음을 시도했지만 curl로 \n해석되지는 않습니다.

curl -X PUT -d "my message\n" http://localhost:8000/hello

컬로 줄 바꿈을 보내려면 어떻게해야합니까?



답변

경우에 따라 그대로 보낼 데이터를 제공하려고합니다.

그만큼 --data-binary옵션은 않습니다.


답변

당신의 쉘은 컬이 아닌 개행 대신에 전달 \됩니다 . 배쉬는 지원 같은 이스케이프 시퀀스를 또 다른 문자열 구문에 대한 지원이 와 . 사용하려면 다음으로 문자열을 시작 하고 다음으로 종료하십시오 .n"my message\n"\n\t$''

curl -X PUT -d $'my message\n' http://localhost:8000/hello

Bash Reference ManualANSI-C Quoting 을 참조하십시오.


답변

훨씬 쉬운 방법이 있습니다!

curl -X PUT -d $'my message\n' http://localhost:8000/hello

이것은 ANSI-C Quoting 을 사용 하여 개행 문자를 삽입합니다.

배관이나 데이터 파일이 없습니다. cURL로 줄 바꿈 보내기 도 참조하십시오 .


답변

파일을 사용하고 싶지 않고 셸 이스케이프 마법에 의지하고 싶지 않은 사람을위한 솔루션은 다음과 같습니다.

curl -X POST --data-binary @- http://url.com <<EOF
line one
line two
EOF

그러나 이것은 양식 필드가 아닌 포스트 데이터 페이로드의 문자 그대로 줄 바꿈입니다.


답변

비슷한 문제가있었습니다. Mac에서 클라우드 스토리지로 csv 파일을 업로드하는 동안 새 줄이 제거되었습니다. 다운로드 후 전체 파일이 한 줄처럼 보입니다. 다른 EOL 문자 ‘\ n’ ‘\ r’ ‘\ r \ n’을 추가하려고 시도했지만 성공하지 못했습니다. ‘-d’대신 ‘–data-binary’를 사용하면 문제가 해결되었습니다. Btw이 문제는 Mac에서만 발생했습니다. ‘-d’는 CentOS 시스템에서 호출하는 동안 잘 작동했습니다. 이것은 Mac의 개행 문자로 인해 매우 많이 보입니다. 그러나 더 이상 디버깅하고 싶지는 않습니다.

도와 주셔서 정말로 고맙습니다.

curl -X PUT -d @filename.csv https://cloudstorage -H "content-type: text/csv"

VS

curl -X PUT --data-binary @filename.csv https://cloudstorage -H "content-type: text/csv"


답변

(나는 여기에 약간 다른 질문으로 끝났으므로 미래의 탐험가에게 도움이 될 수 있기 때문에 내 답변을 게시 할 것입니다)

내 솔루션은 양식 스타일 데이터, 즉 쿼리 문자열의 키 / 값 쌍을 보내는 사람들에게 적용됩니다. 인코딩 된 줄 바꿈을 사용합니다 . %0A즉, 인코딩 된 공백과 같은 방식입니다 %20. http://meyerweb.com/eric/tools/dencoder/ 를 사용할 수 있습니다 . 를 하여 다른 기호를 변환 .

따라서 키 message를 값 으로 설정하려면 다음 을 수행하십시오.

line one
another

당신은 보낼 것입니다

curl --data "message=line%20one%0Aanother" http://localhost:8000/hello


답변

귀하의 질문에 대한 대답은 아니지만 메시지와 줄 바꿈이 포함 된 임시 파일을 만들어 해결하고 해당 파일에 대해 작업 할 curl을 제공합니다.

curl -X PUT -d @message.txt http://localhost:8000/hello

로부터 수동 :

@ 문자로 데이터를 시작하는 경우 나머지는 데이터를 읽을 파일 이름이어야합니다. 또는 curl이 stdin에서 데이터를 읽으려면-이어야합니다. 파일 내용은 이미 URL 인코딩되어 있어야합니다. 여러 파일을 지정할 수도 있습니다. 따라서 ‘foobar’라는 파일에서 데이터를 게시하는 것은 –data @foobar로 수행됩니다.