web-dev-qa-db-fra.com

comment arrêter cp: écraser './xxx'? rapide

Comment puis-je empêcher la commande cp de l'inviter à écraser? Je veux écraser tous les fichiers sans avoir à retourner au terminal. Comme ce sont des fichiers volumineux et prennent un certain temps à terminer.

J'ai essayé d'utiliser l'option -f. Il demande toujours si je veux écraser.

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y
19
nelaaro

En plus d'appeler /bin/cp, vous pouvez effectuer l'une des opérations suivantes:

\cp -f ...
command cp -f ...

Cependant, je conviens que vous ne devriez pas vous habituer à utiliser un alias tel que cp -i ou rm -i - si vous vous assoyez devant un autre Shell, vous ne disposerez pas du filet de sécurité dont vous êtes devenu dépendant.

17
glenn jackman

Après avoir vu cette solution. Je pouvais voir que la fonctionnalité d'alias bashes était à l'origine des problèmes. http://systembash.com/content/Prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

Il recommande

unalias cp

Je veux toujours conserver le pseudonyme que je ne veux tout simplement pas appliquer à cette instance. Ma solution consiste à utiliser le binaire avec un chemin complet, pour que la fonction basias alias ne prenne pas la relève. Cela fonctionne assez bien.

/bin/cp -f /media/somedir/somefiles* .  
12
nelaaro

Malheureusement, sous Linux, la commande copy "cp" ne permet pas de répondre automatiquement à cette question par un "y" ou un "n". Il existe plusieurs solutions à ce problème, selon ce que vous voulez faire. Une solution consiste à utiliser la commande "oui" Unix. Cette commande produira une chaîne à plusieurs reprises jusqu'à ce qu'elle soit tuée.

Si nous voulons écraser tous les fichiers du répertoire de destination, vous pouvez utiliser la commande "oui" pour répondre à toutes les questions avec un "y". "y" est une valeur par défaut, il n'est donc pas nécessaire de le spécifier.

yes | cp source/*.txt destination/.

Si nous voulons éviter d’écraser l’un des fichiers du répertoire de destination, vous pouvez utiliser la commande "oui" pour répondre à toutes les questions avec un "n" non.

yes n | cp source/*.txt destination/.

Utilisez "man yes" pour plus d'informations sur la commande "yes".

3
Michael Sundell