bash 프롬프트: 줄 끝에 현재 디렉터리 표시

bash 프롬프트: 줄 끝에 현재 디렉터리 표시

내 bash 프롬프트에 무언가를 표시하는 방법(커서는 평소와 같이 같은 줄의 시작 부분에 위치함)? $특히나 >명령을 입력할 수 있는 단축된 단일 문자 프롬프트를 표시하고 싶습니다 . 그러나 나는 "내 얼굴에" 있지 않은 줄 끝에서 현재 작업 디렉토리를 볼 수 있기를 원합니다.

정말 긴 명령을 입력하면 무슨 일이 일어나든 상관하지 않습니다. 현재 작업 디렉토리나 거기에 표시되는 프롬프트를 덮어쓸 수 있습니다.

또는 프롬프트로 인해 현재 작업 디렉토리가 화면의 오른쪽 상단, 왼쪽 상단 또는 오른쪽/왼쪽 하단에 표시되는지 여부는 신경 쓰지 않습니다. 나는 그것이 항상 내 얼굴에 나타나는 것을 원하지 않지만 눈에 띄기를 원합니다.

답변1

프롬프트 줄 끝에 현재 경로를 인쇄하는 것으로 PS1을 설정할 수 있었습니다.

PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'

하지만 해결하지 못한 몇 가지 문제가 있습니다.

  1. 누르면 경로가 사라집니다Backspace
  2. 전체 표현식이 너비가 0인 마커로 묶여 있음에도 불구하고 또는 \[...\]도 인쇄하면 커서가 맨 오른쪽으로 이동합니다.$>

경로를 표시하기 위해 대신 을 사용하는 사람들을 본 적이 있지만 PROMPT_COMMAND=pwd터미널에서 명령이 포함된 줄 수가 줄어듭니다.

또 다른 옵션은 경로를 어딘가에 표시하도록 터미널이나 screen/tmux를 구성하는 것입니다. 예를 들어, 다음은 xterm에서 작동합니다:

PS1='\[\e[m\e]0;\W\a\]$ '

시퀀스는 \e[m\e]0;...\a창의 제목을 설정합니다. 화면에서는 입니다 "\033k\033\0134\033kTITLE\033\0134".

관련 정보