`^(*.c|*.md)`는 무엇을 의미합니까?

`^(*.c|*.md)`는 무엇을 의미합니까?

^()너무 당연한 질문이셨다면 죄송합니다만, 그게 무슨 뜻인지는 모르겠습니다.

ls ^(*.c|*.md)

에서 zsh이 매개변수는 *.c및 파일을 *.md제외한 모든 항목 으로 확장됩니다.

  1. 무엇인가요 ^?
  2. ()이 맥락에서 괄호는 무엇을 의미합니까?
  3. 이 명령 도 작동합니다. 또는 을 ^(*.c||*.md)사용해야 합니까 ?|||

답변1

  1. ^Zsh 에서는글로벌 운영자EXTENDED_GLOB설정 후 사용 가능, 모든 콘텐츠와 일치와는 별개로다음 모드.

  2. 괄호 그룹 패턴은 |분리가 파이프로 해석되지 않도록 괄호가 필요한 분리( )에 유용합니다.

  3. ^(*.c||*.md)" 일치하는 파일 , 빈 이름의 파일 또는 일치하는 파일을 *.c제외한 모든 것 "을 의미합니다. 빈 이름은 쓸모가 없으므로 중복을 피하기 위해 *.md을 사용할 |수도 있습니다 .^*.(c|md)*.

--또한 옵션 구분 기호를 사용해야 합니다 . ls그렇지 않으면 파일 이름이 로 시작하는 경우 -옵션으로 처리됩니다 ls.

ls유형이 발생한 glob 확장자에 의해 생성된 파일의 내용을 나열하지 않으려는 경우목차, 이 옵션을 사용해야 합니다 -d. 또는 내장된 기능을 사용하여 이러한 파일 이름을 인쇄하십시오. print이러한 파일에서 메타데이터 정보를 얻는 ls것과 같은 옵션에만 유용합니다 .-l

ls -ld -- ^*.(md|c)
print -rC1 -- ^*.(md|c)(N)

여기서 파일 이름은 printed raw on 1 Column입니다. 일치하는 파일을 찾을 수 없는 경우(그리고 해당 파일에서 출력을 얻을 수 없는 경우 ) 오류를 방지하기 N위한 glob 한정자입니다 .NULL_GLOBprint

관련 정보