터미널의 오른쪽 상단에 $ foo를 유지하는 로그인 스크립트에 이와 비슷한 내용이 있습니다. 작동하지만주의해야합니다. 정말 긴 명령을 입력하면 줄 바꿈하지 않습니다. (글자가 두 줄 이상이면 줄 바꿈하지만 두 번째 줄은 첫 줄을 덮어 씁니다.)bash : 위치가 반향하는 팬시 PS1로 줄 바꿈
누구나 $ POS에 bash 줄 바꿈 (즉, 줄 바꿈 삽입)을 할 수있는 방법을 알고 있습니다. ? 아니면 $ COLUMNS에 있더라도?
trunc_pwd() { # See http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x783.html
local pwdmaxlen=50 # Number of $PWD chars to keep
local trunc_symbol="<" # Prepend to truncated $PWD
if ((${#PWD} > $pwdmaxlen)); then
local pwdoffset=$((${#PWD} - $pwdmaxlen))
echo "${trunc_symbol}${PWD:$pwdoffset:$pwdmaxlen}"
else
echo ${PWD} | sed "s%^${HOME}%~%g"
fi
}
foo="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
get_pos()
{
POS=$((COLUMNS-(${#foo}+4)))
}
if [[ ${PS1} ]]; then
PROMPT_COMMAND='get_pos ; echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:$(trunc_pwd)"; echo -ne "\007"'
export PS1="\[email protected]\h \W \$ \[\e[s\]\[\e[1;\$(echo -n \${POS})H\]$foo\[\e[u\]"
fi
예, +1. ('ESC [s'는 "커서 위치 저장"이고, ESC [; H는 "커서 위치 설정"이고, ESC [u는 "커서 위치 복원"입니다.)'$ foo' 입력 줄에 프롬프트가 얼마나 오랫동안 있는지 추적 할 목적으로'$ foo'의 길이를 무시해야합니다. 즉'$ foo'는'\ ['...' \]'을 사용하십시오. –
너희들 바위 야. '\ [... \] '이 제 문제였습니다. 이제 그런 식으로, 나는 PROMPT_COMMAND에서 함수를 호출하는 대신'$ ((COLUMNS - ($ {# foo})))'의 더 우아한 해결책을 좋아한다. 나는 행복하고 겸손 해. 감사! –
@ evil-otto - 솔루션을 사용하면 색상을 어떻게 추가 할 수 있습니까? 내가 그것을 시도하면 포장 및 명령 편집을 망칠. 나 탈출구 지옥에있어! –