중화사전망 - 구한말 사전 - POSIX 문자 집합

POSIX 문자 집합

최근 정규 표현식을 배우면서 POSIX 문자 집합을 접하게 되었습니다. 이 전통적인 문자 영역의 장점은 문자 집합을 빠르게 지정하는 문제를 이해하기 쉽고 효율적으로 처리할 수 있다는 것입니다. . 하지만 여기서는 이에 대해 약간의 지식을 말씀드리고 싶습니다. 먼저, 경로 이름 확장 작업을 완료하기 위해 와일드카드가 어떻게 사용되는지 살펴보겠습니다. 우리는 어느 정도 문자 필드가 정규 표현식과 거의 동일한 방식으로 사용된다는 것을 알고 있지만 문제가 있습니다:

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-suspens

/usr/sbin/chat / usr/sbin/pm -일시 중지-하이브리드

/usr/sbin/chgpasswd /usr/sbin/popcon-largest-unused

/usr/sbin/chpasswd /usr/sbin/ 인기 콘테스트

p>

/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)에는 소문자와 더 많은 구두점이 포함됩니다.

이 배열에 따라 시스템은 다음 정렬 규칙을 사용합니다.

ABCDEFGHIJKLMNOPQRSNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSNOPQRSTUVWXYZ

이는 일반적인 사전 순서와 다르며 다음과 같습니다.

AABBCCDDEEFFGGHGHGH Hijjkkllmmmnnooppqrrssttuuvvwxxyy zz

유닉스 시스템의 인기가 미국 밖으로 확산되면서 미국 영어 범위에 속하지 않는 문자를 지원해야 할 필요성이 생겼다. 따라서 전체 8비트를 사용하고 문자(숫자 128 - 255)를 추가하여 ASCII 문자 테이블이 확장되어 더 많은 언어를 수용할 수 있게 되었습니다. 이 기능을 지원하기 위해 POSIX 표준은 특정 로케일, 즉 시스템의 언어 설정에 필요한 문자 집합을 선택하도록 조정할 수 있는 로케일이라는 개념을 도입했습니다. 이 설정을 사용하면 POSIX 호환 응용 프로그램은 ASCII 순서 대신 사전 순서를 사용합니다. 위 명령의 동작을 설명합니다. [A-Z] 문자 범위가 사전식으로 해석되면 소문자 "a"를 제외한 모든 문자가 포함되므로 이러한 결과가 나타납니다.