As pessoas dizem que você não deve usar espaços na nomeação de arquivos Unix. Existem boas razões para não usar letras maiúsculas nos nomes dos arquivos (ou seja, File_Name.txt
vs. file_name.txt
)? Ou isso é apenas uma questão de preferência pessoal?
28
Respostas:
As pessoas dizem muitas coisas. Existem algumas ferramentas que podem estragar tudo, mas espero que sejam poucas em número neste momento, uma vez que os espaços são um vírus proliferado por grandes empresas de OS e agora é impossível evitar.
Os espaços tornam a especificação de nomes de arquivos na linha de comando etc. complicada. É sobre isso. Os únicos caracteres categoricamente proibidos nos sistemas * nix são NUL (não se preocupe, ele não está no seu teclado ou em qualquer outra pessoa) e
/
, já que esse é o separador de caminho. 1 Fora isso, vale tudo. Elementos de caminho individuais (nomes de arquivo) são limitados a 255 bytes (uma possível complicação se você estiver usando conjuntos de caracteres estendidos) e caminhos completos para 4 KiB.Eu diria que é. A maioria de DE parecem criar uma enorme quantidade de diretórios capitalizados em sua
$HOME
(Downloads
,Desktop
,Documents
- oD
é muito popular), então não há nada bizarro sobre isso. Também existem arquivos tradicionais muito comuns com letras maiúsculas, como.Xclients
e.Xauthority
.Um valor de capitalizar as coisas no início é que, quando listadas lexicograficamente, elas aparecerão antes das coisas em minúsculas - pelo menos, com muitas ferramentas e sujeitas à localidade.
Sou fã do caso camel (aka camelCase) e o uso com nomes de arquivos, por exemplo,
/home/goldilocks/blueSuedeShoes
- não importa o que está lá. Definitivamente, é uma questão de preferência pessoal, mas isso ainda me causa pesar.Os arquivos de classe Java tendem a conter maiúsculas por natureza, porque os nomes das classes Java contêm. E, claro, não vamos esquecer
NetworkManager
, mesmo se alguns de nós preferirem.1. Há muito mais delimitado, recomendado pelo POSIX "Portable Filename Character Set" que não inclui o espaço - mas inclui maiúsculas! O POSIX também especifica a restrição mais geral referente a "o caractere de barra e o byte nulo" em outras partes do mesmo documento . Isso reflete ou se reflete em práticas convencionais de longa data .
fonte
README
s eMakefile
s e assim por diante.Uma razão para evitar limites nos nomes de arquivos é que a ordem de classificação no Unix faz distinção entre maiúsculas e minúsculas; portanto, os arquivos iniciados com uma letra maiúscula aparecerão fora de ordem. Essa é a razão pela qual
Makefile
geralmente é nomeado usando letras maiúsculasM
- é um dos arquivos que você deseja ver primeiro, sem rolar / pular para baixoa-l
.Dito isto, você pode fazer muito pior em termos de nomes de arquivos:
-
pode causar problemas, pois muitos programas o veem como uma opção de linha de comando em vez de um nome de arquivo (por exemplorm -r
, não remove um arquivo chamado-r
)..
irá ocultá-lo de muitos utilitários e shell globbing (por exemplorm *
, não removerá arquivos como.config
)|<>*?
e até caracteres não imprimíveis comonewline
é tecnicamente possível, mas pode interromper scripts / programas semelhantes ao caractere de espaço. A diferença é que o caractere de espaço é frequentemente usado; portanto, os programadores tendem a testar seus programas contra ele, enquanto os caracteres menos populares geralmente não são testados.fonte
rm *
não removerá arquivos como.config
?Makefile
eREADME
são exemplos perfeitos disso. Observe também que esse efeito é insignificante se a letra não for a primeira letra do nome; portanto, não é grande coisa se você usar camelCase. Claro, você pode se surpreender ao veranOctagon
antesangle
, mas pelo menos eles estariam juntos na lista.Se você pretende fazer interface com um ambiente Windows, evite maiúsculas, pois o Windows minúscula tudo. Isso costuma ser um problema na outra direção; um link para
Page_2.html
será encontradopage_2.html
no Windows, mas falhará no Unix.fonte
NUL
e/
proibido.cat > Foo
substituirá o arquivofoo
. Este comportamento é susceptível de ser inesperado e confuso se você está acostumado a caso de preservação e sistemas de arquivos case-sensitive tais como ext *.\0
e/
, case-sensitive). Pelo menos é assim que eu lembro. Mas concordo que é meio que uma bagunça. Existem outras restrições no…Um motivo para evitar limites é que
bash
o preenchimento de guias faz distinção entre maiúsculas e minúsculas (pelo menos por padrão) - isso ainda me excita toda vez que eu acabo na frente de umabash
configuração padrão. Claro, existem outros shells populares, mas isso combinado com o fato de quebash
é o shell de login padrão em muitos sistemas operacionais significa que o padrão geralmente é a conclusão que diferencia maiúsculas de minúsculas. O uso de nomes de arquivos minúsculos simplifica bastante as coisas aqui.fonte
echo set completion-ignore-case On >> ~/.inputrc
pode ajudar um pouco, pelo menos em seu próprio sistema.Foo
e depois digitarcat f
(Tab), ele falhará. Mas o mesmo acontece se você digitarcat foo
,cat Foobar
oucat Fu
- o fato de você ter problemas para acessar um arquivo cujo nome não se lembra corretamente não tem nada a ver com o preenchimento automático.Desde que NL_Derek abriu essa lata de worms, mas não a articulou corretamente, vou dizer o seguinte:
Não há problema em usar letras maiúsculas, mas evite criar arquivos (no mesmo diretório) que diferem apenas por caso , por exemplo,
File_Name.txt
efile_name.txt
, porqueFILENA~1.TXT
eFILENA~2.TXT
- digitedir /x
para ver qual nome abreviado (se houver) combina com qual nome longo.)cmd1 > foo
cmd2 > Foo
cmd2
fonte
Além de razões técnicas, tenho um aspecto prático nisso. Aderir a letras minúsculas garantirá que as pesquisas sejam mais fáceis, a menos que se goste muito de usar grep -i ou localizar -i. Às vezes, até o camelCase pode ser confuso se for necessário usar uma sequência de palavras do mesmo tipo como no storageNYCDCPrimary. Portanto, acho melhor ficar com letras minúsculas e salpicá-las com sublinhados ou hífens para facilitar a leitura, como storage_nyc_dc_primary.
fonte
storageNycDcPrimary
eStorageNycDcPrimary
ambos são estranhos de ler.Eu considero que é melhor prática para evitar o uso de maiúsculas e espaços em nomes de arquivos.
Alguns dirão que não concordam, mas é uma questão ou o que chamo de crenças religiosas : difícil de discutir e concordar. Aqueles que não concordam dizem que a maioria das ferramentas agora está preparada para ser adequada para capitais e espaços: elas estão certas, mas essa não é a questão.
A pergunta certa é quanto você precisa usar maiúsculas e espaços nos nomes de arquivos. Para esta pergunta, exceto quando estou programando em Java, a resposta é quase sempre: eu não preciso de maiúsculas e espaços nos meus nomes de arquivos . Todos os espaços substituídos por um
_
sinal de sublinhado ( ) ou sinal de menos (-
) e, por esse motivo, não utilizo camel case (aka camelCase) ao contrário de outras religiões.Muitas pessoas me pediram besteira por fazer e ensinar que - algumas ainda o fazem - algumas tropeçaram em uma ferramenta que não era favorável ao capital / espaço e vieram até mim dizendo que eu estava certa e que elas deveriam ter me ouvido. Faça o que quiser e, se você usar letras maiúsculas e espaços no nome do arquivo, espero que você nunca tropece em uma ferramenta mal escrita. No entanto, se você usar essa ferramenta, espero que novamente, não será difícil de consertar e não custará à sua empresa e / ou muito dinheiro e / ou tempo. Mas se acabar tendo más repercussões, você se lembrará de que alguns disseram anteriormente que usar letras maiúsculas e espaços em nomes de arquivos é uma prática ruim.
E uma última coisa, se você quiser evitar todos os problemas , nenhum caractere especial nos nomes dos arquivos (apenas letras minúsculas, dígitos, sublinhado e menos [1]). Essa lista de caracteres indesejados também inclui todos os caracteres não ascii (sim, franceses e outros ingleses - e eu sou um deles) - nenhum deles: à, â, ä, ç, é, ..., ö, æ, œ , ...). Isso também se estende a muitas outras coisas, incluindo login e senha . Vou deixar você adivinhar o que acontece quando você coloca uma citação ou aspas duplas (
'
ou"
) em um login ou senha que é tratado por um script bash não gravado por um administrador de sistema confirmado ....[1]: talvez pudéssemos estender isso para
~
,@
,#
e alguns outros, mas isso está à procura de problemas (e sim eu sei sobre arquivos emacs ...).fonte