Bir bash isteminde müthiş semboller ve karakterler


81

Sadece birinin terminalinin ekran görüntüsüne rastladım:

Yıldız ve ok işaretiyle bilgi istemi gösteren oturumun ekran görüntüsü

Bash isteminde kullanılabilecek tüm karakterlerin bir listesi var mı, yoksa biri bana yıldız ve sağ ok için karakter bulabilir mi?

Yanıtlar:


104

Basılabilir herhangi bir karakteri kullanabilirsiniz, bash aldırmaz. Terminalinizi Unicode'u ( UTF-8 şeklinde ) destekleyecek şekilde yapılandırmak isteyeceksiniz .

Unicode'da çok fazla karakter var, bu yüzden Unicode grafiklerinde arama yapmanıza yardımcı olacak birkaç ipucu:

  • Shapecatcher'da karakteri çizmeyi deneyebilirsin . Çiziminde bir Unicode karakteri tanımaya çalışır.
  • Karakterin hangi bloğun içinde olduğunu bulmaya çalışabilirsiniz. Örneğin, o tuhaf görünümlü sembol ile o yıldızın çeşitli semboller bloğunda olacağını; gibi Ǫve ıdeğiştiricileri olan latin harfleri; matematiksel bir semboldür vb.
  • Karakterin tanımındaki bir kelimeyi düşünmeye çalışabilir ve onu unicode sembol isimleri ve açıklamaları listesinde bulabilirsiniz. Gucharmap veya Kcharselect yardımcı olabilir.

PS On Shapecatcher, aldığım U + 2234 DOLAYISIYLA için , U + 2192 Sağ Ok için , U + 263F MERCURY için ve U + 2605 SİYAH YILDIZ için .

Bir bash betiğinde, bash 4.1'e kadar, bir byte'ı kod noktası ile yazabilirsiniz, ancak karakter yazamazsınız. ASCII olmayan karakterlerin .bashrcdosya kodlama değişikliklerine karşı esnekliğini sağlamaktan kaçınmak istiyorsanız , UTF-8 kodlamasında bu karakterlere karşılık gelen baytları girmeniz gerekir. Onaltılık değerleri echo ∴ → ☿ ★ | hexdump -Cbir UTF-8 terminalinde çalıştırarak görebilirsiniz , örneğin UTF-8'de kodlanmıştır \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'den \usonra, bir $'…'dizgede 4 onaltılık basamak kullanabilirsiniz .

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

Hmm. Ben çalıştırdığınızda echo ★ | hexdump -C1alıyorum: hexdump: invalid option -- '1'. Hala 1 numara olmadan çalışacak mı?
Naftuli Kay,

2
@TKKocheran Bu 1bir yazım hatası oldu, sadece hexdump -C(ya da hdbazı sistemlerde kısa).
Gilles

Ayrıca şunları yapabilirsiniz: PS1=$'\u2234\u2192\u263f\u2605':-)
mat,

1
Shapecatcher harika! işaret ettiğin için teşekkürler
Siamore

1
@FaithReaper \uNNNNSözdizimi, $'…'hızlı genişlemenin değil, alıntı yapma özelliğidir . Değeri PS1Unicode karakterini içermelidir. $'\u1234'Unicode karakterini bir dizgeye koymanın bir yoludur.
Gilles,

12

Unicode sembollerini birçok sitede bulabilirsiniz, bunun gibi: http://panmental.de/symbols/info.htm

Terimin UTF-8'i desteklediğinden emin olmalısın .


Bu karakterlerden birinden nasıl kaçarım? Yani\u27A4
Naftuli Kay

2
@Gilles cevabı veya şuna bakın: stackoverflow.com/questions/602912/…
jasonwryan

Sen hiç 65000+ unicode noktalarını görebilirsiniz utf8-chartable.de (. "Utf8" "unicode" ile eş anlamlıdır kod noktası değerleri bağlamında)
goldilocks

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.