Bom estilo / práticas para separadores nos nomes de arquivo (ou diretório) [fechado]


16

Não sei exatamente se essa é uma pergunta "correta" para postar aqui. Provavelmente estou perguntando mais sobre "opiniões" do que respostas categóricas reais (daquelas que funcionam ou não, e é isso).

Eu queria saber qual separador de nomes seria o mais amigável para Linux (ou mais especificamente, amigável para Bash ) e amigável para humanos ao mesmo tempo.

Digamos que eu queira criar um diretório que contenha algo relacionado ao Sr. Foo Bar ( Foo sendo o primeiro nome, Bar sendo o sobrenome)

Ter o nome " Foo-Bar/" é muito conveniente. -é um personagem "regular", não precisa ser escapado, mostra claramente isso Fooe Barsão duas coisas separadas ... Legal.

Agora, " Foo.Bar" é um pouco mais complicado. Alguém pode pensar que Foo.Barna verdade é um arquivo (à primeira vista, especialmente se você não tiver terminais com cores ativadas), onde " Foo" é o nome do arquivo e " Bar" a extensão.

Eu também poderia usar " Foo Bar", mas preciso escapar do espaço em branco quando quiser acessar o diretório e, se desejar listar o conteúdo do diretório pai (onde Foo Barestá localizado) e colocar a lista em um array bash, o espaço em branco vai causar problemas (muito). Não é legal.

Os colchetes ()também causam muitos problemas. Eles também precisam ser escapados e causar problemas com comandos como scp... Nada legal.

Então ... a pergunta (finalmente) é: se você precisa deixar claro e significativo o nome de um arquivo à primeira vista e usar separadores, o que você usa?



Costumo usar traços, mas isso depende do que estou fazendo. Alguns podem considerar o caso de camelo como apropriado, como o FooBar.
Klapaucius

Respostas:


14

Resposta curta: "Foo _-_ Bar"

Resposta longa:

Para facilitar a localização, eu costumo usar uma sequência de caracteres em áreas onde isso é necessário, a idéia é usar algo fácil de detectar, para que você entenda que esse é o separador, talvez algo como "_-_" ou " ___ ".

Um exemplo prático de onde eu uso essa é a minha coleção de mp3, onde os nomes de arquivos contêm o artista e o título da música, e às vezes o número da sequência. E se você usar uma sequência mágica para separá-las, é fácil tanto para os olhos quanto para os scripts. O exemplo mp3 pode ser algo parecido com isto.

  • 01_Blue_Man_Group _-_ Above.mp3
  • 02_Blue_Man_Group _-_ Time_to_Start.mp3
  • 03_Blue_Man_Group _-_ Sing_Along.mp3

Agora, isso pode ser traduzido em seu exemplo, se Foo e Bar são duas coisas lógicas que não devem ser misturadas e que poderiam ser Foo _-_ Bar.


2
E dessa forma, você também pode distinguir nomes que já contêm traços (ou separadores em geral).
Lynxlynxlynx

11
Também é muito bom reg ex parse! : ^ (. +) _-_ (. +) \. mp3 $
DanDan

Dado que os humanos visualizariam esses arquivos, esta é uma boa resposta; Em essência, eu consideraria isso uma string separadora; Um separador exclusivo de vários caracteres. No Vagrant, eu notei que ele usa a string VAGRANTSLASHnos nomes de arquivos onde está a separação.
ThorSummoner

9

Com tantos caracteres que você pode achar que não deve ser especial, na verdade, eu uso apenas os caracteres especiais. Isso também me coloca nos bons hábitos de usar a conclusão do bash, onde ele escapará automaticamente de todos os caracteres especiais em um nome de arquivo. Mas também me coloca nos bons hábitos de escapar / citar TUDO em scripts e 1-liners de várias partes no bash.

Por exemplo, em apenas uma linha simples:

for file in *.txt; do something.sh "$file"; done

Dessa forma, mesmo que um dos arquivos tenha um espaço, ou algum outro caractere, a doparte do loop ainda atuará nele, e não perderá 2 ou mais partes de nomes de arquivos, possivelmente causando efeitos colaterais indesejados.

Como não consigo controlar a nomeação de espaço / não espaço de TODOS os arquivos que encontrar, e se eu tentasse, provavelmente quebraria alguns links simbólicos em algum lugar, causando consequências ainda não intencionais, só espero que todo o nome de arquivo / directoryname possa ter espaços, e apenas cite / escape todas as variáveis ​​para compensar.

Então, apenas uso os caracteres que quero (geralmente espaços) nos nomes de arquivos.

Eu até uso espaços nos nomes de conjuntos de dados do ZFS, o que tenho que admitir que causou uma quantidade considerável de preocupação entre os desenvolvedores que escrevem o software para o NAS que eu uso.

Resumo: os espaços não são um caractere inválido ; portanto, não há motivo para não usá-los.


6

Uso traços -pelos motivos mencionados acima. Evito sublinhados porque eles exigem o uso da tecla Shift. Portanto, levem pelo menos o dobro do tempo para digitar (também acho feios)

Estou mais inclinado a fazer isso pelos nomes de arquivos de script do que qualquer outra coisa - acho que é mais importante para mim identificar claramente para que serve um script. Os arquivos de documentos são apenas dados inertes, mas os scripts são potencialmente perigosos se forem mal utilizados.


5

Eu uso sublinhados ( _). Visualmente eles desaparecem e são fáceis de digitar e não especiais.


4
me encontrá-los mais feio do que -, e mais difícil de tipo (se tem que usar a tecla shift)
tshepang
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.