É 1.abc! ''! + 123 um nome de arquivo válido?

4

Este é um nome de arquivo válido 1.abc!''!+123 no Ubuntu?

Eu emiti o comando

rm 1.abc!''!+123 

e recebi uma mensagem de erro

-bash: !''!+123: event not find

Por quê? Como excluir o arquivo?

    
por Gaurav Agarwal 01.03.2013 / 18:41

2 respostas

8

Apenas rm '1.abc!''!+123' . Nota sobre '

Nota : A citação é usada para remover o significado especial de certos caracteres ou palavras para o shell. As citações podem ser usadas para desabilitar o tratamento especial de caracteres especiais, evitar que palavras reservadas sejam reconhecidas como tal e evitar a expansão de parâmetros. Alguns caracteres especiais são: $ '"!

    
por Mostafa Shahverdy 01.03.2013 / 18:44
7

Sim, esse é um nome de arquivo válido. No entanto, o shell trata esses caracteres como especiais, portanto, para usá-los em um comando de arquivo, você precisará evitá-los usando ' :

rm '1.abc!''!+123'

De acordo com a bash manpage ,

  

! Inicia uma substituição de histórico, exceto quando seguido por um espaço em branco,          nova linha, retorno de carro, = ou ((quando a opção de shell extglob          é ativado usando o shopt builtin).

e

  

Substituição de Comando

     

A substituição de comandos permite a saída de um comando para substituir   nome do comando. Existem duas formas:

$(command)
     

ou

'command'

Portanto, se você quiser usar os caracteres ! ou ' como caracteres regulares, será necessário evitá-los usando ' , para que o shell não tente iniciar um histórico ou uma substituição de comando.

    
por iBelieve 01.03.2013 / 18:52