"ls" 출력에서 ​​가장 먼저 나타나는 기호는 무엇입니까?

"ls" 출력에서 ​​가장 먼저 나타나는 기호는 무엇입니까?

DELETED내 출력의 첫 번째 폴더가 되도록 하고 싶습니다 ls.

이 문제를 일으키는 기호를 앞에 추가할 수 있나요? 나는 이것을 시도했지만 ^그들 -중 누구도 작동하지 않습니다.

답변1

^, ASCII 순서로, 그 뒤에 대문자가 옵니다. -모든 문자와 숫자 앞, 다른 여러 구두점 뒤.

ASCII 인쇄 가능 문자는 다음과 같습니다.

 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~

ls그러나 파일이 나열되는 순서는 현재 로케일의 영향을 받을 수 있으므로 이것이 반드시 도움이 되는 것은 아닙니다 .

공백이나 !문자로 파일 이름을 시작할 수 있지만 이렇게 하면 파일을 참조하지 않고는 파일을 참조하기가 어려워지고 로케일 설정이 방해를 받을 수 있습니다. 십진수 앞에 오는 대부분의 다른 ASCII 문자에도 비슷한 문제가 있습니다.

이름에 홀수 문자가 포함된 다른 파일이 없다고 가정하면 가장 좋은 방법은 0문자열 s로 시작하는 것입니다.

 000_DELETED

(저는 Thunderbird와 Outlook에서 이메일 폴더의 이름을 지정하는 데 유사한 기술을 사용합니다.)

답변2

GNU 시스템에서는 C/POSIX를 제외한 대부분의 로케일에서 정렬 시 일부 문자가 무시됩니다. 예를 들어 _, , 공백 또는 0x1이 .이에 해당합니다 .

.a예를 들어 , .c, __b, 가 , , , _d로 정렬되는 이유가 바로 이 때문입니다 ..a__b.c_d

다음으로 구성된 문자열의 경우오직그것들무시당하다문자, 정렬 순서는 로캘에 정의되어 있으며 일반적으로 ASCII SPC가 먼저 옵니다. 따라서 단일 공백 ​​문자가 첫 번째 정렬된 파일이 됩니다(0x1 .이전 (C 로케일의 첫 번째) ..), 그 다음에는 공백 2개가 됩니다... 등등. 그러나 <SPC>DELETED정렬됩니다.뒤쪽에 DELETED이므로 이름이 지정된 파일은 대부분의 다른 파일보다 먼저 정렬되지만, 다른 문자열 앞에 ___놓는다고 해서 정렬 속도가 빨라지는 것은 아닙니다.___

무시되지 않는 문자 중에서 ASCII 0은 일반적으로 C가 아닌 로케일의 첫 번째 문자입니다.

따라서 0이라는 파일은 무시되지 않은 문자를 포함하는 다른 파일보다 먼저 정렬됩니다. 무시되지 않은 문자가 포함된 파일 접두어를 사용하면 0C가 아닌 로케일에서 해당 파일이 더 일찍 정렬됩니다.

따라서 이름이 지정된 파일은 $'\01\01\01_000_DELETED'C 로케일에서 매우 초기에 정렬되고(0x1이 첫 번째 문자이므로 먼저 정렬되므로) 다른 로케일에서도 정렬됩니다(0x1 및 _는 모두 무시되지만 s는 0무시할 수 없는 문자이므로 정렬됨). 첫 번째).

C가 아닌 로케일에서는 여전히 정렬됩니다.뒤쪽에 .또는 ...

DELETED또 다른 옵션은 무시된 문자로 작성하는 것입니다 . 예를 들어 " ₫€£€₮€₫"이러한 통화 기호는 정렬 시 무시됩니다. 또한 SPC는 C 로캘에서 상당히 일찍 정렬하므로 .C 및 비C 로캘 모두에서 일찍 정렬해야 합니다.

$ touch $'   \u20ab\u20ac\u00a3\u20ac\u20ae\u20ac\u20ab' $'\01' ' ' 0normal-file $'\01\01\01_000_DELETED'
$ ls -1a

   ₫€£€₮€₫
./
../
?
???_000_DELETED
0normal-file
$ LC_ALL=C ls -1a
?
???_000_DELETED

   ????????????????????
./
../
0normal-file
$ LC_COLLATE=C ls -1a
?
???_000_DELETED

   ₫€£€₮€₫
./
../
0normal-file

관련 정보