내 시스템 중 하나에서 실행하면 ls [:lower:]*
소문자로 시작하는 모든 파일이 나열됩니다.
또 다른 경우에는 오류를 보고합니다.
ls: cannot access [:lower:]*: No such file or directory
작업 디렉터리에는 소문자로 시작하는 파일이 일부 있습니다.
ls [[:lower:]]*
대신 두 시스템 모두에서 실행이 실행됩니다. ls [:lower:]*
두 번째 시스템에서는 왜 작동하지 않는지, 문자 클래스를 사용하는 올바른 방법은 무엇인지 알고 싶습니다 .
둘 다 Bash를 실행하지만 다른 쉘에도 적용되는 답변을 원합니다.
답변1
첫 번째 예는 예상한 대로 수행되지 않습니다. 대신 다음 문자로 시작하는 모든 파일 이름을 나열합니다.
:
e
l
o
r
w
(이 문자는 lower
재정렬된 문자입니다.) 문자 클래스를 사용하려면 이미 대괄호 안에 있어야 합니다.그런 다음[:lower:]
두 번째 예와 같이 를 사용합니다 .