웃는 얼굴로 터미널 bash 프롬프트를 어떻게 사용자 정의 할 수 있습니까?


11

웃는 얼굴을 사용하도록 터미널의 bash 프롬프트를 사용자 정의하는 방법을 알아 내려고합니다. 내가 원하는 것은 (blow 예제에서 볼 수 있듯이) cwd를 프롬프트에서 \ n으로 분리하고 명령이 성공하면 녹색 웃는 얼굴을 표시하고 실패하면 붉은 슬픈 얼굴을 표시하는 것입니다.

어떤 아이디어?

이것은 Peepcode 스크린 캐스트에서 영감을 얻었습니다.

예

답변:


15

andhrimnir의 코드로 약 30 분 동안 놀고 추가 연구를 한 결과 마침내 원하는 것을 얻었습니다.

PS1="\w \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]\n\xE2\x98\xBA'; else echo -e '\[\e[01;31m\]\n\xE2\x98\xB9'; fi\` \[\e[01;34m\]\[\e[00m\]"

여기에서 이모티콘 목록을 찾은 다음 개행 문자 다음에 표시되는 3 자리 바이트 코드 로 변환 할 수 있습니다.

를 얻기 위해 cwd내가해야 할 일은 사용이었습니다 \w. 또한 수행하여 현재 사용자를 보여줄 수 \u@\w처럼되는 것 출력 뭔가를 joshsmith@~.


6

위에 표시된 웃는 얼굴은 유니 코드 문자 인 것으로 보입니다 0x263a. 따라서 유니 코드 가능 터미널이 필요합니다 (terminal.app가 이것을 지원하는지 확실하지 않지만, 그렇게 생각합니다).

다음은 리턴 코드가 0 인 녹색 웃는 얼굴을 인쇄하고 그렇지 않은 경우 빨간색 찌푸린 얼굴을 인쇄하는 샘플 코드입니다.

PS1="\[\e[01;32m\]\u@\h \[\e[01;34m\]\W \`if [ \$? = 0 ]; then echo -e '\[\e[01;32m\]:)'; else echo -e '\[\e[01;31m\]:('; fi\` \[\e[01;34m\]$\[\e[00m\]"

크레디트는 아치 포럼에서 Fingel에게갑니다 (그는 여기에 게시했습니다 ).


if / then 샘플에 대한 멋진 작업. 줄 바꿈을 수행하고을 제거하고 $실제로 유니 코드 기호를 사용하여 전체를 표시하는 방법이 궁금합니다 cwd.
Josh Smith

그리고 한 시간 후에 내 질문에 대답했습니다 (감사합니다!).
Josh Smith

1
기꺼이 도와 드리겠습니다! 사용자 정의 $PS1내용에 대해 더 깊이 알고 싶다면 위에 게시 한 링크의 스레드에 많은 정보가 있습니다.
jake-low

그래, 내 연구의 절반이 그 실에서 시작되었다. 매우 도움이되었습니다. 또한 Peepcode는 명령 줄에 대해 더 깊이 알고 싶은 사람에게는 고급 스크린 캐스트가 있습니다.
Josh Smith
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.