Unix: ls -d [2-q]*를 입력하면 어떻게 되나요?

Unix: ls -d [2-q]*를 입력하면 어떻게 되나요?

2와 q 사이에 문자를 어휘적으로 배열할 방법이 없기 때문에 -d 옵션 뒤의 비트를 무시합니까?

답변1

예, 문자는 2와 q 사이에서 어휘적으로 배열될 수 있습니다. 그렇게 하면 ls /bin숫자가 문자 앞에 오는 것을 볼 수 있습니다. 실제로 ls /bin/[2-q]*무슨 일이 일어나는지 직접 확인할 수 있습니다.

"C" 로캘의 어휘 정렬은 ASCII 값을 기준으로 하므로 "2"는 10진수 32이고 "q"는 71입니다. man ascii전체 ASCII 테이블을 보려면 a를 실행하십시오 .

어쩌면 당신은 당신이 물어보고 싶을 수도 있습니다하다잘못된 사전 범위가 지정되었습니까? 당신은 시도 할 수 있습니다:

% ls /bin/[q-2]*
ls: /bin/[q-2]*에 액세스할 수 없습니다: 해당 파일이나 디렉터리가 없습니다

물론, 쉘이 패턴을 확장하고 있으므로("파일 이름 GLOB 확장"이라고도 함) 표시되는 오류는 쉘 및 쉘 옵션에 따라 달라질 수 있습니다. 내 경우에는 명령 실행을 중단하는 셸 오류를 생성하는 대신 GLOB를 통해 직접 확장할 수 없는 패턴을 호출되는 명령에 전달하는 옵션을 사용 zsh하고 설정했습니다 .zsh

관련 정보