Como criar um arquivo com um caractere “#” no nome no Unix?

5

Já experimentei muitos comandos para criar um arquivo e excluir um arquivo com um caractere # , mas isso não funciona. Alguém pode me dizer o comando para criar e, em seguida, excluir um arquivo que começa com # ?

    
por Hennes 10.04.2011 / 06:58

2 respostas

11

As duas maneiras canônicas de criar / excluir arquivos com "personagens engraçados" são

  1. Citar , como o alex mostrou. Você pode usar aspas simples ou duplas, dependendo das suas necessidades de expansão. Uma barra invertida pode ser usada para escapar de um único personagem engraçado. Isso funciona desde que o nome do arquivo não se pareça com uma opção (começa com um traço).
  2. Se o arquivo parecer uma opção, adicione um caminho : rm ./- "./-rf ."

As versões modernas dos utilitários Unix geralmente suportam o traço duplo para indicar o final das opções. Em tais sistemas, rm -- - remove um arquivo chamado - .

Note que você não pode criar ou remover arquivos com uma barra ou NCA ASCII em seu nome. Se você tem esse arquivo (eu já vi), alguma coisa no seu sistema de arquivos está terrivelmente errada.

Em seu caso particular com o hash # , o problema deriva do shell interpretando uma palavra que começa com # como iniciando um comentário do shell . Um bom shell permite desativar esse recurso de shell, chamado comentários interativos :

  • zsh: unsetopt interactivecomments
  • bash: shopt -u interactive_comments

Com isso, você pode simplesmente touch #; rm # sem problemas.

    
por 10.04.2011 / 15:42
5

Para fazer ...

touch "#file"

Para excluir ...

rm "#file"
    
por 10.04.2011 / 07:01