La apuesta más segura es consultar la entrada de Wikipedia para el conjunto de caracteres permitido para cualquier sistema operativo. Se puede encontrar desde aquí .
Por ejemplo, para la mayoría de los sistemas basados en Unix, el conjunto de caracteres permitido es de 8 bits y el carácter reservado es el carácter nulo (NUL, '\0'
). Sin embargo, no es una buena práctica usar los caracteres especiales en los nombres de los archivos, ya que representan un problema al eliminarlos.
Por ejemplo, puedo tener un nombre de archivo como -ramesh.txt
e intento eliminarlo como se muestra a continuación.
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
Necesito eliminar el archivo como,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Se pueden encontrar más detalles de esta respuesta también .
/
Creo que en Linux y OS-X solo está prohibido el conjunto ASCII imprimible. Algunos caracteres (como los metacaracteres de shell *?!
) causarán problemas en las líneas de comando y requerirán que el nombre de archivo se cite o se escape correctamente.
Los sistemas de archivos de Linux como ext2, ext3 son independientes del conjunto de caracteres (creo que simplemente lo tratan más o menos como una secuencia de bytes, solo nulos y /
están prohibidos). Esto significa que puede almacenar nombres de archivo en codificación UTF-8. Creo que depende del shell u otra aplicación saber qué codificación usar para convertir correctamente el nombre de archivo para su visualización o procesamiento.
Para concluir, el problema no está en usar los caracteres especiales para los nombres de archivo sino en cómo manejarlos.