* 알파벳 확장 순서

* 알파벳 확장 순서

POSIX 호환 셸(예: dash, bash, zsh...)을 사용할 때 항상 알파벳순으로 확장되는지 확인할 수 있습니까 *( 에서 결정 LC_COLLATE)?

예:

$ echo 1 > file_a
$ echo 2 > file_b
$ echo 3 > file_c
$ cat *
1
2
3

답변1

이 행동은POSIX 요구 사항, 안심하고 신뢰할 수 있습니다.

C또한 일관된 동작을 얻으 려면 로케일을 설정해야 합니다 . 로케일에서 동일한 정렬 순서를 갖는 데이터 정렬 요소를 사용하면 다음과 같습니다.이상한 결과.

UTF-8 로케일을 사용하는 GNU 시스템:

$ printf '%b\n' '\U2461' '\U2460' | sort

또는:

$ printf '%s\n' A B a b | sort
a
A
b
B

로캘 설정 C:

$ printf '%b\n' '\U2461' '\U2460' | LC_ALL=C sort

$ printf '%s\n' A B a b | LC_ALL=C sort
A
B
a
b

일부 쉘은 멀티바이트 문자(예: )를 지원하지 않거나 dash지원 mksh하지만 유효하지 않은 바이트 시퀀스(예: )를 차단합니다 yash.

답변2

예. 정식 답변은 여기에서 찾을 수 있습니다.

패턴이 기존 파일 이름 또는 경로 이름과 일치하는 경우 패턴은 해당 파일 이름 및 경로 이름으로 대체되어야 합니다.현재 로케일에서 유효한 조합 순서에 따라 정렬.

관련 정보