내가 하는 모든 작업은 icloud 디렉토리에 있으므로 bash
프롬프트가 매우 길어집니다.
~/Library/Mobile Documents/com~apple~CloudDocs/Projects/foo/bar/baz @master $
내 팁은 다음과 같습니다.
PS1='\w\[\e[1;35m\]$(__git_ps1 " @%s") \[\e[1;32m\]\$\[\e[m\] '
/Library/Mobile Documents/com~apple~CloudDocs/
\w
in의 발생을 유사한 것으로 대체 icloud
하여 아래와 같이 더 나은 프롬프트를 표시하는 것이 가능합니까 ?
~/icloud/Projects/foo/bar/baz @master $
답변1
Zsh에는 프롬프트에서도 거의 자동으로 디렉토리 이름을 축약하는 "이름이 지정된 디렉토리" 기능이 있습니다. Bash에 이에 상응하는 기능이 없다고 생각하지만 PROMPT_COMMAND
변수를 설정한 다음 using 프롬프트 insetad에 인쇄하는 사용자 정의 함수를 실행하여 문제를 해결할 수 있습니다 \w
.
/tmp/test
예를 들어, 경로의 첫 번째 문자를 로 바꿔야 합니다 ~testdir
.
set_promptpath() {
promptpath=$PWD;
# do whatever replacement you like here
promptpath=${promptpath/#\/tmp\/test/\~testdir}
}
PROMPT_COMMAND=set_promptpath
PS1='$promptpath\$ '
답변2
cwd
경로를 동적으로 업데이트하는 함수를 사용하여 @ilkkachu의 답변 중 일부를 사용하여 이 문제를 해결했습니다.
cwd() {
cwd=${PWD/\/Users\/htor/\~}
echo ${cwd/\Library\/Mobile Documents\/com~apple~CloudDocs/icloud}
}
PS1='$(cwd)\[\e[1;35m\]$(__git_ps1 " @%s") \[\e[1;32m\]\$\[\e[m\] '
예쁘지는 않지만 적어도 제 팁은 또 예쁘네요!