Что такого особенного в каталогах, имена которых начинаются с точки?

25

Мне было интересно, в чем разница между этими двумя:

~/somedirectory/file.txt

а также

~/.somedirectory/file.txt

Это действительно трудно спросить об этом в Google, так как я не знал, как объяснить, .когда я даже не знал, как это назвать. Но может ли кто-нибудь описать разницу между включением точки и ее исключением?

Темный тамплиер
источник

Ответы:

18

В unix-подобных системах все каталоги содержат две записи, .и.. , которые обозначают сам каталог и его родителя соответственно. Эти записи в большинстве случаев неинтересны, поэтому lsскрывают их, а подстановочные знаки, например *, не включают их. В общем, lsподстановочные знаки скрывают все файлы, имя которых начинается с .; Это простой способ исключить .и ..позволить пользователям скрывать другие файлы из списков. Кроме исключений из списков, в этих файлах нет ничего особенного.

Unix хранит файлы конфигурации для каждого пользователя в домашнем каталоге пользователя. Если все файлы конфигурации появляются в списках файлов, домашний каталог будет загроможден файлами, которые пользователям не нужны каждый день. Таким образом, файлы конфигурации всегда начинаются с .: как правило, файл конфигурации для приложения Foo называется что-то вроде .fooили .foorc. По этой причине пользовательские файлы конфигурации часто называются точечными файлами .

Жиль "ТАК - перестань быть злым"
источник
1
« В более общем плане , lsи джокеры скрыть все файлы, имя которых начинается с ., это простой способ , чтобы исключить .и ..и позволяют пользователям скрыть другие файлы из списков.» Это звучит так: Концепция скрытия файлов / каталогов, начинающихся с точки, на самом деле, кажется, скрыта . ... Но позже люди поняли, что возможность скрывать некоторые файлы / каталоги имеет значение, и поэтому они начали ставить точку в начале файлов, которые они хотят скрыть. Это действительно так или просто предположение?
Утку
3
@Utku На самом деле, это было наоборот, так как минимум на первый: оригинальный разработчик намеревался скрыть только .и , ..но допустил ошибку . Однако возможно, что его отговорили от исправления, потому что некоторые пользователи сочли его полезным, и причина, по которой файлы конфигурации пользователя начинаются, .определенно такова, что они не загромождают вывод lsв домашнем каталоге. Я думаю, что у нас есть вопрос об этом здесь, но я не могу найти его, возможно, он ошибся.
Жиль "ТАК - перестань быть злым"
15

Директории, начинающиеся с точки ., считаются скрытыми. Это означает:

  • ~/somedirectoryи ~/.somedirectoryразные каталоги. То есть, если ~/somedirectoryсуществовал, и вы сделали mkdir ~/.somedirectory, вы не ошибетесь с File Existsсообщением.

  • Команда lsне покажет эти каталоги, начинающиеся с.

  • ls -aБудет показывать только каталоги

Том
источник
6
ls -A отображает файлы и каталоги, которые начинаются с. но не включает. и .. записи.
Джулиан
7

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

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

Спенсер Рэтбун
источник
4

Ведущий "." в каталоге или в имени файла этот каталог или файл скрываются при выполнении lsкоманды.


источник
1
Вы можете просмотреть все файлы, начинающиеся с "." с лс -а.
Сардатрион - Восстановить Монику
1

Как уже сказал @DaveNay, этот период приведет к скрытию файла или каталога.

Для вашего второго неявного вопроса, вот как вы ищете в Google:

Просто введите в поле поиска: период Linux перед именем


источник