Essa convenção de nomenclatura vem de sistemas operacionais semelhantes ao Unix (como Linux ou OS X), onde significa um arquivo ou diretório "oculto". Ele funciona em qualquer lugar, mas seu uso principal é ocultar os arquivos de configuração em seu diretório pessoal (por exemplo, ~/.cache/
ou ~/.plan
- eles são freqüentemente chamados de "dotfiles").
Dotfiles poderia, de certa forma, ser chamado o equivalente tradicional do Unix ao diretório "AppData" no Windows. (Muitos programas do Linux estão sendo alterados para seguir a especificação do diretório base do XDG , movendo sua configuração para ~/.config/
e outros dados para ~/.cache/
& ~/.local/share/
- isso faz com que seja um pouco mais semelhante a AppData\Roaming
e AppData\Local
.
Você tem esses diretórios .ssh
e .subversion
no Windows porque você usou alguns programas - especificamente, OpenSSH e Subversion - que foram portados para uso APIs do sistema Windows em vez de POSIX, mas não foram ajustadas para algumas outras convenções do Windows.
Às vezes, essa adaptação é ignorada intencionalmente, para facilitar a vida de pessoas que usam ambientes semelhantes ao Unix, como o Cygwin, em seus sistemas Windows. Por exemplo, o Cygwin instala o conjunto padrão de ferramentas semelhantes ao Unix, como ls
, que ignora o sinalizador "oculto" do Windows e apenas honra os nomes .dotfile
. Além disso, usar o mesmo local (por exemplo, <home>/.ssh
) pode facilitar a sincronização da configuração entre os computadores Windows e Linux / BSD / OSX.
Além disso, normalmente esses arquivos estão no diretório home do usuário, por exemplo. /home/name/.ssh
no Linux ou C:\Users\name\.ssh
no Windows 7+. É muito raro que eles sejam colocados nos subdiretórios "Documentos" ou "Meus documentos".
Como Rob Pike escreve no Google+ , esse foi um recurso acidental:
Long ago, as the design of the Unix file system was being worked out, the entries
.
and..
appeared, to make navigation easier. I'm not sure but I believe..
went in during the Version 2 rewrite, when the file system became hierarchical (it had a very different structure early on). When one typed ls, however, these files appeared, so either Ken or Dennis added a simple test to the program. It was in assembler then, but the code in question was equivalent to something like this:
if (name[0] == '.') continue;
This statement was a little shorter than what it should have been, which is
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
but hey, it was easy.
Two things resulted.
First, a bad precedent was set. A lot of other lazy programmers introduced bugs by making the same simplification. Actual files beginning with periods are often skipped when they should be counted.
Second, and much worse, the idea of a "hidden" or "dot" file was created. As a consequence, more lazy programmers started dropping files into everyone's home directory. I don't have all that much stuff installed on the machine I'm using to type this, but my home directory has about a hundred dot files and I don't even know what most of them are or whether they're still needed. Every file name evaluation that goes through my home directory is slowed down by this accumulated sludge.