По поводу одиночного знака вопроса в команде сканирования maldet

Есть такая команда:

maldet -b --scan-all /home?/?/public_?

Мне было непонятно, зачем нужны знаки вопроса, особенно один между двумя путями, поэтому я сделал man maldet и прочитал:

-a, --scan-all PATH

Сканировать все файлы по пути (по умолчанию: /home, подстановочный знак: ?), например: maldet -a /home/?/public_html

Мой вопрос:

Зачем нам нужен дополнительный ? между /home? и public_??

Альтернативная версия этого вопроса может звучать так: "Если комбинация /home? и public_? означает "найти все экземпляры public_ под /home, то зачем нам дополнительный ? между ними?".

0
08.04.2017, 22:13
1 ответ

Мне не удалось отследить источник команды 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 больше не будет видеть (ваши) подстановочные знаки.

1
28.01.2020, 02:46

Теги

Похожие вопросы