¿No se pueden eliminar los archivos con el nombre del signo $ usando Linux?

¿No se pueden eliminar los archivos con el nombre del signo $ usando Linux?

Aquí está mi lscomando, que muestra la lista de archivos en mi directorio actual:

rper:  ls -l

$commandoutput[0]  
file.txt

Intenté eliminar $commandoutput[0]la línea usando rm -rf $commandoutput[0], pero muestra el siguiente error. ¿Como puedo quitarlo?

rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.

Respuesta1

Como alternativa a la respuesta de @RomanPerekhrest, esto también funcionará:

rm '$commandoutput[0]'  

ya que las comillas simples evitarán la expansión variable.

Otra forma es empezar a escribir rm $y luego presionar Tab; el shell completará automáticamente el nombre del archivo y aplicará caracteres de escape según sea necesario.

Respuesta2

Escape $(y preferiblemente [, ]) inicie sesión en su nombre de archivo con barra invertida \:

rm -rf \$commandoutput\[0\]

Respuesta3

Si bien otros han respondido esta pregunta, otra forma de hacerlo sería buscando el inodo del archivo y usando buscar y eliminar ejecutando para eliminar el archivo.

ls -il

Salida de muestra:

781956 drwx------  3 viv viv 4096 2017-07-7 15:05 $commandoutput[0] 

La primera columna debe ser el inodo; en el ejemplo anterior, ejecute:

find . -inum 781956 -exec rm -i {} \;

Respuesta4

Otra forma sencilla es utilizar un comodín y rm -i:

rm -i *command*

Esto, para todos los nombres de archivos que contengan la palabra "comando", le preguntará si desea eliminar el archivo. Luego podrá comprobarlo antes de eliminarlo.

información relacionada