Bash 프롬프트 문자열이 컬 명령 출력과 같은 줄에 나타납니다.

Bash 프롬프트 문자열이 컬 명령 출력과 같은 줄에 나타납니다.

컬 명령을 실행하면 반환되는 json 응답이 bash 프롬프트 문자열과 충돌합니다.

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

~$두 번째 줄의 끝을 주목하세요 . 작업 폴더를 포함하도록 bash 프롬프트 문자열을 사용자 정의했습니다.

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

로컬 서버(nodejs)가 끝에 개행 문자를 추가하지 않는 것 같습니다.

bash 프롬프트 문자열에 개행 문자가 항상 나타나는지 확인하는 방법은 무엇입니까?

답변1

명령에 대해 이 작업 을 수행 curl하고 프롬프트에 추가 줄 바꿈을 원하지 않는 경우 출력을 에코하면 됩니다.

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

답변2

  1. 간단한 대답: \n프롬프트 문자열 시작 부분에 (개행) 특수 문자를 사용하십시오. bash 프롬프트 문자열이 확인됩니다.언제나개행 문자에 나타납니다. 그러나 이는 원하는 것보다 더 자주 발생할 수 있습니다.
  2. 을 사용하는 동안 이 문제가 발생하는 경우 다음 curl을 살펴보세요.이 답변에서

답변3

다음을 사용하여 bsh 쉘의 모든 명령 뒤에 개행을 강제할 수 있습니다.프롬프트 명령.

PROMPT_COMMAND="echo"

이제 모든 명령 후 또는 모든 프롬프트 전에 echo인수 없이 호출할 수 있습니다 . 그런 다음 echo개행 문자를 인쇄하십시오. 줄 바꿈으로 끝나는 명령을 실행하면 이제 끝에 2개의 줄 바꿈이 있게 됩니다. 바라보다:

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

$

답변4

개행 문자를 수동으로 추가하는 한 가지 방법은 다음과 같습니다 && echo.

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

관련 정보