Есть такая команда:
maldet -b --scan-all /home?/?/public_?
Мне было непонятно, зачем нужны знаки вопроса, особенно один между двумя путями, поэтому я сделал man maldet
и прочитал:
-a, --scan-all PATH
Сканировать все файлы по пути (по умолчанию: /home, подстановочный знак: ?), например: maldet -a /home/?/public_html
Зачем нам нужен дополнительный ?
между /home?
и public_?
?
Альтернативная версия этого вопроса может звучать так: "Если комбинация /home?
и public_?
означает "найти все экземпляры public_
под /home
, то зачем нам дополнительный ?
между ними?".
Мне не удалось отследить источник команды scan
, которую в итоге вызывает maldet, но maldet дословно передает заданный путь этому scan
, поэтому я предполагаю, что что-то дальше обрабатывает эти ?
как подстановочные знаки.
Предполагаемая цель подстановочных знаков в этом примере — собрать такие пути, как:
/home/user1/public_html
/home/user2/public_ftp
, но не:
/home/public_html
... другими словами, чтобы требовалось наличие элемента пути между /home
и /public_html
или /public_anything
.
Не забудьте экранировать или заключить в кавычки эти подстановочные пути к команде maldet
, потому что если у вас есть какие-либо пути в форме: /home/(односимвольный) /public_(односимвольный)
, например:
/home/a/public_a
, тогда ваша оболочка будет расширяться до этого (или любого из совпадающих) путей вместо передавая ?
вместе с подстановочным кодом maldet. Вы можете по ошибке получить «повезло», используя эти пути без кавычек, если не существует односимвольных путей, потому что, если нет совпадающих путей (видимых оболочкой), он передаст ?
- содержащий строку вместе с командой malde. Как только появятся какие-либо совпадающие пути, оболочка расширит ?
на эти пути, и maldet больше не будет видеть (ваши) подстановочные знаки.