디렉토리에 다음 파일을 생성합니다.
$ touch .a .b a b A B 你好嗎
내 기본 ls
순서는 다른 파일을 섞여서, 주요 점의 존재를 무시합니다.
$ ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
내가 할 수 변경 LC_COLLATE
먼저 dotfiles를 넣어.
$ LC_COLLATE=C ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
불행하게도이 정렬 순서 대소 문자를 구분, 즉하게 A
하고 B
선행 a
하고 b
. 대소 문자를 구분 (머무시는 동안 처음 dotfiles를 인쇄 할 수있는 방법이 있나요 A
및 a
선행 B
과 b
)?
편집 : LC_COLLATE 수정 중
지금까지 답변 중 어느 것도 ls
쉽게 기능을 완전히 복제하지 못했습니다. 생각 나게, 나는 그것들 중 일부를 함수로 감쌀 수는 있지만, 여기에는 인수없이 디렉토리를 제공하는 것과 인수없이 작동하는 방법에 대한 자세한 코드가 포함되어야합니다. 또는 명시 적 -d
플래그 를 처리하는 방법 .
또는 LC_COLLATE
사용 하는 것이 더 나을 수도 있다고 생각했습니다 . 그러나 나는 그 일을 할 수없는 것 같습니다. 현재을 사용하고 LC_COLLATE="en_AU.UTF-8"
있습니다. 나는 확인했다. /usr/share/i18n/locales/en_AU
(이 파일이 올바른 파일인지 확실하지 않지만,에 대한 참조를 볼 수 없으므로 UTF-8
); 나는 다음을 발견했다.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1
포함 copy "iso14651_t1_common"
합니다. 마지막으로, /usr/share/i18n/locales/iso14651_t1_common
포함
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
이 줄을 삭제하고을 실행 한 다음 sudo locale-gen
컴퓨터를 다시 시작했습니다. 불행히도 이것은 아무것도 바뀌지 않았습니다.