2013-06-10 2 views
0

현재 내 zsh 프롬프트는 입력 프롬프트로 %을 표시하기 전에 $'%2~ %%'을 사용하여 현재 및 이전 디렉토리를 출력합니다. 내가 /Users/david/Documents/Code/project에있어 예를 들어, 내 메시지가 표시됩니다

Code/project %

을 그러나, 나는 다시 위로 Code 디렉토리에, 물결이 표시되는 경우 :

~Documents/Code %

I을 ' 함수에서 제공된 정규식을 대체하여 fish 쉘에서 이것을 재현하려고 시도하고 sed으로 전달됩니다.

function prompt_pwd --description 'Print the current working directory, shortend to fit the prompt' 
    echo $PWD | sed -e "s|^$HOME|~|" -e "s|^/private||" -e 's-\([^/]\)[^/]*/-\1/-g' 
end 

는 현재이 현재 디렉토리의 전체 이름을 출력하지만, 하나 개의 문자에 다른 모든 디렉토리를 자릅니다 (그리고 물결표 $HOME를 대체) : 같은 기본적으로 그 기능을 보인다. 나는 내가 zsh에서했던 것을 복제하기 위해 그 함수를 제공 할 수있는 정규 표현식을 이해하려고 노력하고있다.

답변

2

내가 제안 :

echo $PWD | sed -e "s|^$HOME/|~|" -e 's-.*/\([^/]*/[^/]*\)-\1/-' 
+0

이 거의 내가 원하는 단지 무엇을했다! 나는 후행 슬래시를 제거했지만 다른 모든 것들은 훌륭하게 작동했습니다. 정말 고맙습니다! – davidcelis

+0

이것은 매우 가까웠습니다. 감사합니다. 나는 적당한''/'접두어 (조금 해킹 된 것)를 얻기 위해 이와 같이 수정해야만했다 :'sed -e "s |^$ HOME/||" -e '-. */\ ([^ /] */[^ /] * \) - \ 1/-'| sed "s/^/~ \ //" " –