답변:
글롭 은 정규 표현식이 아닙니다. 일반적으로, 쉘은 당신이 glob로 인용하지 않은 명령 행에 입력 한 모든 것을 해석하려고 시도합니다. 쉘은 정규 표현식을 전혀 지원할 필요는 없습니다 (실제로는 더 많은 현대적인 것, 예를 들어 구문 의 =~
정규식 일치 연산자 bash
[[
).
이 .??*
글러브입니다. 리터럴 도트로 시작하는 파일 이름과 일치하는 .
두 문자 (앞에 반드시 같은 것은 아님) ??
, 그 뒤에 정규 표현식 ( [^/]*
예 : 0이 아닌 문자)이 일치 /
합니다.
쉘 경로 이름 확장 ( "글 로빙"의 전체 이름)에 대한 자세한 내용은 POSIX spec을 참조하십시오 .
.
이며 ..
일반적으로 아무것도하고 싶지 않습니다. 옳지 않습니다. .X
X는 점이 아닌 다른 문자 인 ' ' 라는 이름의 항목은 선택하지 않습니다 . 나는 그것이 일치하는 단일 글로브 쓸 수 생각하지 않습니다 모든 제외 dotfile을 .
등을 ..
,하지만 당신은 두 가지로 그것을 할 수 있습니다 : tar zcvf dotfiles.tar.gz .[!.] .??*
예를 들면.
ls .?
하는 것과 동일한 값을 반환했습니다 . 이외의 모든 파일에 대해 수행했을 것 입니다. ls ..
.?
.[^.]
.?
..
[^abc]
에서 정규 표현식 구문 [!abc]
에서 glob 구문 과 동일 함을 의미 합니다 (즉 , globs ^
로 대체 됨 !
). 사용하여 [^abc]
몇 가지 껍질이 정규식과 같은 의미를 다른 사람들이 치료 동안 사용하여 해석 할 수 있도록 POSIX, 그것은 무엇을 의미하는지 지정하지 않기 때문에 글로브에서 스타일의 구문은 매우 이식 할 수 없습니다 ^
단지 리터럴 문자로.
.[!.]
온 리터럴로 남아있을 수 있습니다 tar
어떤 파일이 일치하는 패턴이없는 경우 일반적인 경우에 명령 행. 일부 쉘을 사용하면 bash와 같은 동작을 제어 shopt -s nullglob
하여 명령 줄이 일치하지 않으면 명령 줄에서 사라지지만 보편적 인 기능은 아닙니다.
.??*
와일드 카드 ( 하지 정규 표현식, 그것은 그런 식으로 보이지만) 기간 (시작 파일 이름으로 변환 .
이 하나 개의 문자 (다음), ??
다음 다른 문자의 개수 (0 개 이상)를), 그리고 ( *
).
어쩌면 파일 이름의 와일드 카드에 대한이 페이지 가 도움이 될 것입니다.
다른 답변에 추가하기 위해 ?
단일 문자는 단일 문자 파일 이름으로 변환 ??
되며 두 문자 만있는 파일 이름과 일치합니다.
[root@mercy testdir_2]# ls
ion it r
[root@mercy testdir_2]# ls ?
r
[root@mercy testdir_2]# ls ??
it
[root@mercy 1 testdir_2]# ls ???
ion
[root@mercy testdir_2]#