2013-12-07 5 views
0

CentOS 기반의 새로운 서버를 관리하기 시작했습니다. 나는 프롬프트 변경을 원했습니다, 그래서 나는 다음과 같은 명령을 썼다 :프롬프트에서 Linux 명령 행 문제

PS1 = "\ 전자 [0; 36m [`pwd`에] \ $ \ 전자 [m"

그것은 완벽하게 작동합니다. 하지만 이후로 나는 성가신 문제가 발생했습니다. 꽤 오래 글을 쓸 때 또는 위쪽 화살표를 사용하여 꽤 오래된 오래된 명령을 표시하거나 붙여 넣은 다음 "집"을 클릭하여 줄 맨 위로 가면 명령 내에서 커서가 10 문자 앞으로 멈 춥니 다 프롬프트의. 예를 들어, 다음과 같이 쓸 수 있습니다.

홈 버튼을 클릭하면 커서가 "-"뒤에 "p"문자에서 멈 춥니 다. 내가 라인의 상단에 얻을 왼쪽 키를 이동하려고하면, 그것은 성가신 지금 ... "당신은 짝이 이미"

말 BIP, 내가

ls 
을 썼다 말할 수 있다는 않습니다

과 오른쪽 내가 두 번, 프롬프트 표시를 갈 경우

git log --pretty=oneline 

후이 :

[/]$ git log --ls 

을 그리고까지 계속하는 경우 "자식 로그 -"절대로 없어지지 않습니다. 이제 Enter 키를 누르면 여전히 문제없이 ls 명령이 실행됩니다. 디스플레이 문제 일뿐입니다. 하지만 여전히 내게 혼란 스럽습니다. ...

도움을 주셔서 감사합니다!

답변

2

\w을 사용하면 명령을 임베드하지 않고 쉘 프롬프트에서 작업 디렉토리를 인쇄 할 수 있습니다.

또한 bash가 인쇄 된 문자로 계산하지 않도록 이스케이프 문자열을 이스케이프 처리해야합니다. 이는 \[\]으로 묶어서 수행됩니다.

당신의 메시지도 매우 컴팩트
PS1="\[\e[0;36m\][\w]\$\[\e[m\]" 

, 당신이 그것을 일부 공간을 부착 할 수 있습니다 :

그래서 당신은 같은 결과가 발생해야한다. 핵심은 괄호를 사용하여 인쇄 할 수없는 문자를 이스케이프 처리한다는 것입니다.

bash man 페이지의 PROMPTING 섹션에서 이러한 대체 목록을 찾을 수 있습니다.

+0

정말 완벽합니다. 고맙습니다. –

관련 문제