J'essaie d'utiliser la cp
commande et de forcer un remplacement.
J'ai essayé cp -rf /foo/* /bar
, mais je suis toujours invité à confirmer chaque remplacement.
la source
J'essaie d'utiliser la cp
commande et de forcer un remplacement.
J'ai essayé cp -rf /foo/* /bar
, mais je suis toujours invité à confirmer chaque remplacement.
Vous pouvez le faire yes | cp -rf xxx yyy
, mais mon intuition dit que si vous le faites en tant que root - votre .bashrc
ou .profile
a un alias de cp
to cp -i
, la plupart des systèmes modernes (principalement des dérivés RH) le font pour les profils root.
Vous pouvez vérifier les alias existants en exécutant alias
à l'invite de commandes ou which cp
pour vérifier les alias uniquement pour cp
.
Si vous avez défini un alias, l'exécution unalias cp
le supprimera pour la session en cours, sinon vous pouvez simplement le supprimer de votre profil de shell.
Vous pouvez contourner temporairement un alias et utiliser la version sans alias d'une commande en la préfixant avec \
, par exemple\cp whatever
¯\_(ツ)_/¯
.(primarily RH-derivatives)
remarque :)unalias cp
et copié tout ce dont vous avez besoin pour copier, vous pouvez redonner à l'alias sa valeur par défaut en faisantalias cp='cp -i'
. Après quoi, exécutezalias cp
pour pouvoir vérifier qu'il est de retour à l'alias par défaut.Cela est probablement dû au fait
cp
qu'il a déjà un alias pour quelque chose commecp -i
. Appelercp
directement devrait fonctionner:Une autre façon de contourner ce problème consiste à utiliser la
yes
commande:la source
yes
commande. Hilarant. Et un jour je pourrai l'utiliser.Comme certaines des autres réponses l'ont indiqué, vous utilisez probablement un alias quelque part qui correspond
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, essayezLa barre oblique inverse désactivera temporairement tous les alias que vous avez appelés
cp
.la source
cp
,\cp
invoquera la commandecp
. Cela semble être l'équivalent de l'exécutioncommand cp
.Vous avez probablement un alias quelque part, mappé
cp
àcp -i
; car avec les paramètres par défaut,cp
ne demandera pas d'écraser. Vérifiez votre.bashrc
, votre.profile
etc.Voir la page de manuel de cp : Uniquement lorsque le
-i
paramètre est spécifié, unecp
invite s'affiche avant l'écrasement.Vous pouvez le vérifier via la
alias
commande:Pour annuler la définition de l'alias, utilisez:
la source
Comme d'autres réponses l'ont indiqué, cela pourrait arriver s'il
cp
s'agit d'un alias decp -i
.Vous pouvez ajouter un
\
avant lacp
commande pour l'utiliser sans alias.la source
Par défaut
cp
a aliase pourcp -i
. Vous pouvez le vérifier, taperalias
et vous pouvez voir certains comme:Pour résoudre ce problème, utilisez simplement la
/bin/cp /from /to
commande à la placecp /from /to
la source
vous pouvez également utiliser cette commande:
cp -ru /zzz/zzz/* /xxx/xxx
il mettrait à jour votre fichier existant avec le plus récent.
la source
cp
est généralement aliasé comme çasi vous êtes sûr de vouloir écraser, utilisez ceci:
la source
j'ai trouvé ça
Source: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
la source
Donc, je rencontre beaucoup cela parce que je garde l'alias cp
cp -iv
, et j'ai trouvé une astuce intéressante. Il s'avère que while-i
et les-n
deux annulent les directives de remplacement précédentes,-f
ne le fait pas. Cependant, si vous l'utilisez, vous pouvez-nf
effacer le-i
. Donc:Assez bien hein? / nécropost
la source
fonctionne également.
la source
Une autre façon d'appeler la commande sans l'alias est d'utiliser le
command
builtin dans bash.command cp -rf /zzz/zzz/*
la source
-n est "ne pas écraser" mais sa question est totalement opposée à ce que vous avez répondu.
Pour éviter cette confirmation, vous pouvez simplement exécuter la commande cp avec un chemin absolu, cela évitera l'alias.
/ bin / cp destination du fichier source
la source
Si vous souhaitez conserver l'alias au niveau global tel quel et que vous souhaitez simplement le modifier pour votre script.
Utilisez simplement:
alias cp = cp
puis écrivez vos commandes de suivi.
la source
J'ai simplement utilisé unalias pour supprimer l'alias "cp -i", puis faire la copie, puis réinitialiser l'alias. :
Pas le code le plus beau, mais facile à définir et efficace. Je vérifie également que l'alias est déjà en retrait avec un simple
la source
Ce n'est pas le cas
cp -i
. Si vous ne voulez pas qu'on vous demande de confirmation, c'estcp -n
; par exemple:Ou dans le cas de répertoires / dossiers:
la source
cp -i
par le système, ce qui signifie qu'ils essayaient de surmonter la valeur par défaut et de forcer un écrasement. On dirait que vous avez peut - être confus que pour être la syntaxe suggérée, mais-n
va éviter un écrasement.