1

Команда

$ chmod -R 700 ./.*

ищет и пытается chmod файлы и каталоги выше pwd . Зачем?

Ожидаемые результаты: рассмотрим pwd /home/user , я бы ожидал первой . в ./.* подлежит замене на /home/user . Тогда я ожидал бы, что chmod применяет рекурсивно (-R) ко всем файлам, начинающимся с точки (.*) В /home/user , поэтому: $ chmod -R 700 /home/user/.* все вместе.

Я получаю массу ошибок, таких как:

chmod: cannot access `./../otheruser/file': Permission denied

Это происходит потому, что .. соответствует .*?

1 ответ1

6

./.* также совпадает ./.. в результате чего chmod -R попробовать рекурсии все в ..

Добавлено:

Если вам нужны только точечные файлы и каталоги в текущем каталоге, попробуйте .[!.]* , Что соответствует всему, что начинается с . и имеет по крайней мере один символ, не являющийся точкой.

Если вам нужны все точечные файлы в любом месте вашего текущего дерева каталогов, вы можете использовать find как показано здесь, используя подстановку команд $(...) чтобы вставить результат find обратно в командную строку в качестве аргументов chmod .

chmod 700 $(find -name ".[!.]*")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .