Dois pontos (..) ou dois traços (-) como um delimitador nos nomes de arquivos e diretórios

6

É uma boa ideia usar sinais duplos ou duplos menos como delimitadores? Estou tentando encontrar uma boa convenção de nomenclatura para dados científicos experimentais. Por exemplo:

2017-12-11T19-45..JDoe-042..UO2(NO3)2-EtOAc_dist..150.3K..1.234mM.dat
2017-12-11T19-45--JDoe-042--UO2(NO3)2-EtOAc_dist--150.3K--1.234mM.dat

Minhas razões:

  1. Para garantir compatibilidade entre plataformas, os únicos caracteres adequados são _ - . e suas combinações;
  2. Nenhum deles pode ser usado por conta própria no meu caso :
    • _ está reservado para os espaços; devido a fórmulas químicas sensíveis a maiúsculas e minúsculas eu não posso usar o camelCase.
    • O - geralmente faz parte dos códigos internos do laboratório, além de estar sendo usado como um substituto para um% de coeficiente de dois pontos: (notação ISO 8601 modificada) e proporções;
    • . é uma marca decimal.
  3. Entre suas combinações, as mais populares, parece , é _-_ . No entanto, isso é 3 caracteres e os nomes de arquivos já são bastante longos (como se pode dizer nos exemplos), então eu gostaria de ficar com dois caracteres, se possível.
  4. Visualmente, acho difícil diferenciar rapidamente entre __ e _ , enquanto -- vs - e . vs .. são bastante distintos para mim.
  5. Eu não incluí vírgula , (como foi sugerido nos comentários, este também é um personagem viável a considerar), pois acho que é fácil confundi-lo com um único ponto . , que é já reservada principalmente para os valores numéricos com um ponto decimal.

De acordo com várias postagens na rede SE, por exemplo

Eu diria que ambos -- e .. são totalmente aceitáveis e estou pensando em finalmente escolher .. . No entanto, não tenho certeza, especialmente em relação a como expressões regulares ou scripts python podem manipular esses arquivos e pastas (tenho pouca experiência com ambos, mas estou aprendendo).

Desconsiderando o comportamento de um software especializado, você diria que esses delimitadores são geralmente seguros para sistemas de arquivos comuns e linguagens de script?

    
por andselisk 10.12.2017 / 14:08

1 resposta

10

Uma das mais decisões de design escrutinadas e adivinhadas no Unix / Linux é um recurso do sistema de arquivos que está trabalhando a seu favor: qualquer caractere é permitido em um nome de arquivo / diretório, exceto para NUL / (ASCII 000) e barra some-script --my-dash-first-file ... (o último sendo reservado para arquivos caminhos ).

Programas e scripts compatíveis com POSIX e / ou bem escritos lidam com tal leniência, mas, infelizmente, há inúmeros exemplos por aí que não. No entanto, eles tendem a vomitar em um conjunto muito particular de caracteres e esses caracteres não são pontos ou traços. (Espaços e novas linhas são dois dos mais problemáticos.) Na verdade, pontos e traços são muito usados. Ferramentas comuns, linguagens e expressões regulares irão lidar com elas bem ...

... com uma pequena exceção. (Claro, certo?) Eu não vejo nenhuma indicação de que você planeja fazer isso, mas deve-se notar: evitar traços no começo de um nome. Isso é legal, é claro, mas existem muitos programas que lidarão com esses nomes de maneira imprópria, fazendo com que eles sejam interpretados como opções / sinalizadores de linha de comando. Por exemplo, se um script passar o nome do arquivo para outro script como este: Unknown option '--my-dash-first-file' , então não se surpreenda se vir algo como foo.txt .

TL; DR Seus esquemas propostos são seguros se você evitar nomes que iniciam com traço.

Palavra adicional de cautela: Embora pontos comuns sejam comuns, especialmente para separar o nome base de um arquivo de sua "extensão" (por exemplo, .. ), pontos em pares são normalmente vistos sozinhos ... onde eles têm um significado especial: o diretório pai do diretório atual ( /foo/bar/../baz ) ou o diretório anterior em um caminho ( %code% ). Portanto, embora isso não cause problemas técnicos, os pontos duplos em um nome são um pouco não convencionais e podem fazer com que alguns usuários façam um exame duplo.

por 10.12.2017 / 15:14

Tags