En general es difícil crear un archivo cuyo nombre comience con guión del medio (-), ya que la mayoría de los comandos lo interpretan como un caracter especial para indicar opciones y parámetros. Pero a veces puede suceder que al escribir mal un comando, terminemos creando un archivo cuyo nombre comienza con guión. En este artículo presento el truco necesario para poder borrarlo, cortesía de man rm.

Como mencioné en la introducción, en general es difícil crear un archivo con un nombre que comience con guión del medio:

[emi@hal9000 test]$ touch -pepe
touch: invalid option -- 'p'
Try `touch --help' for more information.

Ni siquiera es posible escapando el caracter especial (-):

[emi@hal9000 test]$ touch \-pepe
touch: invalid option -- 'p'
Try `touch --help' for more information.

Aunque hay ciertas formas, por ejemplo redireccionando la salida estándar:

[emi@hal9000 test]$ touch prueba
[emi@hal9000 test]$ ll
total 0
-rw-rw-r-- 1 emi emi 0 Jun 24 09:54 prueba
[emi@hal9000 test]$ cat prueba > -pepe
[emi@hal9000 test]$ ll
total 0
-rw-rw-r-- 1 emi emi 0 Jun 24 09:55 -pepe
-rw-rw-r-- 1 emi emi 0 Jun 24 09:54 prueba

También es posible guardando un archivo desde el editor nano:

[emi@hal9000 test]$ nano

Presionar Ctrl+O para guardar, y especificar un nombre de archivo que comience con guión del medio:

File Name to Write: -prueba2

Presionar Ctrl+X para cerrar el editor, el archivo se ha creado con éxito:

[emi@hal9000 test]$ ll
total 4
-rw-rw-r-- 1 emi emi  0 Jun 24 09:55 -pepe
-rw-rw-r-- 1 emi emi  0 Jun 24 09:54 prueba
-rw-rw-r-- 1 emi emi 10 Jun 24 10:04 -prueba2

Si ahora deseamos eliminar alguno de estos archivos, cuyo nombre comienza con guión del medio, utilizando el comando rm, parecerá imposible:

[emi@hal9000 test]$ rm -pepe
rm: invalid option -- 'p'
Try `rm ./-pepe' to remove the file `-pepe'.
Try `rm --help' for more information.

Bien, de acuerdo al manual del comando rm, hay dos técnicas posibles para borrar archivos que comienzan con guiones. La primera consiste en indicarle que deje de interpretar parámetros y opciones, utilizando la siguiente notación:

[emi@hal9000 test]$ rm -- -pepe
rm: remove regular empty file `-pepe'? y
[emi@hal9000 test]$ ll
total 4
-rw-rw-r-- 1 emi emi  0 Jun 24 09:54 prueba
-rw-rw-r-- 1 emi emi 10 Jun 24 10:04 -prueba2

Volviendo al problema de crear un archivo cuyo nombre comienza con guión, utilizando esta misma notación es posible hacerlo. En general, los comandos GNU/Linux más comunes utilizan esta instrucción de doble guión seguida por uno o más espacios en blanco ( -- ) para indicar que se deje de interpretar parámetros u opciones.

La segunda técnica es más común y sirve para nombres de archivo que comiencen con cualquier tipo de caracteres especiales que puedan ser interpretados por la shell. Consiste en especificar el nombre de archivo utilizando el path (ruta) absoluto o relativo:

[emi@hal9000 test]$ rm /tmp/test/-prueba2
rm: remove regular file `/tmp/test/-prueba2'? y
[emi@hal9000 test]$ ll
total 0
-rw-rw-r-- 1 emi emi 0 Jun 24 09:54 prueba
[emi@hal9000 test]$ cat prueba > --prueba5
[emi@hal9000 test]$ ll
total 0
-rw-rw-r-- 1 emi emi 0 Jun 24 09:54 prueba
-rw-rw-r-- 1 emi emi 0 Jun 24 10:14 --prueba5
[emi@hal9000 test]$ rm ./--prueba5
rm: remove regular empty file `./--prueba5'? y
[emi@hal9000 test]$ ll
total 0
-rw-rw-r-- 1 emi emi 0 Jun 24 09:54 prueba

¡Espero que sea útil!


Tal vez pueda interesarte


Compartí este artículo