升级2023...
从一段时间以前开始,bash在printf
中使用了%b
:
printf %b\\n \\U1F600
所以你可以使用
bash的
printf
内置命令的
-v
标志来分配一个变量:
printf -v smiley \\U1F600
echo $smiley
然后快速显示一部分Unicode表的内容:
printf %b\\n \\U1F6{{0..9},{A..F}}{{0..9},{a..f}}|paste -d\ -{,,,}{,,,}
显示盲文部分:
printf %b\\n \\U28{{0..9},{A..F}}{{0..9},{a..f}}|paste -d\ -{,,,}{,,,}
⠀ ⠁ ⠂ ⠃ ⠄ ⠅ ⠆ ⠇ ⠈ ⠉ ⠊ ⠋ ⠌ ⠍ ⠎ ⠏
⠐ ⠑ ⠒ ⠓ ⠔ ⠕ ⠖ ⠗ ⠘ ⠙ ⠚ ⠛ ⠜ ⠝ ⠞ ⠟
⠠ ⠡ ⠢ ⠣ ⠤ ⠥ ⠦ ⠧ ⠨ ⠩ ⠪ ⠫ ⠬ ⠭ ⠮ ⠯
⠰ ⠱ ⠲ ⠳ ⠴ ⠵ ⠶ ⠷ ⠸ ⠹ ⠺ ⠻ ⠼ ⠽ ⠾ ⠿
⡀ ⡁ ⡂ ⡃ ⡄ ⡅ ⡆ ⡇ ⡈ ⡉ ⡊ ⡋ ⡌ ⡍ ⡎ ⡏
⡐ ⡑ ⡒ ⡓ ⡔ ⡕ ⡖ ⡗ ⡘ ⡙ ⡚ ⡛ ⡜ ⡝ ⡞ ⡟
⡠ ⡡ ⡢ ⡣ ⡤ ⡥ ⡦ ⡧ ⡨ ⡩ ⡪ ⡫ ⡬ ⡭ ⡮ ⡯
⡰ ⡱ ⡲ ⡳ ⡴ ⡵ ⡶ ⡷ ⡸ ⡹ ⡺ ⡻ ⡼ ⡽ ⡾ ⡿
⢀ ⢁ ⢂ ⢃ ⢄ ⢅ ⢆ ⢇ ⢈ ⢉ ⢊ ⢋ ⢌ ⢍ ⢎ ⢏
⢐ ⢑ ⢒ ⢓ ⢔ ⢕ ⢖ ⢗ ⢘ ⢙ ⢚ ⢛ ⢜ ⢝ ⢞ ⢟
⢠ ⢡ ⢢ ⢣ ⢤ ⢥ ⢦ ⢧ ⢨ ⢩ ⢪ ⢫ ⢬ ⢭ ⢮ ⢯
⢰ ⢱ ⢲ ⢳ ⢴ ⢵ ⢶ ⢷ ⢸ ⢹ ⢺ ⢻ ⢼ ⢽ ⢾ ⢿
⣀ ⣁ ⣂ ⣃ ⣄ ⣅ ⣆ ⣇ ⣈ ⣉ ⣊ ⣋ ⣌ ⣍ ⣎ ⣏
⣐ ⣑ ⣒ ⣓ ⣔ ⣕ ⣖ ⣗ ⣘ ⣙ ⣚ ⣛ ⣜ ⣝ ⣞ ⣟
⣠ ⣡ ⣢ ⣣ ⣤ ⣥ ⣦ ⣧ ⣨ ⣩ ⣪ ⣫ ⣬ ⣭ ⣮ ⣯
⣰ ⣱ ⣲ ⣳ ⣴ ⣵ ⣶ ⣷ ⣸ ⣹ ⣺ ⣻ ⣼ ⣽ ⣾ ⣿
更好地转化为一个小函数
showU8_256() {
local i a
for a ;do
for i in {0..9} {A..F}; do
printf '\\U%05Xx: %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b %b\n' \
0x$a$i \\U$a${i}{{0..9},{A..F}}
done
done
}
那么
showU8_256 1f{3,4}
\U01F30x:
\U01F31x:
\U01F32x:
\U01F33x:
\U01F34x:
\U01F35x:
\U01F36x:
\U01F37x:
\U01F38x:
\U01F39x:
\U01F3Ax:
\U01F3Bx:
\U01F3Cx:
\U01F3Dx:
\U01F3Ex:
\U01F3Fx:
\U01F40x:
\U01F41x:
\U01F42x:
\U01F43x:
\U01F44x:
\U01F45x:
\U01F46x:
\U01F47x:
\U01F48x:
\U01F49x:
\U01F4Ax:
\U01F4Bx:
\U01F4Cx:
\U01F4Dx:
\U01F4Ex:
\U01F4Fx:
浏览Unicode表
为了这个目的,在寻找可靠的方法后,我最终在SuperUser上发布了转储/浏览完整的Unicode表,我的Python dumpUnicode
脚本:
./dumpUnicode | grep SMIL.*SUNGLAS\\\|FONDUE
\U01F60E: '' SMILING FACE WITH SUNGLASSES
\U01FAD5: '' FONDUE
bash
标签建议您使用的区域设置)值高达"\x7F"
的情况...由一个 单字节 表示的模式永远不会在范围\x80-\xFF
内。这个范围在单字节 UTF-8 字符中是非法的。例如,Unicode 代码点值为U+0080
(即\x80
)实际上在 UTF-8 中是两个字节..\xC2\x80
。 - Peter.Oprintf "\\u007C\\u001C"
。 - kenorbgnome-terminal
中使用echo -e '\ufc'
并不能产生一个ü,即使字符编码设置为UTF-8。然而,例如urxvt
正常打印输出,如printf "\\ub07C\\ub01C"
(不会显示为�或方框)。 - isomorphismeswhile read -r line; do echo -e "$line"; done
- kenorb