Is the dot-comma character (;) allowed in file names?

2

Is the " ; " character allowed in the file name? In windows you can use the character " ; " in naming of files with no problem, but I do not know if the same rule is for Mac or Linux. I researched file naming, and I found several topics talking about other characters, however, I did not find anything talking about " ; ".

    
asked by anonymous 15.08.2018 / 06:53

2 answers

4

In principle, it can, but if it is to be used by the command line, it needs "escape" or quotes in Unix. Although it is accepted in the filename, in Shell it has a special meaning, it separates commands. In Windows it is accepted without restrictions.

As a complement, Wikipedia has a very good compendium of file name information:

  

Article: Filename .


In particular, I've translated this table listing the special characters in the most common (and not all) filesystems:

 /     barra            Usada como separador de caminho em sistemas Unix-like,
                        Windows e Amiga (a variável SwitchChar do DOS pode ser
                        setada para '/' e o COMMAND.COM considerará como indicador
                        de flag, mas o DOS e o Windows mesmos aceitam como
                        separador na API)

 \     barra invertida  Usada como separador padrão no DOS, OS/2 e Windows (mesmo
                        com SwitChar configurado para '-'; é aceito em nomes Unix)

 ?     interrogação     É usado como coringa em Unix, Windows, Amiga, e representa
                        um caractere único. É permitido em nomes Unix

 %     porcentagem      É um coringa em RT-11, define um caractere único. Em Windows
                        pode ser usado

 *     asterisco        Usado como coringa em Unix, DOS, RT-11, VMS e Windows.
                        Representa uma sequência de caracteres em Unix, Windows, DOS,
                        ou qualquer sequência na extensão (*.* significa "todos os
                        arquivos"). Em Unix, pode ser usado nos nomes de arquivo

 :     dois pontos      Serve para determinar o ponto de montagem no Windows, o
                        dispositivo virtual ou físico no Amiga, RT-11 e VMS e é o
                        separador de caminho no MacOS Clássico. No VMS, indica um
                        nome de nó DECnet quando usado em dobro (equivale a um endereço
                        NetBios. No Windows ainda é usado para separar um Data Stream
                        do nome de arquivo em NTFS

 |     barra vertical   Define um redirecionamento de software em Unix, DOS e Windows;
        ou pipe          Permitido em nomes Unix

 "     aspas duplas     Usadas para delimitar nomes com espaços em Windows

 <     menor que        Usado para redirecionar entrada, permitido em Unix

 >     maior que        Usado para redirecionar saída, permitido em Unix

 .     ponto            Permitido, mas a última ocorrência indica separador de extensão
                        em VMS, DOS, e Windows. Em outros sistemas, normalmente faz parte
                        do nome, e pode ter mais de uma ocorrência seguida. Normalmente, em
                        Unix indica que o nome deve ser escondido da listagem

       espaço           É permitido, mas como também é um separador de parâmetros de linha
                        de comando, deve-se delimitar o nome com aspas para diferenciar dos
                        parâmetros

Important: In Unix, although accepted, <>|\:()&;#?* faults usually need to be "escaped" with backslashes, or delimited with quotation marks on the command line:

Ex: five\ and\ six\<seven or even "five and six<seven" .


Considerations:

Just because you can use certain characters does not mean you should use them. The recommendation is to use "less common" characters only where there is a reason that can not be circumvented by other means, such as normalization and sanitization.

Thinking about interoperability, even using allowed characters, simple case-sensitivity is a very common problem when exchanging files between different OSes, because in Windows there is no differentiation, and a considerable number of other OSes there. As the use of special characters also varies, a lot of headache is avoided if it is limited to a simplified nomenclature (staying in the range a-z0-9_. for example is a good request).

Accentuation and formatting make sense for things manipulated only by the end user (cake recipe, cover letter, washing machine financing installment spreadsheet, these things), but files that need to be processed by a system deserve careful bigger. Personally, I think it's a crime to do as I see a lot here on the site, to make a point of keeping original file upload names, when it would be much simpler to store the names in the DB and simply put a sequential string in the filesystem.     

15.08.2018 / 13:02
5

In both cases, linux and mac, only the / and escape (null) characters are completely blocked, all others can be used, although not recommended.

If you create a file with a semicolon, or another unconventional character, you will need a %code% to access the file manually.

Example:

Meu;arquivo.txt

To read:

cat Meu\;arquivo.txt

Even allowing almost all characters, to avoid access problems it is recommended to use only the following:

  • a-z
  • A-Z
  • 0-9
  • underline (_)
  • dash (-)
  • dot (.)

Another more extreme example:

'"!@#$%&*()-_+=[{]}~^?;:><,..txt

How to access:

cat \'\"\!@#\$%\&\*\(\)-_+\=\[\{\]\}~\^\?\;\:\>\<\,..txt
    
15.08.2018 / 13:13