Например, в « 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.
Также: Обычно эти файлы находятся в домашнем каталоге пользователя, например, /home/name/.ssh
в Linux или C:\Users\name\.ssh
в Windows 7+. Они редко помещаются в подкаталоги "Документы" или "Мои документы".
Как пишет Роб Пайк в Google+, это была случайная особенность:
Давным-давно, когда разрабатывался дизайн файловой системы Unix, записи
.
и..
появился, чтобы облегчить навигацию. Я не уверен, но я верю..
вошел во время переписывания Версии 2, когда файловая система стала иерархической (вначале она имела совершенно другую структуру). Однако, когда вы набрали ls, эти файлы появились, поэтому Кен или Деннис добавили в программу простой тест. Тогда это было на ассемблере, но рассматриваемый код был эквивалентен примерно так:
if (name[0] == '.') continue;
Это утверждение было немного короче, чем должно было быть,
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
но эй, это было легко.
Две вещи привели.
Во-первых, был создан плохой прецедент. Многие другие ленивые программисты вносили ошибки, делая то же самое упрощение. Фактические файлы, начинающиеся с периодов, часто пропускаются, когда они должны быть подсчитаны.
Во-вторых, что гораздо хуже, была создана идея "скрытого" или "точечного" файла. Как следствие, более ленивые программисты начали сбрасывать файлы в домашний каталог каждого. У меня не так много всего установлено на машине, которую я использую, чтобы напечатать это, но мой домашний каталог содержит около ста файлов, и я даже не знаю, что из них большинство или они все еще нужны , Каждая оценка имени файла, которая проходит через мой домашний каталог, замедляется этим накопленным осадком.