Eu queria saber qual é a convenção de nomenclatura para arquivos no Unix? Não tenho certeza disso, mas acho que talvez exista uma convenção universal de nomes que se deva seguir?
Por exemplo, quero nomear um arquivo como: backup
com part 2
erandom
Devo fazê-lo assim:
backup_part2_random
OU
backup-part2-random
OU
backup.part2.random
Espero que a pergunta seja clara. Basicamente, quero escolher um formato que esteja de acordo com a filosofia do Unix.
Respostas:
.
é usado para separar uma extensão de tipo de arquivo, por exemplofoo.txt
.-
ou_
é usado para separar palavras lógicas, por exemplo,my-big-file.txt
ou algumas vezesmy_big_file.txt
.-
é melhor porque você não precisa pressionar a tecla Shift (pelo menos com um teclado de PC em inglês dos EUA), outros preferem_
porque parece mais um espaço.Então, se eu entendo o seu exemplo,
backup-part2-random
oubackup_part2_random
seria o mais próximo da convenção normal do Unix.O CamelCase normalmente não é usado em sistemas Linux / Unix. Dê uma olhada nos nomes de arquivos em
/bin
e/usr/bin
. O CamelCase é a exceção e não a regra nos sistemas Unix e Linux.(
NetworkManager
é o único exemplo em que posso pensar que usa o CamelCase, e foi escrito por um desenvolvedor do Mac. Muitos se queixaram dessa escolha de nome. No Ubuntu, eles realmente renomearam o script paranetwork-manager
.)Por exemplo,
/usr/bin
no meu sistema:e mesmo assim, nenhum dos arquivos iniciados com capital usa o CamelCase:
fonte
.
char também pode ser usado para girar as coisas, não apenas para especificar uma extensão. Por exemplomy.log my.log.1 my.log.2.gz
.ls
saída a partir de/usr/bin
é . Uma referência Esta é uma questão sobre convenções. )Muito mais importante que uma convenção específica está sendo consistente. Escolha um estilo e fique com ele.
fonte
Minha opinião sobre as convenções de nome de arquivo Unix / Linux:
Os sistemas de arquivos Unix / Linux não suportam inerentemente a noção de extensão. O conceito de uma extensão de arquivo existe completamente como algo apoiado por utilitários como
cp
,ls
ou o shell você está usando. Acredito que seja assim também no NTFS, mas posso estar errado.Executáveis, incluindo scripts de shell, geralmente nunca têm nenhum tipo de extensão. Os scripts terão uma linha hashbang (ie
#!/bin/bash
) que identifica qual programa deve interpretá-lo./etc
terminando emtab
também é super importante, comofstab
,mtab
,inittab
..d
é anexado aos nomes de diretório, principalmente em/etc
, mas isso não é generalizado (UPDATE: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )rc
é amplamente usado para scripts ou arquivos de configuração, com prefixo (por exemplorc.local
) ou sufixo (.vimrc
).htm
no final dos arquivos HTML no Unix / Linux, use.html
.Makefile
nos pacotes de código-fonte. Faça isso apenas para coisas comoREADME
.~
é usado para identificar um arquivo de backup ou um diretório, como emimportant_stuff~
, ou/etc~
. Muitas conchas irá expandir um solitário~
para$HOME
.lib
. A exceção ézlib
e provavelmente algumas outras.in.
, comoin.tftpd
.vmlinuz
significa zipado, mas eu nunca vi nenhum outro arquivo chamado dessa maneira.fonte
.sh
"extensão" neles. Pessoalmente, acho isso um pouco chato, mas tenho que admitir que posso desconhecer algumas boas razões para usar o.sh
..sh
em scripts que (1) não devem ser executados de maneira interativa, mas apenas a partir de outros scripts / programas ou (2) são projetados para fornecimento e não para execução. Para os primeiros, eles devem ser executáveis; para o último, deixo o bit executável e uso a linha shebang apenas para documentação de qual shell as funções são escritas.#!/bin/zsh
na parte superior), você sabe que pode obter outro arquivo com segurança com a extensão .zsh e verifique se ele contém código zsh legal. Se o seu script executável for estritamente compatível com o Bourne Shell (ou seja,#!/bin/sh
na parte superior), você saberia que a fonte desse arquivo .zsh será problemática.No unix, o nome do arquivo é apenas uma string, ao contrário do DOS, onde o nome do arquivo foi composto a partir do nome e da extensão. Portanto, qualquer um dos nomes de arquivos é totalmente aceitável.
Porém, muitos programas ainda usam sufixos de arquivo começando com ponto para distinguir diferentes tipos de arquivos, ou seja, o Apache Web Server usa sufixos para definir o tipo MIME correto nos cabeçalhos de resposta.
fonte
Dois pensamentos:
Na
Naming Variables, Functions, and Files
seção dos Padrões de Codificação GNU, você encontrará:Embora a IMO diga "Você deve usar
_
porque o emacs" parece um pouco antiquada, ela está no documento de 'padrões'.Vamos supor, por um momento, que todos concordemos que o kernel do linux é o tudo-e-todo-o-todo * dos projetos do linux, e que as convenções usadas nele são o que poderia ser considerado uma convenção 'padrão'.
grep
-ing source para o kernel do linux, você encontrará o seguinte:Curiosamente, a fonte do git pesa 85% para traços, 3,8% para sublinhados e 11,1% para ambos.
A escolha é clara, o debate acabou. ;)
Opinião pessoal: uso traços por motivos estéticos e por turnos. Se você estiver trabalhando em uma equipe, faça um voto. Mas, para reiterar o que foi dito, seja consistente .
* ou "be_all e end_all" se você quiser
fonte
Caracteres que você não deve usar nos nomes de arquivos:
Delimitadores de caracteres que você deve usar para facilitar a leitura dos nomes:
(Em alguns casos, ":" tem um significado especial)
fonte
/
separador de caminho e o terminador de seqüência de caracteres \ 0 (ASCII zero).Para adicionar ao que os outros disseram, eu diria que, embora letras acentuadas e muitos caracteres especiais sejam legais nos nomes de arquivos, eles podem causar problemas em qualquer um dos seguintes cenários:
...
fonte
Atenha-se aos nomes de arquivos alfanuméricos. Evite espaços ou substitua espaços por sublinhados (_). Limite a pontuação nos nomes dos arquivos a pontos (.), Sublinhados (_) e hífens (-). Geralmente, os nomes de arquivos são minúsculos, mas eu uso o CamelCase quando tenho várias palavras no nome do arquivo.
Use extensões que indicam o tipo de arquivo. Os programas não precisam de extensões, pois o bit de execução é usado para indicar programas, e os shells sabem como executar programas de vários tipos. É comum, mas não é obrigatório, (.sh) para scripts de shell e (.pl) para scripts de perl. As extensões executáveis do Windows .bat, .com, .scr e .exe indicam executáveis do Windows no Unix.
Escolha um padrão e cumpri-lo. Mas não vai quebrar as coisas se você evitá-lo.
Arquivos ocultos (ou pontos) têm nomes que começam com um ponto. Normalmente, eles não aparecem nas listagens de diretórios. Use 'ls -a' para incluir os arquivos de ponto na lista.
fonte
Uma convenção é usar "_" para substituir espaços como separadores entre palavras. Outros caracteres podem ser usados para substituir espaços, mas há usos convencionais um pouco mais fortes para "-" e "." em nomes de caminho, então "_" é geralmente preferido.
Os espaços são legais nos nomes dos caminhos, mas convencionalmente são evitados, porque exigem a citação do nome do caminho ("foo bar") ou a fuga dos espaços (foo \ bar). Um shell script escrito corretamente citará variáveis que podem incluir espaços, principalmente nomes de caminho, mas não fazer isso é uma supervisão comum e é muita digitação extra ao executar um comando único digitado na linha de comando.
Usar "-" para separar grupos de números, como carimbos de data e hora ou números de série, é uma convenção comumente usada fora do contexto de sistemas de arquivos. Usando "." separar "extensões de arquivo" que indiquem que o tipo de arquivo é muito comum e algumas ferramentas importantes dependem dele. Por exemplo, o sistema de gerenciamento de pacotes no Red Hat Enterprise Linux e seus derivados, RPM, espera que os arquivos do pacote terminem com ".rpm". O tarball tradicional é um arquivo tar (".tar") que foi compactado com gzip (".gz") e, portanto, termina em ".tar.gz".
Então, juntando tudo isso, você geralmente termina com nomes de arquivos parecidos com "home_backup_2017-07-01.tar.gz"
fonte
use
-
ou_
para nomear arquivos_
para funções.
para extensõesfonte
Eu concordo com David Oneill que você deveria ir com alguma coisa.
Mas é bom que os arquivos possam ser classificados no mesmo diretório, portanto, não use o número 0 .. 10, mas o número 00 .. 10.
Ao usar datas em nomes, use um formato de data padrão como ISO8601 .
E não tenha medo de usar vários caracteres para separar partes lógicas no nome. Se você usar _ (que era 3 _), poderá simplificar os regexps nos nomes de arquivos posteriormente.
Portanto, seu exemplo pode ser algo assim:
Fácil de ler e fácil de analisar com scripts.
fonte
As palavras em um nome de arquivo podem ser separadas com
_
ou de-
acordo com a convenção do Unix.Se você usar
-
, é mais fácil digitar, evitando que você pressione SHIFT. Mas, como-
ocupa tão pouco espaço, é um pouco difícil ler separações de palavras em comparação com_
. Usar_
para separar palavras faz com que pareça muito mais limpo, pois_
ocupa mais espaço.No script de shell e em outra programação de computador,
_
são usados para variáveis com várias palavras, comoMY_ENVIRONMENT_FILE
. Fazendo os nomes de arquivos usar_
bem mantém consistente:MY_ENVIRONMENT_FILE=~/my_environment_file
.No desenvolvimento web,
-
é preferível para nomeação de arquivos. Um dos motivos é provavelmente porque o sublinhado nos links da web pode ocultar os sublinhados e dificultar a digitação manual do link da web.Na maioria dos editores e também em páginas da Web,
this_long_word
pode ser totalmente selecionado com um clique duplo, mas nãothis-long-word
.fonte
-
e_
ocupar exatamente o mesmo espaço! :)_
parece mais limpo, embora ocupe o mesmo espaço que-
. Eu deveria ter usado a palavra "aparentemente". Em relação ao_
e-
ao usar fontes monoespaçadas, a diferença pode ser melhor explicada com esta imagem analógica: evsc.net/v8/wp/wp-content/uploads/2010/09/…Definitivamente, existe um padrão para Linux. Se você olhar os nomes dos arquivos em qualquer sistema Linux, eles estarão em minúsculas com traços: / usr / bin / ssh-keygen. Isso é especificado em um dos documentos da Linux Standards Base que não consigo encontrar no momento. Também é especificado pelo GNU, que diz usar sublinhados para nomes de variáveis e traços para nomes de arquivos.
fonte
Para adicionar ao que todos os outros disseram:
1-Embora o Linux não se importe muito com extensões, o Windows sim, portanto, verifique se qualquer arquivo que você planeja fornecer a alguém possui a extensão apropriada.
O uso de 2-camel caps parece ser o mais fácil de usar scripts, sem caracteres especiais para se preocupar com seqüências de escape.
fonte