저는 Fedora 20을 사용하고 있으며 bash 프롬프트를 조정하여 더 유용하게 만들고 싶습니다. 현재 내 PS1 프롬프트는 ~/.bash_profile 파일의 다음 줄로 설정됩니다.
LP=" Last prompt at: "
PS1="\[\033[s\033[0;0H\033[0;47m\033[K\033[1;34m[\$LP\]t\033[0m\033[u[<\u@\h \W>]\$ "
echo
그러면 화면 상단에 회색 막대(이 복사본에는 표시되지 않음)와 마지막 프롬프트 시간이 포함된 멋진 선이 표시됩니다.
[ Last prompt at: ]09:22:46
[<Harry@localhost ~>]$
그렇지 않은 경우 echo
터미널 화면이 열리면 프롬프트가 맨 윗줄의 메시지를 마스킹합니다. echo가 하는 일은 인수를 에코하여 새 터미널이 열릴 때 .bashrc가 실행될 때 인수 없이 새 줄로 멋지게 이동하고 맨 위 줄은 그대로 두는 것입니다. 후속 프롬프트에서는 .bashrc가 실행되지 않으므로 새 줄이 에코되지 않습니다.
내 문제는 문자열 주위의 프롬프트에 있는 "[]" 대괄호와 관련이 있습니다 Last prompt at:
. 표시된 메시지에 이러한 괄호가 표시되지 않도록 하려면 어떻게 해야 합니까?
@guido의 답변에 따라 해결되었습니다 . 대괄호를 제거하려고 시도했지만 문자열이 완전히 손실되었습니다. 여기에서 LP 뒤에 공백을 추가했다는 것을 알았습니다. 이는 제가 원하는 것을 제공하지만 공백이 필요한 이유를 이해할 수 없습니다. 답변에 설명을 추가해 주시겠습니까?
답변1
PS1에서 대괄호를 제거하세요(주위에 오타도 있습니다 \t
):
LP=" Last prompt at: "
PS1="\[\033[s\033[0;0H\033[0;47m\033[K\033[1;34m\$LP \t\033[0m\033[u\][<\u@\h \W>]\$ "
echo
답변2
귀도는 이미귀하의 특정 질문에 답변했습니다., 하지만 참고하세요:
또한 스크롤해도 행이 삭제되지 않도록 스크롤 영역이 두 번째 행에서 시작되도록 설정할 수 있습니다.
PS1="\[\e[s\e[2;0r\e[H\e[0;47m\e[K\e[1;34m$LP\t\e[0m\e[u\]<\u@\h \W>\$ "
screen
(개인적으로는 hardstatus 기능 등을 사용하여 쉘 수준에서 이런 종류의 작업을 수행하지는 않지만 )