¿Cómo eliminar una carpeta que comienza con “$”?

¿Cómo eliminar una carpeta que comienza con “$”?

Creé un directorio llamado "$pattern" y ahora, cuando intento eliminarlo, dice

patrón: variable indefinida.

Yo he tratado:

$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"

Respuesta1

$, espacio 'y [son caracteres especiales en la mayoría de los shells. Para eliminar su significado especial, debe utilizar los mecanismos de cotización del shell.

ElLa sintaxis de las citas varía mucho según el shell..

En todos los shells que conozco, puede usar comillas simples para citar todos los caracteres, excepto comillas simples, barra invertida y nueva línea (en shells tipo Bourne, también cita los dos últimos, excepto en los acentos abiertos \en algunos).

rm -r '$pattern'

Debería funcionar en los shells más comunes.

rm -r \$pattern

Funcionaría (excepto las comillas invertidas internas para las tipo Bourne) en todos los shells excepto en los de la rcfamilia.

Igual por:

rm "\$option[value='2016']"

En rcshells tipo -, usarías:

rm '$option[value=''2016'']'

Respuesta2

Si el directorio está vacío:

rmdir \$pattern

De lo contrario:

rm -r \$pattern

(Eliminará recursivamente cualquier archivo que contenga la carpeta)

Respuesta3

Cuando necesite operar en un archivo que contiene caracteres especiales, una opción es usar la función de autocompletar de bash: comience a escribir su comando (en este caso rmdir) y luego presione Tabvarias veces. Esto recorrerá todos los archivos/directorios en el directorio actual, escapando automáticamente de todos los caracteres especiales.

Esto también funciona bien si está operando con nombres de archivos muy largos.

Respuesta4

Simplemente escape el carácter usando "\", esta también es una práctica común utilizada al escribir consultas SQL en aplicaciones web para evitar la ejecución de comandos de bases de datos distintos de los previstos.

información relacionada