A string de prompt do Bash aparece na mesma linha que a saída do comando curl

2

Quando executo um comando curl, a resposta do json que ele retorna colide com a string de prompt do bash:

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

Observe ~$ no final da segunda linha. Eu personalizei minha string de prompt do bash para conter a pasta de trabalho:

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

Parece que o servidor local (nodejs) não adicionou um caractere de nova linha no final.

Como posso garantir que minha string de prompt do bash sempre chegue a uma nova linha?

    
por Madhavan Kumar 22.07.2015 / 14:07

3 respostas

1
  1. Resposta simples: use o caractere especial \n (newline) no início da sua string de prompt. Isso garantirá que a string de prompt bash always apareça em uma nova linha. No entanto, isso pode acontecer com mais frequência do que você deseja.
  2. Se você só se deparar com isso quando usar curl , dê uma olhada em esta resposta
por 22.07.2015 / 14:57
2

Se você quiser fazer isso apenas para os comandos curl e não quiser adicionar uma nova linha extra ao seu prompt, apenas faça o eco da saída:

~$ echo "$(curl localhost:8001/api)"
{"message":"this is a test message"}
~$
    
por 22.07.2015 / 15:00
1

Você pode forçar uma nova linha após cada comando no bash shell com o PROMPT_COMMAND .

PROMPT_COMMAND="echo"

Agora, após cada comando ou antes de cada prompt echo é chamado sem argumento. Então echo apenas imprime uma nova linha. Observe que, se você executar um comando que termine com uma nova linha, agora você terá duas novas linhas no final. Veja:

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

$
    
por 22.07.2015 / 14:52

Tags