대부분의 경우 명령 출력은 개행 문자로 끝납니다. 그러나 때로는 그렇지 않기 때문에 다음 쉘 프롬프트는 출력과 함께 같은 줄에 인쇄됩니다.
예:
root @ hostname [~] # echo -n hello
helloroot @ hostname [~] #
나는 항상 매우 성가신 것을 발견했습니다.
이제 PS1 변수의 시작 부분에 "\ n"을 추가 할 수 있었지만 대부분의 경우 필요하지 않은 추가 행을 인쇄합니다.
마지막 명령의 출력이 줄 바꿈으로 끝나는 지 여부를 알 수 있습니까?
솔루션 :
(Dennis에게 감사합니다)
PS1='$(printf "%$((`tput cols`-1))s\r")\u@\h [\w]\$ '
$()
한 곳에서 사용 하고 다른 곳에서는 백틱을 사용 했습니다. $()
둘 다 사용할 수 있습니다 .
tput cols
어쨌든 COLUMNS 변수의 값을 출력 하기 때문에 사용 하지 않으며 쉘 내장이 아니기 때문에 속도가 느립니다. 또한 삽입 된 공백을 삭제 하기 위해 \e[K
(와 동일 tput el
) 을 포함 하여 기본 경우에 복사하고 붙여 넣을 때 후행 공백이 많이 생기지 않도록해야합니다. 마지막으로, 당신은 사이의 모든 마법을 묶어야합니다 \[
및 \]
두 번째 추측 커서 위치에 노력할 것 또는 다른 bash는 그것을 당신이 명령 / 역사를 편집 엉망 수 있습니다.
PS1='\[\e[7m%\e[m$( printf "%*s" "$((COLUMNS-1))" "" )\r\e[K\]\u@\h [\w]\$ '