Por que alguns nomes de arquivos / pastas no Windows têm um ponto na frente deles?

34

Por exemplo, em My Documents, existem as seguintes pastas:

.ssh
.subversion

É algum tipo de convenção de nomenclatura que eu não conheço?

Niko Bellic
fonte

Respostas:

94

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 arquivos de configuração em seu diretório pessoal (por exemplo, ~/.cache/ou ~/.plan- eles são freqüentemente chamados de "arquivos de ponto").

Dotfiles poderia, de certa forma, ser chamado o equivalente tradicional do Unix ao diretório "AppData" no Windows. (Muitos programas 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 o torna um pouco mais parecido com AppData\Roaminge AppData\Local.)

Você tem estes .sshe .subversiondiretórios no Windows, porque você já usou alguns programas - especificamente, OpenSSH e Subversion - que foram portados para usar APIs de sistema do Windows, em vez dos 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 do tipo Unix ls, que ignora o sinalizador "oculto" do Windows e honra apenas os .dotfilenomes. Além disso, o uso do 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 inicial do usuário , por exemplo, no Linux ou no Windows 7 ou superior. É muito raro que eles sejam colocados nos subdiretórios "Documentos" ou "Meus Documentos"./home/name/.sshC:\Users\name\.ssh


Como Rob Pike escreve no Google+ , esse foi um recurso acidental:

Há muito tempo, quando o design do sistema de arquivos Unix estava sendo elaborado, as entradas .e ..apareciam para facilitar a navegação. Não tenho certeza, mas acredito que tenha ..ocorrido durante a reescrita da Versão 2, quando o sistema de arquivos se tornou hierárquico (ele tinha uma estrutura muito diferente desde o início). Quando se digitou ls, no entanto, esses arquivos apareceram; portanto, Ken ou Dennis adicionaram um teste simples ao programa. Estava no assembler, mas o código em questão era equivalente a algo como isto:

if (name[0] == '.') continue;

Essa afirmação foi um pouco mais curta do que deveria, que é

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

mas ei, foi fácil.

Duas coisas resultaram.

Primeiro, um mau precedente foi estabelecido. Muitos outros programadores preguiçosos introduziram bugs fazendo a mesma simplificação. Os arquivos reais que começam com pontos geralmente são ignorados quando devem ser contados.

Segundo, e muito pior, a idéia de um arquivo "oculto" ou "ponto" foi criada. Como conseqüência, programadores mais preguiçosos começaram a soltar arquivos no diretório pessoal de todos. Não tenho tantas coisas instaladas na máquina que estou usando para digitar isso, mas meu diretório pessoal possui cerca de cem arquivos de ponto e nem sei o que é a maioria deles ou se ainda é necessário . Toda avaliação de nome de arquivo que passa pelo meu diretório pessoal é retardada por esse lodo acumulado.

gravidade
fonte
Obrigado! Muito completo. Na minha pasta "C: \ users \ <username> \", tentei usar o comando "ls" no Windows PowerShell e novamente no Cygwin Terminal. O PowerShell lista os arquivos de ponto e oculta o AppData, enquanto o Cygwin Terminal faz exatamente o oposto. Interessante! Cygwin está usando a convenção do Unix.
Niko Bellic
@NikoBellic: O Unix / Cygwin lstem a -aopção de listar todos os arquivos.
grawity 23/05
11
@Ruslan: Por exemplo: o VMS não tinha arquivos ocultos; você acabaria com coisas como LOGIN.COMou DECW$MAIL.DAT no seu diretório pessoal . (Não tenho certeza de quais outros sistemas eram populares na época.) O Unix havia sido criado recentemente; não tinha nenhuma convenção.
grawity 23/05
2
@grawity O MS-DOS 1.0 era um sistema operacional do tipo DEC, feito pela Digital Research e comprado pela Microsoft, que estava no negócio de Unix na época. O MS-DOS 2.0 e versões posteriores adicionaram um sistema de arquivos hierárquico e algumas das convenções do Unix, incluindo .."up dir"; A Microsoft realmente anunciou esses "recursos avançados do Unix".
Fred Foo
11
@ grrawity Ah, certo, era a Seattle Computer Products clonando o CP / M da DRI. Desculpe. Mas meu argumento era que a Microsoft era uma loja Unix no início dos anos 80 e os sistemas DEC não eram o único ponto de partida. (Unix funcionou originalmente em hardware dezembro, mas foi eu acho mais influenciado pela CTSS e Multics de dezembro OS do.)
Fred Foo