Question Comment forcer cp à remplacer sans confirmation


J'essaie d'utiliser le cp commande et force un écrasement.

j'ai essayé cp -rf /foo/* /bar, mais je suis toujours invité à confirmer chaque remplacement.


451
2017-12-13 11:17


origine


Réponses:


Tu peux faire yes | cp -rf xxx yyy, mais mes sentiments disent que si vous le faites en tant que root - votre .bashrc ou .profile a un alias de cp à cp -i, la plupart des systèmes modernes (principalement les dérivés RH) le font pour les profils racines.

Vous pouvez vérifier les alias existants en cours d'exécution alias à l'invite de commande, ou which cp vérifier les alias uniquement pour cp.

Si vous avez un alias défini, en cours d'exécution unalias cp abolira cela pour la session en cours, sinon vous pouvez simplement le supprimer de votre profil de shell.

Vous pouvez temporairement ignorer un alias et utiliser la version sans alias d’une commande en la préfixant avec \, par exemple. \cp whatever


807
2017-12-13 11:20



Ceci est probablement dû à cp être déjà aliasé à quelque chose comme cp -i. Appel cp directement devrait fonctionner:

/bin/cp -rf /zzz/zzz/* /xxx/xxx

Une autre façon de contourner cela est d'utiliser le yes commander:

yes | cp -rf /zzz/zzz/* /xxx/xxx

202
2017-12-13 11:20



Comme l'ont indiqué d'autres réponses, vous utilisez probablement un alias quelque part cp à cp -i ou quelque chose de similaire. Vous pouvez exécuter une commande sans aucun alias en la précédant d'une barre oblique inverse. Dans votre cas, essayez

\cp -r /zzz/zzz/* /xxx/xxx

La barre oblique inverse désactivera temporairement tous les alias que vous avez appelés cp.


84
2017-12-13 11:30



Vous avez probablement un alias quelque part, la cartographie cp à cp -i; car avec les paramètres par défaut, cp ne demandera pas à écraser. Vérifier votre .bashrc, votre .profile etc.

Voir page de manuel cp: Seulement quand -i paramètre est spécifié sera cp en fait demander avant d'écraser.

Vous pouvez le vérifier via le alias commander:

$ alias
alias cp='cp -i'
alias diff='diff -u'
....

Pour annuler la définition de l'alias, utilisez:

$ unalias cp -i

35
2017-12-13 11:19



Comme d'autres réponses l'ont indiqué, cela pourrait arriver si cp est un alias de cp -i.

Vous pouvez ajouter un \ avant le cp commande de l'utiliser sans alias.

\cp -fR source target

29
2017-07-29 02:19



Par défaut cp a aliase à cp -i. Vous pouvez le vérifier, tapez alias et vous pouvez en voir comme:

alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

Pour résoudre ce problème, utilisez simplement /bin/cp /from /to commande à la place cp /from /to


17
2018-05-13 07:05



cp est généralement alias comme ça

alias cp='cp -i'   # i.e. ask questions of overwriting

Si vous êtes sûr de vouloir effectuer le remplacement, utilisez ceci:

/bin/cp <arguments here> src dest

8
2018-06-22 06:36



Vous pouvez également utiliser cette commande:

cp -ru /zzz/zzz/* /xxx/xxx

il mettrait à jour votre fichier existant avec le plus récent.


5
2018-05-19 09:28



Une autre façon d'appeler la commande sans l'alias est d'utiliser le command intégré à bash.

command cp -rf /zzz/zzz/*


4
2017-07-10 18:34