bash 프롬프트에서 절대 경로를 어떻게 표시합니까?


50

나는 현재 내 배쉬 PS1를 다음과 같이 설정했다.

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\w\n\$ "

상대 경로 대신 절대 경로를 표시하려면 어떻게해야합니까 (예 : /home/dave/dir대신 ~/dir)?


1
/home/dave/dir그리고 ~/dir둘 다 절대 경로이며, 두 번째는 홈 디렉토리의 약어를 사용합니다. 상대 경로는 루트 ( ) 에서 시작하지 않고 현재 디렉토리 (예 :)에 상대적인 경로입니다 . ../dir/
Doug Harris

3
ps 이전 명령의 종료 상태를 표시하기 위해 색상을 잘 사용합니다. 아마 내가 좋아했던 프롬프트에서 처음으로 색상을 사용했을 것입니다.
Doug Harris

@ Doug Harris : 수정 해 주셔서 감사합니다. 나는이 채색도 좋아한다. 내가 처음 본 장소를 기억하지 마십시오 (아마도 이전 SU 포스트에서?)
David B

\u@\H[\w]:~\$user@host[~/path]:~$
JREAM

답변:


49

그냥 교체 \w와 함께 \$PWD:

PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\$PWD\n\$ "

어쨌든 약간의 팁이 마음에 들면 다음과 같이 쓸 것입니다.

PS1='\[`[ $? = 0 ] && X=2 || X=1; tput setaf $X`\]\h\[`tput sgr0`\]:$PWD\n\$ '

4
나도 이것에 대해 생각했지만 각 통화가 아닌에 $PWD할당 시점에 평가됩니다 PS1. 그러나 달러 기호를 벗어나면 작동 \$PWD합니다. 이를 통해 달러 기호는 할당 시점의 달러 기호이며 변수 평가는 각 프롬프트에서 발생합니다. 당신에게 +1.
Doug Harris

맞습니다. \, 가능하면 작은 따옴표로 작업합니다. 감사.
cYrus

+1 감사합니다! 아름다운 배쉬 라인 ( '팁')의 마술을 설명해 주시겠습니까?
David B

확실한. 가독성과 이식성 (?)을 위해 제어 문자를 직접 쓰지 않고 색상을 변경하기 위해 tput (자세한 내용은 man tput 참조)을 사용했습니다. 또한 작은 따옴표를 사용하여 큰 따옴표와 백 슬래시를 제거했습니다. 마지막으로 변수를 사용하여 중복성을 피했습니다.
cYrus


0

bash의 ps1에서; -W는 상대적이어야하고 -w는 절대적이어야하므로 위의 경우 이미 절대 값을 가져야합니까?!

http://wiki.archlinux.org/index.php/Color_Bash_Prompt


3
나는 당신이 absolute | relative를 full | current_dir과 혼동하고 있다고 생각합니다. W현재 디렉토리 이름 만 w표시하고 전체 경로를 표시하지만 여전히 상대 경로를 사용합니다.
David B

:) 내 URL이 아닌 용어 :)
Sirex

0

Humm ~ / dir은 절대 경로이지만 "바로 가기"를 사용합니다. 예를 들어, cd /usr/local프롬프트를 표시하면 / usr / local의 전체 경로가 표시 될 것입니다. 어쨌든 이미 전체 경로가 있습니다 :-)

그러나 아마도 올바른 질문은 ~와 같은 단축키없이 전체 경로를 표시하는 방법입니다.

그러나 나는 그에 대한 대답을 모르고 사람을보고 있는데, 적어도 하나의 문서가있는 것 같습니다.


0

pwd대신에 실행하십시오 \W.

간단한 버전 :

export PS1="\`pwd\` $ "

코드에서 이것을 사용 :

export PS1="\[\`if [[ \$? = "0" ]]; then echo '\e[32m\h\e[0m'; else echo '\e[31m\h\e[0m' ; fi\`:\`pwd\`\n\$ "

1
사소한 점 : Google의 bash 스타일 가이드에 따라 백틱에 $ (pwd)를 선호하십시오.
funroll
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.