É uma prática ruim para o nome da pasta conter ponto (.)? Como sobre o nome do arquivo com vários pontos?

25

Às vezes, faz sentido para um nome de pasta conter um ponto (.). Por exemplo, você está armazenando dados para um experimento realizado em L = 0,5. Então a pasta pode ser nomeada:

experiment_L0.5

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

file_L0.5.txt

Trabalhando no Ubuntu, essa prática é ruim? Que tal compartilhar esses diretórios com um usuário do Windows?

Obrigado!

    
por Hamid 30.01.2014 / 17:34

5 respostas

34

Até onde 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. Então isso não tem um significado especial no contexto do Ubuntu. Isso é útil ao compartilhar arquivos com o Windows. O Ubuntu usa 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. Essa configuração pode ser alterada. Veja Forçar o nautilus a ignorar as 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 + H no Nautilus. No Windows, um nome de arquivo que começa com a. não está oculto. Então, se você transferir um arquivo oculto chamado .experiment_L0.5 para um sistema Windows, ele ficará claramente visível.

No Ubuntu, um nome de arquivo pode terminar com um ponto, pois não tem um significado especial colocado 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 é permitido. Quando tentei criar um arquivo desse tipo no Windows, obtive um arquivo com apenas o nome, sem ponto, sem extensão.

Referência: Wiki em nomes de arquivo

Espero que isso ajude.

    
por user68186 30.01.2014 / 17:44
11

A resposta curta

  • O Windows não permite os seguintes caracteres: <>:"/\|?* ( fonte )
  • Mais caracteres que são desencorajados são: space e dot . ( source )
    • 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)
    • Os pontos são usados no RegEx (por exemplo, quando você deseja usar grep ). Um ponto líder torna um arquivo escondido por convenção no Linux. No Windows, os pontos são usados na extensão do arquivo, que é usada para detecção de tipo de arquivo.
  • O Windows também não permitirá nomes de arquivo CON , PRN , AUX , CLOCK$ , NUL COM1 , COM2 , COM3 , COM4 , COM5 , COM6 , COM7 , COM8 , COM9 LPT1 , LPT2 , LPT3 , LPT4 , LPT5 , LPT6 , LPT7 , LPT8 e LPT9 . ( source )
  • Os únicos caracteres não permitidos nos sistemas de arquivos Unix que eu conheço são / e null (o byte nulo, ext4 ).
  • Veja também: Limites do sistema de arquivos (não sei para qual Windows você quer ser compatível) .

A resposta longa

Formação técnica: sistema de arquivos

O Ubuntu faz uso do sistema de arquivos / . Um sistema de arquivos rastreia onde os arquivos são armazenados no armazenamento subjacente (disco ou SSD ou qualquer outro), 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. Tanto quanto 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 tem um tamanho de bloco fixo, embora o tamanho do bloco possa ser configurado quando o sistema de arquivos é criado. ext4 (e também ext2 e ext3) fazem uso dos chamados "inodes" para arquivos e diretórios. Esses inodes contêm ponteiros para outros blocos (que também podem ser inodes ou ser "blocos de dados"). E o "primeiro" inode de um arquivo contém todas as informações que 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)
  • ...

Na verdade, 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 um motivo pelo qual os arquivos não possam conter um / . Eu acho que pode ser uma conveniência. (Alguém sabe porque .txt não é permitido?)

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

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

Histórico técnico: tipos de arquivo

  • O Windows usa extensões de arquivo para detectar tipos de arquivos
  • O Linux usa "Magic Bytes" para detectar tipos de arquivos. Os Magic Bytes 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 especificação de png como um exemplo). Ele também usa as extensões de nome de arquivo para arquivos com os mesmos bytes mágicos, como .html ou %code% (ambos são arquivos de texto).

Relacionado

por Martin Thoma 06.02.2014 / 21:21
5

Para fins de integralidade, os nomes que consistem apenas em um único ponto . 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 . ou .. .

    
por Sergey 04.02.2014 / 22:55
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 (procure no diretório / etc)

    
por Ohad Cohen 30.01.2014 / 17:47
0

A nomenclatura de arquivos é muito flexível nos sistemas de arquivos Unix e Linux. O único nome de arquivo que você não pode ter é um caractere nulo ou o que contém / 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 do nome; como você não deve usar nenhum dos caracteres " * : < > ? \ / | (restrito por NTFS) em seu nome de arquivo se você quiser acessar o arquivo em um sistema Windows.

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

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.

    
por precise 08.02.2014 / 10:57