Jak sprawić, aby bash ostrzegał mnie przed zastąpieniem istniejącego pliku?

34

Myślę, że tytuł jest dość oczywisty. Wszystko, czego chcę, to bash, aby ostrzec mnie za każdym razem, gdy próbuję zastąpić istniejący podczas korzystania z cplub mv. Byłbym wdzięczny za pomoc. :)

sayantankhan
źródło

Odpowiedzi:

43

Powinieneś użyć trybu interaktywnego, który zapewnia, że ​​pojawi się „monit przed zastąpieniem”

cp --interactive
mv --interactive

Lub w skrócie

cp -i
mv -i

Wpisz man cplub man mvw wierszu polecenia, aby dowiedzieć się więcej.

don.joey
źródło
2
Sądzę więc, że te polecenia również działają jako aliasy w moim .bashrc. Wielkie dzięki. Doceniam Twoją pomoc. :)
sayantankhan
3
W rzeczy samej! Możesz dołączyć coś takiego alias rm='rm -i'do .bashrc lub lepiej .bash_aliases. Przeczytaj więcej w poście Jak utworzyć trwały alias Bash?
don.joey
2
Ale właśnie coś wymyśliłem. Co z niektórymi skryptami, które napisałem. Czy użyją aliasu cp i mv czy normalnego?
sayantankhan
@ Bolt64 To zależy od tego, gdzie umieścisz swoją definicję aliasu, ale zwykle będzie ona używać normalnej.
Jan Warchoł
12

Chcesz także umieścić set -o noclobberswój .bashrc. To spowoduje błąd, jeśli spróbujesz zastąpić istniejący plik przez przekierowanie wyjścia.

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

Możesz zmusić przekierowanie do pracy ze specjalną składnią:

$ echo two >| afile
$ cat afile
two

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

Glenn Jackman
źródło