Como faço para o bash me avisar ao substituir um arquivo existente?

34

Eu acho que o título é bastante auto-explicativo. Tudo o que eu quero é que o bash me avise sempre que eu tentar sobrescrever um existente enquanto estiver usando cpou mv. Eu realmente aprecio alguma ajuda. :)

sayantankhan
fonte

Respostas:

43

Você deve usar o modo interativo, para garantir que você receba um 'aviso antes de substituir'

cp --interactive
mv --interactive

Ou em suma

cp -i
mv -i

Digite man cpou man mvna sua linha de comando para saber mais.

don.joey
fonte
2
Então, eu acho que esses comandos também funcionam como alias no meu .bashrc. Muito obrigado. Agradeço sua ajuda. :)
sayantankhan
3
De fato! Você pode anexar algo como alias rm='rm -i'ao seu .bashrc ou, melhor, ao seu .bash_aliases. Leia mais na postagem Como criar um alias permanente do Bash?
precisa
2
Mas eu apenas pensei em algo. E alguns dos scripts que escrevi. Eles usarão o alias cp e mv ou o normal?
sayantankhan
@ Bolt64 Depende de onde você colocou sua definição de alias, mas geralmente ela usa a definição normal.
Jan Warchoł
12

Você também deseja colocar set -o noclobberno seu .bashrc. Isso gerará um erro se você tentar sobrescrever um arquivo existente pelo redirecionamento de saída.

$ set -o noclobber
$ echo one > afile
$ echo two > afile
bash: afile: cannot overwrite existing file

Você pode forçar o redirecionamento para trabalhar com sintaxe especial:

$ echo two >| afile
$ cat afile
two

http://www.gnu.org/software/bash/manual/bashref.html#Redirecting-Output

Glenn Jackman
fonte