Niesamowite symbole i znaki w szybkim podpowiedzi


81

Właśnie natknąłem się na zrzut ekranu czyjegoś terminalu:

Zrzut ekranu sesji pokazujący monit z gwiazdką i strzałką

Czy istnieje lista wszystkich znaków, które mogą być użyte w podpowiedzi Bash, czy ktoś może zdobyć dla mnie postać dla gwiazdy i prawej strzałki?

Odpowiedzi:


104

Możesz użyć dowolnej postaci do wydrukowania, bash nie ma nic przeciwko. Prawdopodobnie będziesz chciał skonfigurować swój terminal do obsługi Unicode (w postaci UTF-8 ).

W Unicode jest wiele znaków, więc oto kilka wskazówek, które pomogą ci przeszukiwać wykresy Unicode:

  • Możesz spróbować narysować postać na Shapecatcherze . Próbuje rozpoznać znak Unicode na podstawie tego, co rysujesz.
  • Możesz spróbować dowiedzieć się, w którym bloku znajduje się postać. Na przykład ten dziwnie wyglądający symbol i ta gwiazda byłyby w bloku różnych symboli; znaki takie jak Ǫi ısą literami łacińskimi z modyfikatorami; jest symbolem matematycznym i tak dalej.
  • Możesz spróbować wymyślić słowo w opisie znaku i poszukać go na liście nazw i opisów symboli Unicode. Gucharmap lub Kcharselect mogą pomóc.

PS Na Shapecatcherze dostałem U + 2234 W TYM dla , U + 2192 STRZAŁKA W PRAWO dla , U + 263F MERCURY dla i U + 2605 BLACK STAR dla .

W skrypcie bash do wersji bash 4.1 możesz napisać bajt po jego punkcie kodowym, ale nie znak. Jeśli chcesz uniknąć znaków spoza ASCII, aby .bashrcuodpornić się na zmiany w kodowaniu plików, musisz wprowadzić bajty odpowiadające tym znakom w kodowaniu UTF-8. Możesz zobaczyć wartości szesnastkowe, uruchamiając je echo ∴ → ☿ ★ | hexdump -Cw terminalu UTF-8, np. Jest kodowane przez \xe2\x88\xb4w UTF-8.

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

Od wersji bash 4.2 możesz używać \unastępujących po nim 4 cyfr szesnastkowych $'…'.

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

Hmm Kiedy biegnę echo ★ | hexdump -C1, mam: hexdump: invalid option -- '1'. Czy nadal będzie działać bez 1 w wywołaniu?
Naftuli Kay,

2
@TKKocheran To 1była literówka, to po prostu hexdump -C(lub hdw skrócie w niektórych systemach).
Gilles,

Ponadto możesz: PS1=$'\u2234\u2192\u263f\u2605'czuć się łatwiej w utrzymaniu :-)
mat

1
Shapecatcher jest niesamowity! dzięki za zwrócenie na to uwagi
Siamore,

1
@FaithReaper \uNNNNSkładnia jest funkcją $'…'cytowania, a nie szybkiego rozszerzania. Wartość PS1musi zawierać znak Unicode. $'\u1234'to sposób na umieszczenie znaku Unicode w ciągu.
Gilles

12

Symbole Unicode można znaleźć na wielu stronach, takich jak ten: http://panmental.de/symbols/info.htm

Musisz tylko upewnić się, że Twój termin obsługuje UTF-8 .


Jak mam uciec przed jedną z tych postaci? To \u27A4
znaczy

2
Zobacz odpowiedź @Gilles lub to: stackoverflow.com/questions/602912/…
jasonwryan,

Możesz zobaczyć wszystkie 65000+ punktów Unicode na utf8-chartable.de (W kontekście wartości punktów kodowych „utf8” jest równoznaczne z „Unicode”.)
goldilocks

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.