Bash 프롬프트의 readline 패턴 문자열 길이

Bash 프롬프트의 readline 패턴 문자열 길이

bash 프롬프트 앞에 인쇄된 readline 패턴 문자열(예: @or or )의 길이를 찾는 방법은 무엇입니까 (cmd)? (ins)이 모드 문자열은 다음에 의해 활성화됩니다.set show-mode-in-prompt on존재하다 .inputrc.

나는 그것으로부터 이 문자열의 길이를 결정하고 싶다 $PROMPT_COMMAND.

터미널 오른쪽에 일부 정보를 인쇄하기 위해 프롬프트 내에서 커서를 이동한 다음(필요한 경우 덮어쓸 수 있도록) 왼쪽에 프롬프트 인쇄를 다시 시작하려고 합니다 tput. 하지만 다음을 고려해야 합니다. 패턴 문자열의 길이입니다.

예를 들어 패턴을 접두사로 변경하는 경우 다시 호출 $PROMPT_COMMAND하고 프롬프트를 다시 인쇄하시겠습니까?emacs-mode-stringvi-ins-mode-string

답변1

실제로 패턴 문자열 길이 질문에 대한 답변은 아니지만 해결 방법은 다음과 같습니다.

나는 결국 사용했다ANSI CSI 코드커서 위치를 저장하고 복원합니다. (팁을 주신 @tripleee에게 감사드립니다)

PS1=$(getColumn)커서 위치를 얻으 려고 다양한 방법을 사용해도 패턴 문자열의 길이를 찾을 수 없습니다 .getColumn

ANSI CSI 코드를 사용하는 내 솔루션은 다음과 같습니다"프롬프트 섹션이 오른쪽 정렬되었습니다"라고 대답하세요..

단일 하위 프로세스 없이 깔끔하게 처리할 수 있었기 때문에 이 해결 방법에 매우 만족합니다 shellcheck.

관련 정보