Comment faire en sorte que bash m'avertisse lors de l'écrasement d'un fichier existant?

34

Je pense que le titre est assez explicite. Tout ce que je veux, c'est que bash me prévienne à chaque fois que je tente d'écraser un existant en utilisant cpou mv. J'apprécierais vraiment de l'aide. :)

sayantankhan
la source

Réponses:

43

Vous devez utiliser le mode interactif qui vous assure d’obtenir une "invite avant de remplacer"

cp --interactive
mv --interactive

Ou en bref

cp -i
mv -i

Tapez man cpou man mvsur votre ligne de commande pour en savoir plus.

don.joey
la source
2
Donc, je suppose que ces commandes vont aussi comme alias dans mon .bashrc. Merci beaucoup. Apprécier ton aide. :)
sayantankhan
3
Effectivement! Vous pouvez ajouter quelque chose comme alias rm='rm -i'votre .bashrc ou mieux vos .bash_aliases. Lire la suite dans l'article Comment créer un alias Bash permanent?
don.joey
2
Mais je viens de penser à quelque chose. Qu'en est-il des scripts que j'ai écrits? Vont-ils utiliser les alias cp et mv ou celui normal?
Sayantankhan
@ Bolt64 Cela dépend de l'endroit où vous placez votre définition d'alias, mais habituellement, il utilisera la définition normale.
Jan Warchoł
12

Vous voulez aussi mettre set -o noclobberdans votre .bashrc. Cela provoquera une erreur si vous essayez d'écraser un fichier existant par la redirection de sortie.

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

Vous pouvez forcer la redirection à utiliser une syntaxe spéciale:

$ echo two >| afile
$ cat afile
two

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

Glenn Jackman
la source