다음과 같은 명령이 있습니다.
maldet -b --scan-all /home?/?/public_?
왜 우리에게 물음표가 필요한지, 특히 두 경로 사이에 단일 물음표가 필요한지 명확하지 않았기 때문에 다음을 읽고 읽었습니다 man maldet
.
-a, --모든 경로 검색
경로에 있는 모든 파일을 검사합니다(기본값: /home, 와일드카드: ?) 예: maldet -a /home/?/public_html
내 질문:
?
왜 과 /home?
사이에 추가 값을 추가 해야 합니까 public_?
?
/home?
이 질문의 또 다른 버전은 다음과 같습니다. "및의 조합이 " public_?
under의 모든 인스턴스를 찾는 경우, 왜 그들 사이에 추가 값이 필요한가요?" ".public_
/home
?
답변1
scan
Maldet이 최종적으로 호출하는 명령의 출처를 추적할 수는 없지만 , 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은 더 이상 (귀하의) 와일드카드를 볼 수 없습니다.