É correto usar determinados caracteres especiais, como +
, &
, '
, .
(ponto) e ,
(vírgula), basicamente, em nomes de arquivos.
Entendo que você pode usar -
e _
sem problemas, mas, ao fazer algumas pesquisas, não consegui encontrar algo definitivo sobre os outros símbolos; alguns dizem que você pode, outros dizem que não, e outros dizem que "não é incentivado" a usá-los (o que isso significa).
filenames
unix-philosophy
Chris Klein
fonte
fonte
Respostas:
Sim.
Correto, mas não necessariamente aconselhável ou conveniente.
Você pode usar qualquer caractere, exceto nulo e
/
dentro de um nome de arquivo nos modernos sistemas de arquivos Unix e Linux.Você pode usar pontuação ASCII . Alguns utilitários usam paradas ( ponto ) e vírgulas nos nomes dos arquivos que eles criam.
Você pode usar caracteres de controle ASCII , no entanto, isso é desaconselhável, pois é improvável que sejam exibidos de forma aceitável e difícil de usar.
Você pode usar metacaracteres de shell , como e comercial ASCII e apóstrofo ASCII. No entanto, isso é inconveniente e requer que, ao construir comandos, você tenha especial cuidado para citar ou escapar desses caracteres.
Você pode usar caracteres de vários bytes usando uma variedade de codificações. Cabe ao shell e / ou utilitários interpretar e exibir corretamente caracteres não ASCII. É aconselhável restringir-se a uma codificação popular como UTF-8 e definir o código do idioma adequadamente.
Você terá menos problemas ao usar caracteres imprimíveis ASCII, limitando o conjunto de caracteres de pontuação a caracteres que não sejam metacaracteres do shell e não inicie um nome com um hífen (ou uma parada - a menos que você queira ocultar o arquivo).
fonte
Como os outros declararam, nos sistemas modernos Unix / Linux, os nomes de arquivos podem conter qualquer caractere, exceto
\0
(NUL) e/
(barra).Além disso, o padrão POSIX define um conjunto de caracteres portátil para nomes de arquivos:
O
pathchk
utilitário do GNU Coreutils verifica isso quando chamado com a-p
opção, e a-P
opção avisa sobre nomes de arquivos vazios (que não são válidos, mas podem ser passados como argumento parapathchk
) e nomes de arquivos começando com um hífen (-
).fonte
A aposta mais segura é consultar a entrada da Wikipedia para o conjunto de caracteres permitido para qualquer sistema operacional. Pode ser encontrado aqui .
Por exemplo, para a maioria dos sistemas baseados em unix, o conjunto de caracteres permitido é um conjunto de 8 bits e o caractere reservado é o caractere nulo (NUL,
'\0'
). No entanto, não é uma boa prática usar os caracteres especiais nos nomes dos arquivos, pois eles apresentam um problema ao removê-los.Por exemplo, posso ter um nome de arquivo como
-ramesh.txt
e tento removê-lo como abaixo.Eu preciso excluir o arquivo como,
Mais detalhes podem ser encontrados nesta resposta também .
Portanto, para concluir, o problema não está em usar caracteres especiais para nomes de arquivos, mas em como lidar com eles.
fonte
-
mas apenas para ser preciso: 1) você definitivamente não precisa das aspas em torno deste nome de arquivo; 2) em vez de usar o--
argumento especial, você pode fazer exatamente o querm
sugere:rm ./-ramesh.txt
portanto, não precisa fazê-lo exatamente como você sugere.Sua pesquisa está quase certa. É possível usar caracteres especiais nos nomes dos arquivos, mas não é aconselhável, pois esses caracteres têm um significado especial. As convenções de nomenclatura de arquivos no Linux descrevem outras restrições aos nomes dos arquivos, como "Os nomes dos arquivos nunca devem começar com um hífen".
Exemplo simples de execução de operações de linha de comando com caracteres especiais nos nomes dos arquivos.
Como observação pessoal, prefiro evitar caracteres especiais nos nomes dos arquivos, porque eles requerem atenção especial quando esses arquivos são usados para qualquer processamento. Assim, removendo a preocupação de lidar com caracteres especiais do processo de desenvolvimento.
fonte
-
,_
e.
(DOT) em nomes de arquivos?