*
대략 길이가 무한한 와일드카드입니다.?
길이가 대략 1 또는 0인 와일드카드입니다.
에서 문자열을 검색할 때 vs를 사용하는 것 *
사이에 차이점이 있습니까 ??*
bash
답변1
차이점은 in bash
(질문에 태그를 지정했을 때) *
은 길이가 0자 이상인 모든 문자열과 일치하는 반면, ?*
in은 길이가 1자 이상인 문자열과 일치한다는 것입니다. 예를 들어, 두 개의 파일을 고려하십시오: file.txt
및 를 사용하여 나열 xfile.txt
해 보십시오 .ls ?*file.txt
ls *file.txt
이 구성을 사용하는 실제 사례는 숨겨진 파일을 나열하는 것입니다. 그냥 이렇게 할 때가 많아요
ls .??*
이중 물음표는 더 간단한 형식처럼 현재 디렉토리 .
와 상위 디렉토리가 나열되는 것을 방지하기 위해 여기에서 사용됩니다 ...
ls .*
.??*
예를 들어, 두 문자만 있는 파일 이름(예: ) 은 .f
이 패턴과 일치하지 않습니다. 더 신뢰할 수 있는 솔루션은 이지만 ls {..?,.[!.]}*
일반적으로 이것은 나에게 너무 많은 타이핑입니다.
답변2
이 정의는 어디서 얻었으며 어떤 표현을 언급하고 있나요?
쉘 표현식에 대해 이야기하면 두 문자를 모두 단독으로 사용할 수 있지만 for의 정의는 ?
항상 1이나 0이 아닌 하나의 문자와 일치하기 때문에 일치하지 않습니다.
정규식에 대해 이야기하면 둘 다 표현식 뒤에 배치되는 연산자입니다. 따라서 "?*"는 반드시 다른 내용 뒤에 위치해야 합니다.