나는 PS1 프롬프트를 사용자 정의하고 현재 디렉토리를 포함하는 것을 좋아합니다.
시간, 사용자, git 브랜치 등과 같은 다른 프로젝트가 여러 개 있습니다.
그러나 한 가지 문제는 현재 디렉터리가 /home/durrantmm/Dropnot/webs/rails_apps/linker/app/views
너무 많은 수준의 "깊은" 경우입니다. (그런데 어쨌든 PS1 프롬프트 설정이 끝날 때 Enter 키를 쳤기 때문에 실제 $가 왼쪽으로 돌아갔는데 여기서는 문제가 되지 않습니다.)
그래서 해결책이 있습니다. 위치 부분에 이것을 사용하십시오.
LOCATION='\033[01;34m\]`pwd | sed "s#\(/[^/]\+/[^/]\+/[^/]\+/\).*\(/[^/]\+/[^/]\+\)/\?#\1_\2#g"`'
예쁘지는 않지만 작업을 수행한 다음 다른 것(표시되지 않음, 여기에는 필요하지 않음)과 결합하여 디렉토리의 "처음 3개 레벨 _ 마지막 2개 레벨"을 얻습니다.
불행히도 내 Mac에서는 sed 부분이 작동하지 않지만 다음을 얻습니다.
[이것은 실제로 내 Linux 컴퓨터에서 가져온 것입니다. 궁금한 경우를 대비해 내 Mac에서 어떻게 보이는지 보여주기 위해 가짜로 만들었습니다.
3_2
Mac에서 현재 디렉토리의 형식을 얻는 방법은 무엇입니까 ?
답변1
명령의 및 부분은 \+
GNU 확장입니다. POSIX 호환성은 단순히 확장 정규식의 이러한 측면을 사용할 수 없습니다. 대신 및 를 사용할 수 있습니다. 이 시도:\?
sed
sed
\{1,\}
\{0,1\}
LOCATION='\033[01;34m\]`pwd |
sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
이에 대한 자세한 내용은 다음을 참조하세요 -http://pubs.opengroup.org/onlinepubs/009696699/utilities/sed.html그리고http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html.
sed
또는 .OSX 를 사용하여 OSX에서 확장 정규식을 활성화할 수 있습니다 -E
. 이를 통해 다음을 수행할 수 있습니다.
LOCATION='\033[01;34m\]`pwd |
sed -E "s#\(/[^/]+/[^/]+/[^/]+/\).*\(/[^/]+/[^/]+\)/?#\1_\2#g"`'
그러나 이는 GNU sed
( -r
사용되는)에서는 작동하지 않습니다. POSIX 솔루션을 사용하면 더 나은 이식성이 제공됩니다.