curl로 줄 바꿈을 보내기 위해 다음을 시도했지만 curl로 \n
해석되지는 않습니다.
curl -X PUT -d "my message\n" http://localhost:8000/hello
컬로 줄 바꿈을 보내려면 어떻게해야합니까?
답변:
경우에 따라 그대로 보낼 데이터를 제공하려고합니다.
그만큼 --data-binary
옵션은 않습니다.
-d @message.txt
특히 다른 답변에서 제안한 것처럼 사용하는 대안은 줄 바꿈을 변경할 수 있습니다. --data-binary
반면에 그렇지 않습니다 (여러 부분 / 양식 데이터에 대한 CRLF 줄
curl -H "Content-Type:text/plain" --data-binary "$(<myfile)" http://localhost:8888
curl --data-binary @/path/to/file.txt http://example.com/target
당신의 쉘은 컬이 아닌 개행 대신에 전달 \
됩니다 . 배쉬는 지원 같은 이스케이프 시퀀스를 또 다른 문자열 구문에 대한 지원이 와 . 사용하려면 다음으로 문자열을 시작 하고 다음으로 종료하십시오 .n
"my message\n"
\n
\t
$'
'
curl -X PUT -d $'my message\n' http://localhost:8000/hello
Bash Reference Manual 의 ANSI-C Quoting 을 참조하십시오.
my message\n
, 그대로 하지 당신이 말한대로 두 개의 탈출로.
my message\n
것이 내가 말하는 것과 동일 하다고 생각합니다 "my message\n"
.
\n
JavaScript와 관련이 없습니다. 사실 여기에는 자바 스크립트와 아무 관련이 없습니다.
훨씬 쉬운 방법이 있습니다!
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
그러나 이것은 양식 필드가 아닌 포스트 데이터 페이로드의 문자 그대로 줄 바꿈입니다.
@
파일 이름을 지정하는 것입니다하지만 사용하는 일부 특별한 의미가 @-
? 어떻게되는 <<EOF
거야?
@-
curl에게 표준 입력의 입력을 사용하도록 <<EOF
지시하고 bash에 대한 스트림 표시기의 끝입니다. 그런 다음 나중에 EOF
데이터 페이로드에서 마법의 단어 를 사용하여 bash에 스트림에 대한 쓰기가 완료되었음을 알립니다.
-
파일 이름이 예상 될 때 STDIN을 지정하는 GNU / Linux의 표준 방식입니다. 보편적 인 것은 아니지만 꽤 일반적입니다.
비슷한 문제가있었습니다. 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"
--data-binary @
문제가 해결되었습니다 (여러 줄로 된 .ics 파일을 CalDAV 서버로 전송).
(나는 여기에 약간 다른 질문으로 끝났으므로 미래의 탐험가에게 도움이 될 수 있기 때문에 내 답변을 게시 할 것입니다)
내 솔루션은 양식 스타일 데이터, 즉 쿼리 문자열의 키 / 값 쌍을 보내는 사람들에게 적용됩니다. 인코딩 된 줄 바꿈을 사용합니다 . %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로 수행됩니다.
--data-binary
는 -d
데이터를 그대로 전송하므로.
-d @/path/to/temp/file.txt
하면 줄 바꿈 문제가 해결되지 않습니다. --data-binary
위를 참조하십시오.
나는 원래 여기 https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html 에서 찾은이 코드 (아래 복사)와 함께 Sendgrid를 사용했습니다.
\n\n
Gmail에서 작동했지만 \n
무시되었습니다. 나는 탈출과 다른 제안을 두 배로 늘리려 고 노력했습니다. 나는 또한 시도했지만 \r\n
Gmail에서도 작동하지 않았습니다. 참고 : 다른 이메일 클라이언트를 테스트하지 않았습니다. 아마도 Gmail 관련 문제 일 수 있습니다.
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"personalizations": [{"to": [{"email": "your.email@example.com"}]}],"from": {"email": "example@example.com"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'
결국 나는 해결책을 찾고 포기하고 전환 text/plain
에 text/html
그냥 사용하는 <br />
태그입니다.
누군가 추적 픽셀을 활성화 한 경우 Sendgrid가 일반 텍스트를 HTML로 변환하도록 제안했습니다. 일반 텍스트에서 HTML로 변환하는 과정에서 줄 바꿈이 삭제되었을 수 있습니다. 클라이언트가 추적 픽셀을 원한다고 가정하므로 HTML로 전환하기로 결정했습니다.