In principle, you can, but if you’re going to use it by command line, you need "escape" or Unix quotes. Although accepted in the filename, in Shell it has a special meaning, it separates the commands. In Windows it is accepted without restrictions.
As a complement, Wikipedia in English has a very good compendium of information about file names:
Article: Filename.
In particular, I translated this table which lists the characters considered special in filesystems more common (and others not so much):
/ 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, characters <>|\:()&;#?*
usually need to be "escapes" with backslash, or delimited with command line quotes:
Ex: five\ and\ six\<seven
or even "five and six<seven"
.
Considerations:
The simple fact that 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 cannot be circumvented by other means, such as standardization and sanitization.
Thinking about interoperability, even using permissible characters, the simple mix of upper and lower case is a very common problem when exchanging files between different Oses, because in Windows there is no differentiation, and in considerable parde of the other Oses there are. As the use of special characters also varies, it avoids a lot of headache if limited to a simplified nomenclature (stay 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, presentation letter, spreadsheet of installments of the financing of the washing machine, these things), but files that must be processed by a system deserve greater care. Personally, I find it a crime to do as I see a lot here on the site, to make sure to keep original names in file upload, when it would be much simpler to store the names in DB and simply put a sequential string in the filesystem.
https://answall.com/questions/184020/por-que-em-filenames-and-pastures somethings-characters-ainda-n%C3%a3o-s%C3%a3o-accepted
– Bacco