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 rc
familia.
Igual por:
rm "\$option[value='2016']"
En rc
shells 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.