셸 - 음수 파일 와일드카드

셸 - 음수 파일 와일드카드

Bash에서는 네거티브 파일 글로빙을 수행하기 위해 두 가지 옵션이 있습니다. 그들 사이에 어떤 차이가 있나요? 둘 다 동일한 결과를 반환합니다.

$ ls
f1.txt  f2.txt  f3.txt  f4.txt

$ ls f[!24]*
f1.txt  f3.txt

$ ls f[^24]*
f1.txt  f3.txt

답변1

[!...]패턴은 ...대괄호로 묶인 문자 세트에 속하지 않는 단일 문자와 일치합니다. 이는 POSIX 쉘에서 사용되는 파일 이름 글로빙 패턴입니다.

[^...]패턴은 동일하게 작동하지만 POSIX 정규 표현식입니다. 이 패턴은 일반적으로 파일 이름 globbing 패턴으로 다른 쉘에 이식할 수 없지만 bash쉘은 이를 인식하고 [!...]패턴과 동일하게 처리합니다.

파일 이름 globbing 패턴을 작성할 때 둘 중 하나를 선택할 수 있다면 이식 가능한 POSIX 변형을 사용해야 할 것입니다 [!...].

POSIX 표준에 따르면파일 이름 글로빙 패턴에 대한 [...]일반적인 사실 :

여는 대괄호가 XBD RE 대괄호 표현식에서와 같이 대괄호 표현식을 도입하는 경우 문자 <exclamation-mark>( !)가 정규식 표현의 일치하지 않는 목록에서 문자( )를 대체해야 한다는 <circumflex>점을 제외하고 패턴 대괄호 표현식을 도입해야 합니다 . ^따옴표가 없는 문자로 시작하는 대괄호 표현식은 <circumflex>지정되지 않은 결과를 생성합니다. 그렇지 않으면 [문자 자체가 일치해야 합니다.

"XBD RE 브래킷 표현"은[...]정규식 사양.

[^...]표준에서는 파일 이름 글로빙 패턴의 사용을 "지정되지 않음"으로 남겨두고 bash쉘(및 기타 일부)은 이를 [!...].

관련 정보