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)
포함되어 있지 않으므로 일치하지 않습니다 . 패턴과 일치하지 않습니다. 일치 하고 .A
xx
y
Ay
A*(xx)y
A*(xx)?
A*(xx)*
다시 말하지만, 뒤에 숫자가 포함되어 있지 않기 때문에 Axxx
일치하는 항목이 없습니다 . ( 다음에 3번 ), ( 다음 에 1번 , ) , 등이 일치합니다 .A*(xx)
A
xx
Axxx
A*(x)
A
x
A*(xx)x
A
xx
x
A*(xx)?
A*(xx)*
답변2
Axxx에는 xx도 정확히 한 번만 포함되어 있지 않나요?
그렇습니다. 그러나 x
패턴과 일치하지 않는 추가 콘텐츠 가 있습니다 A*(xx)
. A*(xx)?
예를 들어 다음과 일치 합니다 .
또한 Ay가 xx로 0번 발생하므로 왜 인쇄되지 않습니까?
다시 말하지만, 패턴에는 후행 y
.
내 생각에 그것이 결국 glob이라고 생각하는 것은전체 문자열성냥.