LINUX.ORG.RU

Операции над файлами с точкой в начале


0

0

Доброго времени суток. Объясните пожалуйста, что будет, если я попытаюсь, например, сменить владельца файлов, начинающихся с точки в текущей директории командой chown -R user .* Изменит ли эта команда файлы в директории ".."? Если да, то как этого избежать?

Re: Операции над файлами с точкой в начале

более того - она опять подымется выше, попробует поменять пользователя для всех файлов на диске, заглючит и удалит все что сможет, страшная команда...

lester ★★★★ ()

Re: Операции над файлами с точкой в начале

>Изменит ли эта команда файлы в директории ".."?

Нет, gnu-утилиты достаточно умны, чтобы избегать подобные ситуации.

AX ★★★★★ ()

Re: Операции над файлами с точкой в начале

> Изменит ли эта команда файлы в директории ".."?

Изменит. Точнее, попытается (если у запускающего соответствующих прав нет, то выругается на "access denied")

> Если да, то как этого избежать?


chown -R .??*

.??* — маска специально для dot-файлов как раз на случай '..' и '.' (текущий каталог)

dexpl ★★★★★ ()

Re: Операции над файлами с точкой в начале

>>Изменит ли эта команда файлы в директории ".."?

>Нет, gnu-утилиты достаточно умны, чтобы избегать подобные ситуации.

.* возвращает в том числе и ".", и ".."

И gnu-утилиты тут не при чём. В отличии от винды, уайлдкарды обрабатывает не утилита, а шелл.

Т.е. не chmod раскрывает звёздочки, а получает сразу готовый список файлов от bash.

KRoN73 ★★★★★ ()

Re: Операции над файлами с точкой в начале

> Если да, то как этого избежать?

Заведи хорошую привычку chown'ить и chmod'ить из директории уровнем выше. Или пользуйся гуи.

LamerOk ★★★★★ ()
Ответ на: Re: Операции над файлами с точкой в начале от Cigarettesmoker

Re: Операции над файлами с точкой в начале

Да, на все. Ибо для всех этих программ получается список от bash. А bash как раз прекрасно и наплевательски подставляет ".." под ".*"

arknir ()

Re: Операции над файлами с точкой в начале

>>chown -R .??*

> Файл .x не впишется ;)


Согласен. Как вариант, chown -R .? .??*

И да, как уже не раз заметили, звезды/вопросы разворачиваются в список файлов шеллом, посему все то же самое справедливо для cp, mv и прочих команд (google://shell globbing или man sh, man bash, man zsh, man всякий_прочий_шелл на предмет этого глоббинга)

dexpl ★★★★★ ()
Ответ на: Re: Операции над файлами с точкой в начале от Cigarettesmoker

Re: Операции над файлами с точкой в начале

Если в операндах нет глобов (*,?), т.е. ты явно задаешь имена - то смысла нет. Оперировать файлами из шелл крайне не удобно, но если уж очень надо, то как минимум брать глобы в кавычки - хотя бы от пробелов в именах защитит.

LamerOk ★★★★★ ()

Re: Операции над файлами с точкой в начале

> сменить владельца файлов, начинающихся с точки в текущей директории

find . -type f -name .* -exec chown user:group '{}' \;

так наверное будет круче всех

Komintern ★★★★★ ()

Re: Операции над файлами с точкой в начале

try and compare:

ls .* -d | less

ls .[^.]* -d | less

gorilych ★★ ()
Ответ на: Re: Операции над файлами с точкой в начале от Komintern

Re: Операции над файлами с точкой в начале

> find . -type f -name .* -exec chown user:group '{}' \;

ты хоть сам пробовал, что написал?

во-первых, точку со звёздочкой надо закавычить, чтоб bash не делал expansion

во-вторых, find у тебя ищет рекурсивно, то есть не только в текущей директории, но и в поддиректориях. Забыт ключик -maxdepth

gorilych ★★ ()

Re: Операции над файлами с точкой в начале

>Если да, то как этого избежать

например, использовать find

sudo find dirname/ -type f -name ".*" -execdir chown someuser '{}' \;

Дисклеймер: запускайте на свой страх и риск, т.к. я тоже начинающий.

record ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.