Elimine el archivo de Linux cuyo nombre tenga un conjunto de caracteres sensibles al shell

Elimine el archivo de Linux cuyo nombre tenga un conjunto de caracteres sensibles al shell

Creé un archivo llamado \;:$"\'para probar un software mío. Terminé con un error porque no puedo eliminar la propiedad del archivo. Estoy tratando de encontrar una combinación de caracteres precisa para eliminarlo rm, pero no encuentro la manera.

rm \\;:$\"\\\'
rm: cannot remove `\\': No such file or directory

rm "\\"\;:$\"\\\'
rm: cannot remove `\\;:$"\\\'': No such file or directory

rm '\;:$"\'''
rm: cannot remove `\\;:$"\\': No such file or directory

(Este último intento me mató)

Y muchos muchos otros intentos. ¡Se necesita mano amiga!

Respuesta1

Si el nombre del archivo es exactamente \;:$"\', entonces debería poder eliminarlo con:

rm \\\;\:\$\"\\\'

Simplemente escapa de todos los personajes con un solo \.

Respuesta2

Puede intentar ls -lien el directorio que contiene el archivo y eliminar el archivo con el inodo devuelto emitiendofind . -inum <inode-number> -exec rm -i {} \;

Agregué el -icomando de búsqueda para avisar antes de eliminarlo en caso de que el comando de búsqueda encuentre otro archivo del esperado.

Además del comentario, intenté crear y eliminar el archivo yo mismo:

ls -l
total 0
-rw-r--r-- 1 test test 0 mrt 24 14:11 \;:$"\'

[test@testhost +1] /tmp/ff$ rm \\\;\:\$\"\\\' 

[test@testhost +1] /tmp/ff$ ls -l
total 0

Respuesta3

Puede utilizar comillas simples y luego sólo tendrá que preocuparse por citar las comillas simples.

rm '\;:$"\'\'

En uso interactivo, puede simplemente usar la función de tabulación, comenzando con '\o \\. Completar tabulación desde '\rendimientos '\;:$"\'\''', ya que bash simplemente reemplaza cada comilla simple incrustada con '\''. Finalización de pestañas desde nada o desde \\rendimientos \\\;\:\$\"\\\'.

Respuesta4

Si no está limitado a usar bash u otro entorno de script de shell, una manera fácil de eliminar dicho archivo probablemente sería escribir un programa corto que simplemente llame unlink()en su idioma favorito o usar un administrador de archivos como Gnome Commander o Midnight. Commander para eliminar el archivo manualmente. La última opción le permitiría seleccionar el archivo en cuestión y eliminarlo sin tener que ingresar el nombre del archivo en ningún lugar, lo que eliminaría la posibilidad de que los metacaracteres tengan algún significado especial.

información relacionada