Depois do caso que aconteceu com o rapaz que deletou todos os dados da empresa por causa de um comando errado nós temos que ficar mais espertos com nossos códigos e principalmente com scripts prontos que baixamos de terceiros, por exemplo, scripts do Gist, dentre outros.
Importante: Sempre leia os comandos antes de executar scripts de terceiros.
Deletando arquivos via terminal
O comando que o rapaz executou em específico foi
Vamos por parte:
rm
- é o comando pra deletar arquivos via terminal.
-r
- faz com que delete os arquivos recursivamente, ou seja, deleta tudo das pastas e subpastas.
f
- indica que a ação deve ser forçada, ou seja, não envia nenhuma mensagem de solicitação ou qualquer outro aviso.
Em resumo:
Deleta tudo das pastas e subpastas sem avisar nada.
Julio Neves em seu artigo Papo de Botequim dá uma dica sobre como contornar esse problema da seguinte forma:
Quando usamos barra invertida ele “anula” o parâmetro seguinte, no caso o *
.
O mesmo efeito pode ser obtido no comando a seguir:
Uma outra dica que eu falo no meu post Renomeando comandos, é você editar o seu arquivo ~/.bashrc
, escrevendo o seguinte comando:
Reinicie o terminal para surtir efeito, ou digite
A partir de agora quando você usar o comando rm
ele vai pedir confirmação antes de deletar.
Ou você pode desativar o comando enviando uma mensagem. Edite o ~/.bashrc
.
Redirecionamento perigoso
Quando digitamos o comando
Nós redirecionamos a saída do comando ls
para o arquivo.txt. Até ai tudo bem.
O perigo vem agora:
Nós redirecionamos a saída do arquivo.txt para ele próprio. Pronto, acabamos de perder o conteúdo do nosso arquivo.
Isto é perigoso porque se você fizer isso num arquivo importante. Já era!!!
Outro exemplo:
O conteúdo do arquivo.txt é texto.
Se você fizer
Agora o conteúdo do arquivo.txt é palavra.
Solução
Uma solução para estes problemas é você usar >>
. Assim, ele insere o novo conteúdo numa nova linha de texto, mantendo o conteúdo original.
Fazendo
Teremos