PS1 프롬프트를 함수의 출력으로 설정하고 싶지만 ANSI 색 시퀀스를 포함하려고하면 bash는 선 길이가 더 길다고 생각합니다 새로운 라인으로 가기 위해 충분히 타이핑 할 때 실제로 엉망진창이다.함수의 결과에서 bash PS1 프롬프트를 어떻게 색칠합니까?
ps1() {
echo -ne "\033[01;34m$(dirs -0)\033[0m \$ "
}
PS1='$(ps1)'
PS1 프롬프트를 함수의 출력으로 설정하고 싶지만 ANSI 색 시퀀스를 포함하려고하면 bash는 선 길이가 더 길다고 생각합니다 새로운 라인으로 가기 위해 충분히 타이핑 할 때 실제로 엉망진창이다.함수의 결과에서 bash PS1 프롬프트를 어떻게 색칠합니까?
ps1() {
echo -ne "\033[01;34m$(dirs -0)\033[0m \$ "
}
PS1='$(ps1)'
는 이스케이프 시퀀스 주위 \[
및 \]
을 넣어 : 다음과 같은 코드가 어떻게 표시되는지를 보여줍니다. 이것은 프롬프트의 너비를 결정할 때 쉘이 쉘을 계산하지 않도록 지시합니다.
ps1() {
echo -ne "\\[\033[01;34m\\]$(dirs -0)\\[\033[0m\\] \$ "
}
이 프롬프트에서 사용할 수있는 모든 특수 시퀀스 Bash Prompt Escape Sequences을 참조하십시오 (예를 들어, 대신 $(dirs -0)
의 현재 디렉토리 탈출 및 \w
에 대한 \e
대신 \033
을 사용할 수 있습니다).
echo -e
에 의해 먹지 않도록하려면이 시퀀스의 백 슬래시를 두 배로 늘려야합니다. 그러나 위의 페이지에 나열된 이스케이프 시퀀스를 사용하는 경우 bash
은 PS1
자체의 이스케이프 시퀀스를 처리하므로 실제로는 -e
이 필요하지 않습니다.
이것은 나를 위해 작동하지 않습니다. PS1 = '\\ [... \\]'에서만 작동합니다. – Jake
'echo -e'가 이스케이프 시퀀스를 해석하려고 시도했기 때문입니다. – Barmar
내 대답이 업데이트되었습니다. – Barmar