
답변1
많이 빌리고Denis Karlsmaker의 답변:
PROMPT_COMMAND='_abbrev_pwd=$(sed -e "s:$HOME:~:" -e "s:/\(.\)[^/]*:/\1:g" <<< "$(dirname "$PWD")")/"$(basename "$PWD")"'
PS1='\u@\h ${_abbrev_pwd}> '
PROMPT_COMMAND 변수는특수 bash 변수이 명령은 프롬프트가 인쇄될 때마다 실행됩니다. 여기의 코드는 _abbrev_pwd
다음 요소와 연결된 변수를 설정합니다.
- sed 명령의 출력:
$(sed -e ... <<< ...)
- 슬래시
/
- "현재 디렉토리:
$(basename "$PWD")
sed 명령 자체는 여기에 있는 문자열을 입력으로 사용합니다. 여기에 있는 문자열은 dirname "$PWD"
현재 디렉터리를 제거하기 위한 호출의 결과입니다. 그러면 문자열은 두 가지 대체를 겪게 됩니다( -e
sed 옵션에 지정됨).
- "$HOME" 디렉토리의 모양을 물결표로 바꾸고
- 모든 경로 요소(슬래시, 캡처된 단일 문자
.
, 임의 개수의 비정방향 슬래시)를 슬래시 뒤에 해당(캡처된) 단일 문자로 대체합니다. "global" 플래그를 사용하여 이 패턴 일치를 반복합니다g
. 나는 피하기 위해 공통 대신 검색 및 교체 구분 기호:
로 사용합니다.sed
/
기울어진 이쑤시개 증후군탈출을 시도하다원하다슬래시.
_abbrev_pwd
마지막으로 일반 배치를 사용하도록 PS1을 설정합니다 $PWD
.