Bash 프롬프트 구성

Bash 프롬프트 구성

최근에 Parrot Linux로 전환했는데 매우 만족합니다. 하지만 한 가지 점은 이 기본 멋진 bash 프롬프트가 정말 보기 흉하다는 것입니다. 나는 이전에 zsh를 사용한 적이 있으며 어떤 이유로 bash로 돌아가고 싶지만 zsh와 동일한 프롬프트 "테마"를 얻고 싶습니다. 이는 매우 냉정합니다.

zsh "비린내" 테마

특히 경로에 있는 디렉터리 이름의 첫 번째 문자만 표시하는 방식이 마음에 듭니다(현재 디렉터리 제외).

.bashrc에 이것을 작성하는 방법을 찾고 있었지만 아무것도 찾지 못했습니다.

답변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"현재 디렉터리를 제거하기 위한 호출의 결과입니다. 그러면 문자열은 두 가지 대체를 겪게 됩니다( -esed 옵션에 지정됨).

  1. "$HOME" 디렉토리의 모양을 물결표로 바꾸고
  2. 모든 경로 요소(슬래시, 캡처된 단일 문자 ., 임의 개수의 비정방향 슬래시)를 슬래시 뒤에 해당(캡처된) 단일 문자로 대체합니다. "global" 플래그를 사용하여 이 패턴 일치를 반복합니다 g. 나는 피하기 위해 공통 대신 검색 및 교체 구분 기호 :로 사용합니다.sed/기울어진 이쑤시개 증후군탈출을 시도하다원하다슬래시.

_abbrev_pwd마지막으로 일반 배치를 사용하도록 PS1을 설정합니다 $PWD.

관련 정보