다음 명령이 있습니다.
maldet -b --scan-all /home?/?/public_?
물음표가 왜 필요한지, 특히 두 경로 사이에 있는 단일 물음표가 왜 필요한지 명확하지 않았습니다. 그래서 물음표를 사용했습니다.man maldet
하고 읽었습니다.
-a, --scan-all 경로
경로의 모든 파일을 검사합니다(기본값: /home, 와일드카드: ?) 예: maldet -a /home/?/public_html
내 질문:
왜 와 ?
사이에 추가가 필요한가요?/home?
public_?
?
/home?
이 질문의 대안적인 버전은 " 및 의 조합이 " under public_?
의 모든 인스턴스를 찾는 경우 , 왜 그들 사이에 추가 항목이 필요한가?"를 의미할 수 있습니다.public_
/home
?
답변1
나는 Maldet이 결국 호출하는 명령의 소스를 추적할 수 없었지만 scan
, Maldet은 주어진 경로를 그대로 해당 scan
명령에 전달하므로, 내 가정은 그 명령을 처리하는 추가 단계일 것입니다.?
, 더 나아가서 뭔가가 이를 와일드카드 자체로
해당 예에서 와일드카드의 예상 목표는 다음과 같은 경로를 수집하는 것입니다.
/home/user1/public_html
/home/user2/public_ftp
하지만:
/home/public_html
... 즉, 경로 요소가 /home
및 /public_html
또는 사이에 존재하도록 요구합니다./public_anything
사이에 경로 요소가 존재하도록 요구합니다 .
하지만 다음과 같은 maldet
형식의 경로가 있는 경우에는 명령 에 대한 와일드카드 경로를 이스케이프하거나 따옴표로 묶어야 합니다./home/(single-character)/public_(single-character)
/home/a/public_a
?
그러면 쉘은 을 maldet 와일드카드 코드에 전달하는 대신 해당 경로(또는 일치하는 경로 중 하나)로 확장됩니다 . 단일 문자 경로가 존재하지 않는 한 따옴표가 없는 경로를 사용하여 실수로 "행운"을 얻을 수 있습니다. 왜냐하면 일치하는 경로(셸에서 확인)가 없으면 - ?
포함 문자열을 maldet 명령에 전달하기 때문입니다. . 일치하는 경로가 존재하면 쉘은 해당 경로로 확장하고 ?
, Maldet은 더 이상 (귀하의) 와일드카드를 볼 수 없습니다.