extglob 동작, 특히 bash에서 *(patternList)를 사용할 때

extglob 동작, 특히 bash에서 *(patternList)를 사용할 때

extglob을 사용하려고 하는데 매뉴얼 페이지를 읽은 후 *(patternList)가 어떻게 작동하는지 혼란스러워졌습니다. 다음 명령을 사용한다고 가정해 보겠습니다.

touch A  Ax  Axxx  Axxxx  Ay  X  X.bak  x  xx  xxxx 
ls A*(xx)

A Axxxx만 인쇄하는 이유는 무엇입니까? Axxx에는 xx도 정확히 한 번만 포함되어 있지 않습니까? 또한 Ay가 xx로 0번 발생하므로 왜 인쇄되지 않습니까?

답변1

패턴은 이름의 접두사뿐만 아니라 전체 이름과 일치해야 합니다.

Ay뒤에 숫자가 A*(xx)포함되어 있지 않으므로 일치하지 않습니다 . 패턴과 일치하지 않습니다. 일치 하고 .AxxyAyA*(xx)yA*(xx)?A*(xx)*

다시 말하지만, 뒤에 숫자가 포함되어 있지 않기 때문에 Axxx일치하는 항목이 없습니다 . ( 다음에 3번 ), ( 다음 에 1번 , ) , 등이 일치합니다 .A*(xx)AxxAxxxA*(x)AxA*(xx)xAxxxA*(xx)?A*(xx)*

답변2

Axxx에는 xx도 정확히 한 번만 포함되어 있지 않나요?

그렇습니다. 그러나 x패턴과 일치하지 않는 추가 콘텐츠 가 있습니다 A*(xx). A*(xx)?예를 들어 다음과 일치 합니다 .

또한 Ay가 xx로 0번 발생하므로 왜 인쇄되지 않습니까?

다시 말하지만, 패턴에는 후행 y.

내 생각에 그것이 결국 glob이라고 생각하는 것은전체 문자열성냥.

관련 정보