2

When I run a curl command, the json response that it returns collides with the bash prompt string:

~$curl localhost:8001/api
{"message":"this is a test message"}~$

Notice ~$ at the end of second line. I have customized my bash prompt string to contain the working folder:

PS1=\[\e]0;\u@\h: \w\a\]\W\$

It appears the local server (nodejs) hasn't added a newline character at the end.

How can I ensure that my bash prompt string always comes at a newline?

  • Why dont you just add echo ""after curl: curl localhost:8001/api;echo "" – 7171u Jul 22 '15 at 12:11
0
  1. Simple answer: use the \n (newline) special character at the beginning of your prompt string. It will ensure the bash prompt string always comes at a newline. This might however happen more often than you'd want.
  2. If you only run into this when using curl, have a look at this answer
| improve this answer | |
2

If you only want to do this for curl commands and don't want an extra newline added to your prompt, just echo the output:

~$ echo "$(curl localhost:8001/api)"
{"message":"this is a test message"}
~$
| improve this answer | |
0

You can force a newline after every command in the bash shell with the PROMPT_COMMAND.

PROMPT_COMMAND="echo"

Now, after every command or before every prompt echo is called without argument. Then echo only prints a newline. Notice, that if you run a command that ends with a newline, you will now have 2 newlines at the end. See:

echo -n foo
foo$ 
$ PROMPT_COMMAND="echo"
echo -n foo
foo
$ echo foo
foo

$
| improve this answer | |
0

One way to append a newline manually is && echo:

~$ curl localhost:8001/api && echo
{"message":"this is a test message"}
~$
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy