Может быть, я старею, но должен. и .. не быть проигнорированным любой командой? AFAIK они там из-за файловой системы и не служат никакой другой цели.
Это не имеет смысла, просто потому, что вы специально кормили имена .
и ..
наколоть своим chown <...> .*
В таком случае, почему chown
должен думать, что вы не сделали то, что хотели?
Имена были переданы в chown, потому что оболочка расширяла их в соответствии с заданными вами критериями расширения глобуса оболочки, которые соответствовали обоим .
и ..
вместе со всеми остальными точечными каталогами в текущем каталоге. Так как вы сказали chown
работать рекурсивно, он спустился в эти каталоги и все, что под ними. Это означает, что он "спустился" ..
и затем продолжал работать оттуда.
Вы можете попробовать это самостоятельно, выполнив команду echo .*
Чтобы увидеть имена, введенные в командную строку chown. Сравните это с выводом echo *
с shopt dotglob
и выключенным shopt dotglob соответственно (shopt -s dotglob
для включения, shopt -u dotglob
для выключения). Используйте ls
а не echo
чтобы увидеть первый уровень рекурсии.
Есть совершенно веские причины для запуска даже chown -R
.
или ..
Наиболее очевидным представляется извлечение архива, содержащего неверную информацию о владельцах файлов и всех файлов в одном каталоге; в таком случае chown -R abc:xyz .
из несжатого каталога совершенно разумно сделать сброс владельца к чему-то разумному в вашей системе.
Если вы хотите , чтобы ваша оболочка не .*
.
и ..
тогда вам нужно убедиться, что он настроен правильно для вашей конкретной оболочки. Например, цитирование из GNU bash 4.2.37(1) -релизов (актуально для Debian Wheezy на момент написания этой статьи, версия пакета Debian bash
4.2+dfsg-0.1+deb7u3
для архитектуры amd64):
GLOBIGNORE
Разделенный двоеточиями список шаблонов, определяющих набор имен файлов, которые будут игнорироваться расширением пути. Если имя файла, совпадающее с шаблоном расширения пути, также соответствует одному из шаблонов в GLOBIGNORE, оно удаляется из списка совпадений.
Помните, что частью философии Unix является «доверие, что пользователь знает, что он делает».