當前位置:歷史故事大全網 - 故事大全 - POSIX 字符集

POSIX 字符集

最近在学正则表达式,接触到 POSIX 字符集,这个传统的字符区域的优点体现在其在处理快速地指定字符集合的问题方面易于理解和有效。但是我要在这里告诉大家关于它的一个 小知识。首先,我们看看通配符如何用来完成路径名展开操作。我们知道在某种程度上,字符区域的使用方式几乎与在正则表达式中的用法一样,但是有一个问题:< /p>

jeremy@ubuntu:/tmp$ ls /usr/sbin/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*

/usr/sbin/ModemManager /usr/sbin/NetworkManager

这个 命令产生了期望的结果但是只有以大写字母的文件名,:

jeremy@ubuntu:/tmp$ ls /usr/sbin/[A-Z]*

/ usr/sbin/bccmd /usr/sbin/pm-hibernate

/usr/sbin/biosdecode /usr/sbin/pm-powersave

/usr/sbin/bluetoothd /usr/ sbin/pm-suspend

/usr/sbin/chat /usr/sbin/pm-suspend-hybrid

/usr/sbin/chgpasswd /usr/sbin/popcon-largest- 未使用

/usr/sbin/chpasswd /usr/sbin/popularity-contest

/usr/sbin/chroot /usr/sbin/pppconfig

/usr /sbin/cpgr /usr/sbin/pppd

/usr/sbin/cppw /usr/sbin/pppdump

/usr/sbin/cracklib-check /usr/sbin/pppoeconf

/usr/sbin/cracklib-format /usr/sbin/pppoe-discovery

/usr/sbin/cracklib-packer /usr/sbin/pppstats

通过这个命令我们整个不同的结果,(输出了一大堆,只显示了一部分结果列表)。为什么会是这样?

这要等到Unix刚刚开发的时候, 只知道 ASCII 字符,并且这个特性反映了事实。在 ASCII 中,前 32 个字符(数字 0 - 31) 都是控制码(如制表符、退格键和回车)。另外的 32 个字符(32 - 63) ) 包含可打印的字符,包括大部分的标点符号和数字 0 到 9。另外附带的 32 个字符(64 - 95) 包含大写字符和更多的一些标点符号。最后的 31 个字符(96 - 127) )包含小写字母和更多的标点符号。

基于这种排序规则的ASCII:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

这显然是正常的字典顺序,其像这样:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ

随着Unix系统的银河在美国境外的国家传播开来,就需要支持不在美国英语范围内的字符。于是就扩展了这个ASCII字符表,使用了整个8位,添加 了字符(数字128 - 255),这样就承载了更多的语言。为了支持这种能力,POSIX标准介绍了一种称为locale的概念,其被调整,来可以针对某个特殊的区域,选择所 需要的字符集,即系统的语言设置。通过这种设置,POSIX 相容的应用程序将使用字典排列顺序而不是 ASCII 顺序。这就解释了上述命令的行为。当 [A-Z] 字符区域按照字典顺序时 解释的时候,包含除了小写字母“a”之外的所有字母,因此得到这样的结果。

  • 上一篇:湖南衛視哪個時間段廣告最多
  • 下一篇:高鉻球標準、鋼球鉻含量到達多少稱為高鉻球、中鉻?
  • copyright 2024歷史故事大全網