bash 프롬프트에서 멋진 기호와 문자


81

방금 누군가의 터미널의 스크린 샷을 가로 질러 뛰어났습니다.

별표와 화살표가있는 프롬프트를 표시하는 세션의 스크린 샷

Bash 프롬프트에서 사용할 수있는 모든 문자 목록이 있습니까? 아니면 누군가 별과 오른쪽 화살표의 문자를 얻을 수 있습니까?

답변:


104

bash는 신경 쓰지 않고 인쇄 가능한 문자를 사용할 수 있습니다. 아마도 UTF-8 형식의 유니 코드 를 지원하도록 터미널을 구성하고 싶을 것입니다 .

유니 코드에는 많은 문자가 있으므로 다음은 유니 코드 차트를 검색하는 데 도움이되는 몇 가지 팁입니다.

  • Shapecatcher에 캐릭터를 그릴 수 있습니다 . 당신이 그리는 것에 유니 코드 문자를 인식하려고합니다.
  • 캐릭터가 어떤 블록에 있는지 알아 내려고 시도 할 수 있습니다. 예를 들어, 이상한 모양의 기호와 그 별은 기타 기호의 블록에 있습니다. 같은 문자 Ǫı수정 라틴 문자이다; 수학 기호 등입니다.
  • 문자 설명에서 단어를 생각하고 유니 코드 기호 이름 및 설명 목록에서 찾을 수 있습니다. Gucharmap 또는 Kcharselect 가 도움이 될 수 있습니다.

PS에 Shapecatcher, 내가 가지고 U + 2234 희망하므로 위한 , U + 2192은 오른쪽으로 ARROW 위해 , U + 263F 수은 에 대한 U + 2605 BLACK STAR 에 대한 .

bash 스크립트에서 bash 4.1까지는 코드 포인트로 바이트를 작성할 수 있지만 문자는 작성할 수 없습니다. 비 ASCII 문자를 사용하여 .bashrc파일 인코딩 변경을 복원하려면 UTF-8 인코딩에서 해당 문자에 해당하는 바이트를 입력해야합니다. echo ∴ → ☿ ★ | hexdump -CUTF-8 터미널에서 실행하여 16 진 값을 볼 수 있습니다 ( 예 : UTF-8 로 인코딩 됨) \xe2\x88\xb4.

if [[ $LC_CTYPE =~ '\.[Uu][Tt][Ff]-?8' ]]; then
  PS1=$'\\[\e[31m\\]\xe2\x88\xb4\\[\e[0m\\]\n\xe2\x86\x92 \xe2\x98\xbf \\~ \\[\e[31m\\]\xe2\x98\x85 $? \\[\e[0m\\]'
fi

bash 4.2부터 문자열 \u에서 4 개의 16 진수를 사용할 수 있습니다 $'…'.

  PS1=$'\\[\e[31m\\]\u2234\\[\e[0m\\]\n\u2192 \u263f \\~ \\[\e[31m\\]\u2605 $? \\[\e[0m\\]'

흠. 내가 실행하면 echo ★ | hexdump -C1, 내가 얻을 : hexdump: invalid option -- '1'. 호출에서 1 없이도 계속 작동합니까?
Naftuli Kay

2
@TKKocheran 1오타였습니다. 단지 hexdump -C(또는 hd일부 시스템에서는 짧습니다).
Gilles

또한, 당신은 할 수 : : PS1=$'\u2234\u2192\u263f\u2605'유지하기 쉬운 느낌 :-)
mat

1
Shapecatcher는 대단합니다! 지적 해 주셔서 감사합니다
Siamore

1
@FaithReaper \uNNNN구문은 $'…'프롬프트 확장이 아닌 인용 기능입니다 . 의 값은 PS1유니 코드 문자를 포함해야합니다. $'\u1234'유니 코드 문자를 문자열에 넣는 방법입니다.
Gilles

12

다음과 같이 많은 사이트에서 유니 코드 기호를 찾을 수 있습니다. http://panmental.de/symbols/info.htm

용어가 UTF-8을 지원 하는지 확인해야합니다 .


이 캐릭터 중 하나를 어떻게 피할 수 있습니까? 즉\u27A4
Naftuli Kay

2
: @Gilles 대답, 또는이 참조 stackoverflow.com/questions/602912/...
jasonwryan

당신은 모든 65000+ 유니 코드 포인트를 볼 수 있습니다 utf8-chartable.de (. "UTF8"는 "유니 코드"와 동의어 인 코드 포인트 값의 맥락에서)
금발 미녀

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.