Как заставить bash предупредить меня при перезаписи существующего файла?

34

Я думаю, что название довольно очевидно. Все, что я хочу, это bash, чтобы предупредить меня всякий раз, когда я пытаюсь перезаписать существующее при использовании cpили mv. Буду очень признателен за помощь. :)

sayantankhan
источник

Ответы:

43

Вы должны использовать интерактивный режим, который гарантирует, что вы получите «запрос перед перезаписью»

cp --interactive
mv --interactive

Или короче

cp -i
mv -i

Введите man cpили man mvв командной строке, чтобы узнать больше.

don.joey
источник
2
Так что я думаю, что эти команды также используются как псевдонимы в моем .bashrc. Большое спасибо. Ценю твою помощь. :)
Саянтанхан
3
Верно! Вы можете добавить что-то вроде alias rm='rm -i'вашего .bashrc или лучше .bash_aliases. Подробнее читайте в посте Как создать постоянный псевдоним Bash?
don.joey
2
Но я просто подумал о чем-то. Как насчет некоторых из сценариев, которые я написал. Будут ли они использовать псевдоним cp и mv или обычный?
Саянтанхан
@ Bolt64 Это зависит от того, где вы поместили определение псевдонима, но обычно оно будет использовать нормальное.
Ян Вархол
12

Вы также хотите вставить set -o noclobberсвой .bashrc. Это вызовет ошибку, если вы попытаетесь перезаписать существующий файл путем перенаправления вывода.

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

Вы можете заставить перенаправление работать со специальным синтаксисом:

$ echo two >| afile
$ cat afile
two

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

Гленн Джекман
источник