Что делает rm -rf *(1 )*?

Единственным пользователем в Kali Linux является root ; нельзя создать нового пользователя.

...on a default Kali Linux system, the only installed user is root and you have to work under that identity all the time. You have to understand that being root means there is basically no permissions checks on your machine. You can do everything you want. And even things you don’t want.

0
08.10.2020, 14:51
1 ответ

В оболочке POSIX скобки зарезервированы для создания внутренних команд (cmd1; cmd2; cmd3)в подоболочке. Поскольку в *(1)*круглые скобки не отделяются от звездочек символами новой строки или точкой с запятой, это синтаксическая ошибка. Конечно, даже *;(1);*не имело бы смысла, хотя и не является синтаксической ошибкой как таковой.

В Bash, еслиextglobвключен, что можно проверить с помощью shopt -p |& grep extglob, «*(pattern-list)соответствует нулю или более вхождений заданных шаблонов ». В этом случае *(1)*всегда расширяется до всех файлов в каталоге, так как *(1)может соответствует нулевому вхождению шаблона 1, а *будет соответствовать всем остальным имена, какими бы они ни были. В результате удаляются все файлы (и каталоги, которые тоже являются файлами ).

Также обратите внимание, что оболочки используют шаблоны оболочки (, известные как подстановки ), которые не совпадают с регулярными выражениями. См. Ответ Жиля для получения более подробной информации об этом. В вашем случае, чтобы удалить каждый файл, имя которого содержит (1), вам нужно будет экранировать или заключать скобки в кавычки, чтобы сохранить их буквальное значение, то есть

rm -rf *'(1)'*
rm -rf *\(1\)*
rm -rf *"(1)"*
5
18.03.2021, 22:59

Теги

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