Например, в My Documents
, есть следующие папки:
.ssh
.subversion
Это какое-то соглашение об именах, о котором я не знаю?
Например, в My Documents
, есть следующие папки:
.ssh
.subversion
Это какое-то соглашение об именах, о котором я не знаю?
Ответы:
Это соглашение об именах происходит от Unix-подобных операционных систем (таких как Linux или OS X), где оно означает «скрытый» файл или каталог. Он работает где угодно, но его основное назначение - скрыть файлы конфигурации в вашем домашнем каталоге (например, ~/.cache/
или ~/.plan
- их часто называют «точечными файлами»).
В некотором смысле Dotfiles можно назвать традиционным Unix, эквивалентным каталогу «AppData» в Windows. (Многие программы Linux изменяются в соответствии со спецификацией базового каталога XDG , перенося свою конфигурацию в ~/.config/
и другие данные в ~/.cache/
& ~/.local/share/
- это делает его немного более похожим на AppData\Roaming
и AppData\Local
.)
У вас есть эти .ssh
и .subversion
каталоги в Windows, потому что вы использовали некоторые программы - в частности, OpenSSH и Subversion - которые были портированы для использования системных API-интерфейсов Windows, а не POSIX, но не были настроены для некоторых других соглашений Windows.
Иногда эту адаптацию намеренно пропускают, чтобы облегчить жизнь людям, которые используют Unix-подобные среды, такие как Cygwin, в своих системах Windows. Например, Cygwin устанавливает стандартный набор Unix-подобных инструментов, например ls
, который игнорирует «скрытый» флаг Windows и учитывает только .dotfile
имена. Кроме того, использование одного и того же местоположения (например <home>/.ssh
) может облегчить синхронизацию конфигурации между компьютерами Windows и Linux / BSD / OSX.
Также: Обычно эти файлы находятся в домашнем каталоге пользователя , например, в Linux или в Windows 7+. Их довольно редко помещают в подкаталоги «Документы» или «Мои документы»./home/name/.ssh
C:\Users\name\.ssh
Как пишет Роб Пайк в Google+ , это была случайная особенность:
Давным-давно, когда разрабатывался дизайн файловой системы Unix, появились
.
и..
появились записи , облегчающие навигацию. Я не уверен, но я верю, что это..
произошло во время переписывания Версии 2, когда файловая система стала иерархической (вначале она имела совершенно другую структуру). Однако, когда вы набрали ls, эти файлы появились, поэтому Кен или Деннис добавили в программу простой тест. Тогда это было на ассемблере, но рассматриваемый код был эквивалентен примерно так:
if (name[0] == '.') continue;
Это утверждение было немного короче, чем должно было быть,
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
но эй, это было легко.
Две вещи привели.
Во-первых, был создан плохой прецедент. Многие другие ленивые программисты вносили ошибки, делая то же самое упрощение. Фактические файлы, начинающиеся с периодов, часто пропускаются, когда они должны быть подсчитаны.
Во-вторых, что гораздо хуже, была создана идея «скрытого» или «точечного» файла. Как следствие, более ленивые программисты начали сбрасывать файлы в домашний каталог каждого. У меня не так много всего установлено на машине, которую я использую для этого, но мой домашний каталог содержит около ста файлов, и я даже не знаю, что из них большинство или они все еще нужны , Каждая оценка имени файла, которая проходит через мой домашний каталог, замедляется этим накопленным осадком.
ls
имеет -a
возможность перечислить все файлы.
LOGIN.COM
или DECW$MAIL.DAT
в вашем домашнем каталоге . (Я не уверен, какие другие системы были популярны в то время.) Unix был создан совсем недавно; у него не было никаких соглашений вообще.
..
для «up dir»; Microsoft фактически рекламировала эти «расширенные возможности Unix».