É uma prática recomendada que o nome da pasta contenha ponto (.)? Que tal um nome de arquivo com vários pontos?

28

Às vezes, faz sentido prático que o nome de uma pasta contenha um ponto (.). Por exemplo, você está armazenando dados para uma experiência realizada em L = 0,5. Portanto, a pasta pode ser nomeada:

experiment_L0.5

Um problema semelhante pode surgir para nomes de arquivos. Por exemplo:

file_L0.5.txt

Trabalhar no Ubuntu, isso é uma prática ruim? Que tal se você compartilhar esses diretórios com um usuário do Windows?

Obrigado!

Hamid
fonte
5
Se o ponto for o primeiro caractere, a pasta ficará oculta. Fora isso, acho que não importa.
precisa saber é o seguinte

Respostas:

37

Tanto quanto sei, não há problemas em nomear pastas e arquivos com um ou vários pontos.

O Ubuntu geralmente não usa o ponto e três caracteres (como .txt) para identificar o tipo de arquivo. Portanto, isso não tem significado especial no contexto do Ubuntu. Isso é útil ao compartilhar arquivos com o Windows. O Ubuntu usa o Magic Numbers nos primeiros bytes do arquivo para identificar o tipo de arquivo. No entanto, Nautilus. ignora os números mágicos se a extensão de ponto e três caracteres estiver disponível para identificar o tipo de arquivo. Esta configuração pode ser alterada. Consulte Forçar nautilus a ignorar extensões

No Ubuntu, iniciar um nome de arquivo ou pasta com um ponto, como .experiment_L0.5, oculta o arquivo ou a pasta. Você pode alternar a exibição de arquivos ocultos pressionando Ctrl+ Hno Nautilus. No Windows, um nome de arquivo começando com a. não está oculto. Portanto, se você transferir um arquivo oculto nomeado .experiment_L0.5para um sistema Windows, ele estará claramente visível.

No Ubuntu, um nome de arquivo pode terminar com um ponto, pois não possui um significado especial no final. No entanto, no Windows, um ponto separa o nome e a extensão do arquivo, e um nome de arquivo que termina com um ponto, mas nenhuma extensão não é permitida. Quando tentei criar esse arquivo no Windows, obtive um arquivo com apenas o nome, sem ponto, sem extensão.

Referência: Wiki em nomes de arquivos

Espero que isto ajude.

user68186
fonte
4
Isto está correto. Se você compartilhar arquivos com o Windows, evite o :caractere de dois pontos , ilegal nos nomes de arquivos do Windows, o que criará problemas ( e isso ocorre ). Veja também aqui .
Rmano 30/01
Obrigado @Rmano. Eu adicionei um link para o wiki na minha resposta.
precisa saber é o seguinte
1
Falando sobre compatibilidade, acho que um ponto final (como fname.) também não é permitido no Windows.
Rmano
Mais uma vez obrigado @Rmano. Fiz alguns testes rápidos e não consegui criar um arquivo nomeado test.no Windows. Vou atualizar minha resposta.
precisa saber é o seguinte
1
Para adicionar ao comentário de Rmano - isso pode ser um problema no Ubuntu se você tiver uma unidade Windows montada via VirtualBox. Tentar mkdir um nome com um ponto final falha com 'Erro de protocolo'.
bvanlew
11

A resposta curta

  • O Windows não permite os seguintes caracteres: <>:"/\|?*( origem )
  • Mais caracteres desencorajados são: espaço e ponto .( origem )
    • As ferramentas de linha de comando são mais difíceis de usar quando você tem espaços nos nomes (mais difícil, não impossível)
    • Pontos são usados ​​no RegEx (por exemplo, quando você deseja usar grep). Um ponto inicial torna um arquivo oculto por convenção no Linux. No Windows, os pontos são usados ​​na extensão do arquivo, que é usada para a detecção do tipo de arquivo.
  • Windows também não vai permitir que nomes de arquivos CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, e LPT9. ( fonte )
  • Os únicos caracteres não permitidos nos sistemas de arquivos Unix que conheço são /nulos (o byte nulo \0).
  • Consulte também: Limites do sistema de arquivos (não sei com qual Windows você deseja ser compatível).

A resposta longa

Formação técnica: Sistema de Arquivos

O Ubuntu faz uso do ext4sistema de arquivos. Um sistema de arquivos rastreia onde os arquivos são armazenados no armazenamento subjacente (disco ou SSD ou o que for), as permissões na forma de proprietário / grupo / outro podem ler / gravar / executar, registros de data e hora, nome.

O sistema de arquivos estrutura o armazenamento disponível. O primeiro bloco é chamado de "superbloco". Este bloco é usado para montar um sistema de arquivos. Até onde eu sei, todo sistema de arquivos moderno divide seu espaço em blocos. Eu acho (e não tenho muita certeza disso) que a maioria dos sistemas de arquivos também possui um tamanho fixo de bloco, embora o tamanho do bloco possa ser configurado quando o sistema de arquivos for criado. ext4 (e também ext2 e ext3) usam os chamados "inodes" para arquivos e diretórios. Esses inodes contêm ponteiros para outros blocos (que também podem ser inodes ou "blocos de dados"). E o "primeiro" inode de um arquivo contém todas as informações que eu mencionei acima.

Uma outra informação é o "tipo" do arquivo. "Tipo" pode ser:

  • arquivo regular
  • diretório
  • arquivo de dispositivo (dispositivo de bloco ou caractere)
  • ...

De fato, você também pode abrir diretórios com um editor:

vim /home

Como o diretório não contém o caminho completo, mas apenas os nomes do conteúdo, não vejo uma razão pela qual os arquivos não podem conter a /. Eu acho que pode ser conveniente. (Alguém sabe por que /não é permitido?)

No entanto, as coisas são diferentes para outros sistemas de arquivos. O FAT16 e o ​​FAT32 usavam a chamada "tabela de alocação de arquivos". Isso significa que há uma tabela que contém todos os arquivos armazenados no seu arquivo, em que "cluster" eles iniciam e em qual cluster eles terminam como uma lista vinculada individualmente.

O importante que eu queria lhe dizer é que caracteres não permitidos também podem depender do sistema de arquivos.

Formação técnica: Tipos de arquivo

  • Windows usa extensões de arquivo para detectar tipos de arquivo
  • O Linux usa "Magic Bytes" para detectar os tipos de arquivo. Bytes mágicos fazem parte do conteúdo do arquivo e, portanto, são completamente independentes do nome. Esses bytes fazem parte da especificação do tipo de arquivo (consulte a especificação png como exemplo). Ele também usa as extensões de nome de arquivo para arquivos com os mesmos bytes mágicos como .txtou .html(ambos são arquivos de texto).

Relacionado

Martin Thoma
fonte
Seu palpite sobre como o FAT armazena nomes de arquivos não é muito correto: en.wikipedia.org/wiki/FAT32#File_Allocation_Table - o "FAT" atual armazena a lista de clusters , enquanto os diretórios armazenam uma lista de nomes de arquivos com um ponteiro para o primeiro cluster de um arquivo, semelhante a como você descreve o ext4. :) Além disso, .txte .htmlarquivos realmente têm diferentes "valores mágicas" - tente renomear um arquivo html para test.txtfuncionar file test.txt. Ele não tem muita relevância para a pergunta original, mas ainda :)
Sergey
1
Obrigado, removi a parte errada sobre o FAT. sobre os valores mágicos e file: filenão usa apenas valores mágicos para determinar o tipo de um arquivo. Todo arquivo HTML válido é um arquivo de texto (no sentido em que contém caracteres legíveis), mas nem todo arquivo de texto válido é um arquivo HTML válido (no sentido em que é validado com os validadores do W3C). Muitos tipos de arquivos (html, xml, csv, js, php, c, h, cpp, ...) são de fato arquivos de texto. Somente arquivos binários têm bytes mágicos que estão em posições bem definidas. Todos os arquivos que eu nomeei acima podem ter um espaço em branco arbitrário antes do conteúdo.
Martin Thoma
5

Por uma questão de completude, os nomes que consistem apenas em um .ou dois pontos ..são especiais:

  • . refere-se ao diretório atual
  • .. refere-se ao diretório pai

Essas entradas são adicionadas automaticamente e sempre existem, portanto, você não pode ter um arquivo chamado .or ...

Sergey
fonte
Bom ponto. Isso se aplica ao Windows e Ubuntu.
user68186
1

Isso não importa, nem no linux nem no windows.

É uma prática comum ter uma pasta chamada "program.d" - para salvar a configuração e outras coisas de um programa (consulte o diretório / etc)

Ohad Cohen
fonte
0

A nomeação de arquivos é muito flexível nos sistemas de arquivos Unix, Linux. O único nome de arquivo que você não pode ter é um caractere nulo ou aquele que contém um /em seu nome. Mas certamente seria uma boa prática evitar usar os caracteres que são proibidos / reservados em outros sistemas do ponto de vista da portabilidade de nomes; como você não deve usar nenhum dos " * : < > ? \ / |caracteres (restrito pelo NTFS) no nome do arquivo, se quiser acessar o arquivo em um sistema Windows.

E sobre o uso de um .(ponto final) no nome do arquivo , acho que deve ser bom, pois não parece ser um caractere "reservado" em nenhum dos sistemas (exceto OpenVMS, MS-DOS e Windows, onde seu uso em O nome do arquivo / diretório é permitido, mas a última ocorrência será interpretada como o separador de extensões no VMS, MS-DOS e Windows), conforme mencionado no link da Wikipedia a seguir:

Em outros sistemas, geralmente considerados como parte do nome do arquivo, e mais de um período pode ser permitido. No Unix, um período inicial significa que o arquivo ou pasta está normalmente oculto.

preciso
fonte