¿Cómo trato con un nombre de archivo que comienza con el carácter de guión (-)?

De alguna manera, en algún momento, accidentalmente creé un archivo en mi directorio personal llamado ‘-s’. Es alrededor de 500 kb y no tengo idea si contiene datos importantes o no. No puedo encontrar ninguna forma de hacer nada con este archivo, porque cada comando que uso para tratar de ver, copiar o moverlo interpreta el nombre del archivo como un argumento.

He tratado de ponerlo entre comillas, escapándome con una barra invertida, una combinación de ambos, nada parece funcionar.

Además, cuando les hice esta pregunta por primera vez a mis compañeros de trabajo, nos quedamos perplejos por un tiempo hasta que alguien finalmente escuchó y preguntó “¿por qué no lo renombra?” Después de explicarle que cp y mv piensan que el nombre de archivo es un argumento para que no funcione, dijo “no, no desde la línea de comando, hazlo desde Gnome”. Tímidamente seguí su consejo, y funcionó. SIN EMBARGO, aún estoy interesado en cómo resolverías este dilema si no tuvieras un administrador de ventanas y la línea de comando fuera la única opción.

Puedes consultarlo usando ./-filename o algún comando que te permitirá ponerlo después del doble guión:

 rm -- -filename 

Puedes deshacerte de él con:

 rm ./-s 

El comando rm (al menos en Ubuntu 10.04) incluso te dice:

 pax@pax-desktop:~$ rm -w rm: invalid option -- 'w' Try `rm ./-w' to remove the file `-w'. Try `rm --help' for more information. 

La razón por la que funciona es porque rm no cree que sea una opción (ya que no comienza con - ) pero sigue refiriéndose al archivo específico en el directorio actual .

Podría usar, por ejemplo:

 rm -- -file 

además de usar rm , si conoce un idioma, también puede usarlos. No se ven afectados por tales verrugas de concha.

Ruby (1.9+)

 $ ruby -rfileutils -e 'FileUtils.rm("-s")' 

o

 $ ruby -e 'File.unlink("-s")'