bash에서 `.[].foo[]`는 무엇을 합니까? 왜 ".."와 일치합니까?

bash에서 `.[].foo[]`는 무엇을 합니까? 왜 ".."와 일치합니까?

아래를 봐주세요:

$ echo .[].aliases[]
..
$ echo .[].foo[]
..
$ echo .[].[]
..
$ echo .[].xyz[]
..
$ echo .xyz[].xyz[]
.xyz[].xyz[]
$ echo .xyz[].[]
.xyz[].[]

분명히 이것은 뭔가를 전달하는 것 같지만 결과가 어떻게 조화를 이루는지 이해하지 못합니다. 내 이해에 따르면 []이것은 빈 문자 클래스입니다. 직관적으로 보면

  • 이는 빈 문자열에만 일치합니다. 이 경우에는 해당 디렉터리에 일치하는 항목이 없기 때문에 bash가 전체 문자열을 재현할 수 있기를 바랍니다. 또한 ..aliases(첫 번째 예에서) 다음과 같습니다.
  • 아니면 아무것도 아닙니다. 이 경우 bash가 문자열도 정확하게 재현할 수 있기를 바랍니다.

이는 GNU bash 버전 4.4.23(1) 릴리스 버전입니다.

답변1

[그룹을 시작하세요 . 그룹이 에 의해 종료되었습니다 ]. 그러나 ]이를 세트의 일부로 만드는 방법이 있습니다 . 즉, ]첫 번째 문자로 지정하는 것입니다. 빈 집합은 아무 의미도 없으므로 이는 모호하지 않습니다.

따라서 귀하의 예는 기본적으로 점과 그 점을 포함하는 집합이 뒤따르는 것이므로 두 점과 일치합니다.

나중 예제에서는 파일을 찾지 못하므로 그대로 반환합니다.

답변2

오직선두문자열은아니요와일드카드의 영향을 받는 항목:

$ echo ".[].aliases[]"
.[].aliases[]

그러나 인용되지 않은 문자열은 와일드카드를 사용하기 쉽습니다. *또는 (유효)(대괄호 표현식)을 포함하는 ?따옴표가 없는 문자열은 []일치하는 파일 목록에 따라 수정됩니다. a *가 디렉터리의 모든 파일과 일치하고 a가 ?문자가 하나만 포함된 파일과 일치하는 것처럼 a (유효)는 []대괄호 안에 문자가 포함된 파일과 일치합니다. 점은 유효한 문자입니다.

$ echo a[.]b
a[.]b

$ touch "a.b"
$ echo a[.]b
a.b

a와 일치하려면 ]괄호 안의 첫 번째 문자여야 합니다.

$ touch "a]b"
$ ls a[]]b
a]b

빈 대괄호 표현식은 의미가 없으며 확장되지 않습니다.

$ touch ab
$ ls a[]b
ls: cannot access 'a[]b': No such file or directory

이것이 작동하는 이유는 다음과 같습니다.

$ touch a]c abc afc azc a:c a?c aoc 
$ ls a[]bfz:?]c
abc  a:c  a?c  a]c  afc  azc

[아이디어가 비슷하기 때문에 :

$ touch a[c
$ ls a[[]c
a[c

그러나 대괄호 표현식의 어느 위치에나 있을 수 있습니다.

$ ls a[]bf[z:?]c
abc  a:c  a?c  a[c  a]c  afc  azc

$ ls a[]bfz:?[]c
abc  a:c  a?c  a[c  a]c  afc  azc

게시한 문자열은 .[].foo[]점 뒤에 a ], a ., a f, a o또는 a 가 오는 것과 일치합니다 [. 이는 다음과 유사합니다:

$ echo a[].foo[]c
a[c a]c afc aoc

다음과 일치합니다.

$ touch .] .f .o .[ .a .b .z

$ echo .[].foo[]
.. .[ .] .f .o

..기본적으로 모든 디렉터리에 디렉터리 항목이 존재하므로 디렉터리 항목을 만들 필요가 없습니다. 그러나 단순 포인트는 .(실제로 포인트를 사용하여) 명시적인 일치가 필요하기 때문에 전역과 일치하지 않습니다.

..aliases그러나 대괄호 표현식은 일치만 하기 때문에 이는 일치하지 않습니다 .하나특징. 여러 문자를 일치시키려면 *다음을 사용해야 합니다 .

$ touch ..a ..l ..i ..aliases ..alias ..ali
$ echo .[].aliases[]
.. .[ .] .a

$ echo .[].aliases[]*
.. .[ .] .a ..a ..ali ..alias ..aliases ..i ..l

관련 정보