pedir confirmação quando o arquivo for substituído usando um redirecionamento

5

Sou um descuidado motorista de terminal com medo de excluir arquivos acidentalmente, portanto, usando alguns aliases como alias rm='rm -i' para rm , mv , cp . Como posso obter um comportamento de confirmação semelhante para redirecionamentos de arquivos (por exemplo, echo "I'm silly" > very_important_file.txt ).

O caso comum é que eu costumo usar replace ( > ) em vez de acrescentar ( >> ) e acabei acidentalmente excluindo alguns arquivos importantes. Quais são suas sugestões?

    
por none 17.08.2012 / 17:33

1 resposta

6

Eu não acho que haja uma maneira de obter o comportamento exato de -i , mas eu tenho noclobber set que impede a substituição de arquivos já existentes.

Veja esta página para um exemplo de uso.

Você pode experimentar o comando assim (e, se gostar, incluí-lo no seu arquivo de inicialização)

$ set -o noclobber

Exemplo:

$ ls > ls.out
$ set -o noclobber
$ ls > ls.out
bash: ls.out: cannot overwrite existing file
$

Atualizar :

Como @jsbillings menciona em um comentário útil abaixo, para substituir o noclobber em bash , pode-se usar >|

Como uso principalmente o tcsh (um csh variant), o operador de substituição é >!

    
por 17.08.2012 / 17:35