MyTetra Share
Делитесь знаниями!
Как применить chmod или chown к скрытым файлам (dot-файлам)
Время создания: 19.01.2021 10:18
Текстовые метки: linux, chmod, chown, выполнить, скрытый, файл, dot-файл, bash, find
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1611040691599iyzhzpc/text.html на raw.github.com

Команды chown и chmod имеют одну неприятную особенность: в своем стандартном синтаксисе они не обрабатывают (т. е. пропускают) скрытые файлы и каталоги. В Linux скрытые файлы и каталоги имеют в начале своего имени точку, и иногда называются dot-файлами (или dot-каталогами в случае каталогов).


Такое поведение особенно неприятно в том случае, если происходит рекурсивная обработка файлов с помощью опции -R.


Вопрос: как же обрабатывать скрытые файлы через команды chown/chmod так, чтобы затрагивались и скрытые файлы? Например, иногда надо поменять владельца или режим файлов для всех подкаталогов проекта и подкаталога .git, если проект находится под управлением системы контроля версий Git. Немало споров было по этому поводу, но самый правильный способ, без "краевых" эффектов - это воспользоваться командой find, из-под которой выполнить команду смены пользователя или команду смены режима доступа к файлу.


В общем случае, делается это так:



find . -exec chown user:group {} \;

find . -exec chmod 644 {} \;

и т. п.



Команда find, в отличие от chown/chmod, находит все файлы в указанном каталоге (символ точка "." в команде - это текущий каталог), невзирая на то, скрытый это файл или нет. Команда find ищет файлы в указанном каталоге рекурсивно, заходя во все подкаталоги.


С помощью опции -exec к каждому найденному файлу применяется команда, идущая после данной опции. Вместо символов "{}" будет подставляться имя текущего найденного файла с путем к нему. Символы "\;" нужны для того, чтобы в опции -exec обозначить конец выполняемой внутри нее команды.


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования