Como remover uma pasta que começa com “$”?

Como remover uma pasta que começa com “$”?

Eu criei um diretório chamado "$pattern" e agora sempre que tento removê-lo, ele diz

padrão: variável indefinida.

Eu tentei:

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

Responder1

$, espaço 'e [são caracteres especiais na maioria dos shells. Para remover seu significado especial, você deve usar os mecanismos de cotação do shell.

Oa sintaxe de citação varia muito com o shell.

Em todos os shells que eu conheço, você pode usar aspas simples para citar todos os caracteres, exceto aspas simples, barra invertida e nova linha (em shells do tipo Bourne, ele também cita os dois últimos, exceto em crases para \alguns).

rm -r '$pattern'

Deve funcionar nos shells mais comuns.

rm -r \$pattern

Funcionaria (exceto dentro de backticks para os do tipo Bourne) em todos os shells, exceto os da rcfamília.

O mesmo para:

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

Em rcshells semelhantes a -, você usaria:

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

Responder2

Se o diretório estiver vazio:

rmdir \$pattern

De outra forma:

rm -r \$pattern

(Isso excluirá recursivamente qualquer arquivo que a pasta contenha)

Responder3

Quando você precisar operar em um arquivo que contém caracteres especiais, uma opção é usar o recurso de preenchimento automático do bash: comece digitando seu comando (neste caso rmdir) e depois pressione Tabvárias vezes. Isso percorrerá todos os arquivos/diretórios no diretório atual, escapando automaticamente de todos os caracteres especiais.

Isso também funciona bem se você estiver operando com nomes de arquivos muito longos.

Responder4

Você simplesmente escapa do caractere usando um "\", esta também é uma prática comum usada ao escrever consultas SQL em aplicações web para evitar a execução de comandos de banco de dados diferentes dos pretendidos.

informação relacionada