나는 사용하고있다엘에스유틸리티와 내 명령은 다음과 같습니다.
$ ls x?[a-c]*
그러한 명령의 결과는 무엇입니까? 지금까지 나는 다음 항목이 나열된다는 것을 이해했습니다(그리고 이것이 정확하기를 바랍니다).
- x로 시작하다
- 세 번째 문자는 {a,b,c}입니다.
- 세 번째 문자(상관 없음) 이후의 모든 내용이 포함됩니다.
내 질문응, 그게 뭐야??(물음표)는 무엇을 의미하나요?
미리 감사드립니다.
답변1
ls
기능 이 아니라 bash
기능이며 "패턴 일치" 섹션에 설명되어 있습니다.큰 타격(1):
특수 패턴 문자의 의미는 다음과 같습니다.
*
빈 문자열을 포함하여 모든 문자열과 일치합니다. 언제. . . 언제
globstar
쉘 옵션이 활성화되어 있으며*
경로 이름 확장 컨텍스트에서 사용되며 두 개의 인접한*
단일 패턴으로 사용되면 모든 파일과 0개 이상의 디렉터리 및 하위 디렉터리와 일치합니다. 다음에/
, 인접한 두 개*
s는 디렉터리 및 하위 디렉터리에만 일치합니다.?
단일 문자와 일치합니다.
[...]
포함된 모든 문자와 일치합니다. 하이픈으로 구분된 문자 쌍으로 표시됩니다.범위 표현; 현재 로케일의 조합 순서와 문자 세트를 사용하여 이 두 문자 사이의 모든 문자와 일치합니다. 다음의 첫 번째 문자인 경우
[
는!
또는^
그런 다음 포함되지 않은 모든 문자가 일치됩니다. 범위 표현식의 문자 정렬 순서는 현재 로케일 및LC_COLLATE
또는LC_ALL
설정된 경우 쉘 변수. 범위 표현식의 전통적인 해석을 얻으려면[a-d]
동등하다[abcd]
, 설정값LC_ALL
쉘 변수는C
또는 활성화globasciiranges
주택 옵션. ㅏ-
세트의 첫 번째 또는 마지막 문자로 만들어 일치시킬 수 있습니다. ㅏ]
세트의 첫 번째 문자로 만들어 일치시킬 수 있습니다.
귀하의 이해도 완전히 정확하지는 않습니다. ?
이는 단일 문자를 의미하므로 표현식이 x?[a-c]*
일치할 것이며 xQcFoo.bar
, xmabc
요점은 이것이 세 번째 문자 x1a
가 아니라 두 번째 문자일 수도 있다는 것입니다. 명령의 출력은 패턴과 일치하는 파일 목록이 됩니다. 또는 그러한 파일이 없으면 쉘은 이를 어떤 것으로도 바꾸지 않으므로 리터럴 이름을 나열하려고 시도합니다.xabc
{a,b,c}
ls x?[a-c]*
x?[a-c]*
x?[a-c]*
ls
x?[a-c]*