Comment envoyer de la ligne de rupture avec curl?
J'ai essayé suivantes pour envoyer un saut de ligne avec curl, mais \n
n'est pas interprété par le roulage.
curl -X PUT -d "my message\n" http://localhost:8000/hello
Comment puis-je envoyer un saut de ligne avec curl?
- Sur quelle plateforme? Peut être pertinente
- La plate-forme Linux.
- quelqu'un veuillez-vous vraiment besoin de cette réponse. stackoverflow.com/questions/23932899/...
Vous devez vous connecter pour publier un commentaire.
Parfois, vous voulez fournir les données à envoyer verbatim.
La
--data-binary
option ne fonctionne que.-d @message.txt
comme suggéré dans l'autre réponse, en particulier, peuvent modifier les sauts de ligne.--data-binary
d'autre part de ne pas (ce qui est important si vous avez besoin de garder vos retours à la ligne (CRLF pour multipart/form-data, voir: stackoverflow.com/questions/10765243/...)curl -H "Content-Type:text/plain" --data-binary "$(<myfile)" http://localhost:8888
curl --data-binary @/path/to/file.txt http://example.com/target
--data-binary @/path/to/file.txt
, comme suggéré par @FrankOlschewski, ne fonctionne pas pour moi avec curl 7.47.0 sur Linux x86_64. À l'aide d'un shell interne est exécuté via"(<myfile)"
comme suggéré par @mikemaccana pour insérer le texte multiligne dans la commande fonctionne pour moi, cependant.curl -X POST -H "AuthToken: CF179AE4-3C99-45F5-A7CC-3284AA91CF67" http://localhost:8080/collector --data-binary @large.log -s
Votre shell est en train de passer
\
suivie parn
plutôt que d'un retour à la ligne à friser plutôt que"my message\n"
. Bash a une autre syntaxe de la chaîne qui prend en charge les séquences d'échappement comme\n
et\t
. Pour l'utiliser, il commence la série avec$'
et à la fin de la chaîne de'
:Voir ANSI-C Citant dans le Bash Manuel De Référence
my message\n
verbatim, pas avec deux évasions comme vous le dites.my message\n
est le même que ce que je qualifie de"my message\n"
.\n
n'a rien à voir avec le JavaScript. En fait, rien ici n'a rien à voir avec le JavaScript.La solution pour quelqu'un qui ne veut pas utiliser les fichiers, et ne veut pas recourir à la coquille s'échapper de la magie est:
Mais c'est littérale des retours à la ligne dans le post de données de charge utile, et pas dans les champs de formulaire.
@
est d'indiquer un nom de fichier, mais est-il une signification particulière lors de l'utilisation de@-
? Qu'est-ce que<<EOF
faire?@-
indique à curl de consommer de l'entrée standard, et<<EOF
est la fin de stream indicateur pour bash. Nous avons ensuite le mot magiqueEOF
dans la charge utile de données de dire bash que nous sommes en fait écrit dans le flux.-
est en quelque sorte la manière standard de GNU/Linux pour spécifier STDIN lorsqu'un nom de fichier est prévu. Il n'est pas universel, mais il est assez commun.Il y a un moyen beaucoup plus facile!
Cela utiliser ANSI-C Citant pour insérer le caractère de saut de ligne.
Pas de tuyauterie, pas de fichiers de données. Voir aussi L'envoi des retours à la ligne avec cURL.
(Je me suis retrouvé ici avec une question légèrement différente, donc je vais juste poster ma réponse, car elle pourrait aider les futurs explorateurs)
Ma solution s'applique aux personnes qui sont à l'envoi du formulaire de données de style, c'est à dire des paires clé/valeur dans une chaîne de requête. L'utilisation de l'encodage du saut de ligne, ce qui est
%0A
, de la même manière codée de l'espace est%20
. Vous pouvez utiliser http://meyerweb.com/eric/tools/dencoder/ pour convertir d'autres symboles.Donc, si vous voulez définir la clé
message
de la valeur:vous envoyer
Pas de réponse à votre question, mais je tiens à le contourner par la création d'un fichier temporaire contenant le message et saut de ligne, et de donner curl fichier à travailler sur:
De la manuel:
--data-binary
est plus fidèle alternative à-d
, comme il enverra les données textuelles.-d @/path/to/temp/file.txt
ne résout PAS le saut de ligne problème.--data-binary
n', voir ci-dessus.D'une manière très facile, juste Maj-Entrée dans la console pour la pause. Très lisible tapant trop.
Faire pour supprimer le saut de ligne:
Eu le même problème. Tout téléchargement de fichier csv à partir de Mac de stockage cloud, de nouvelles lignes ont été enlevés. Après le téléchargement, le fichier entier ressemblait à une seule ligne. J'ai essayé d'ajouter différents EOL caractères '\n' '\r' '\r\n', sans succès. À l'aide de '--des données binaires' au lieu de '-d' a résolu le problème.
Btw, ce problème s'est produite uniquement à partir de Mac. '-d' a très bien fonctionné, tout en faisant de l'appel de CentOS machine. Beaucoup cela ressemble en raison de Mac caractère de saut de ligne. Mais ne se sentent pas comme le débogage plus.
Merci beaucoup pour votre aide.
VS
--data-binary @
a résolu mon problème (envoi d'une multiligne .ics fichier sur un serveur CalDAV).J'ai été en utilisant Sendgrid avec ce code (copié ci-dessous) à l'origine trouvé ici https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html
\n\n
travaillé dans Gmail, mais\n
a été ignorée. J'ai essayé de doubler la fuite et autres suggestions. J'ai aussi essayé\r\n
et qui ne fonctionne pas dans Gmail soit. Note: je n'ai pas pris la peine de tester d'autres clients de messagerie, c'était peut-être un Gmail-problème spécifique.Finalement, j'ai abandonné la recherche d'une solution et de commutation de la
text/plain
àtext/html
et juste utilisé<br />
balises.Quelqu'un a suggéré que Sendgrid convertit en texte au format HTML si vous avez un pixel de suivi est activé, ce qui est logique. Peut-être que les retours à la ligne ont été détruits dans le texte en clair-de-html processus de conversion. Je suppose que le client veut un pixel de suivi, il a donc décidé de passer à HTML.