sobreescribir comando linux command-line overwrite cp

linux - comando - Como forzar a cp a sobrescribir sin confirmación



comando cp linux (14)

-n es "no sobrescribir", pero su pregunta es totalmente opuesta a lo que respondiste.

Para evitar esta confirmación, simplemente ejecute el comando cp con una ruta absoluta, evitará el alias.

/ bin / cp destino del archivo fuente

Estoy tratando de usar el comando cp y forzar una sobrescritura.

He intentado cp -rf /foo/* /bar , pero todavía se me pide que confirme cada sobrescritura.


Como han indicado algunas de las otras respuestas, probablemente utilice un alias en algún lugar que asigne cp a cp -i o algo similar. Puede ejecutar un comando sin ningún alias precediéndolo con una barra invertida. En tu caso, prueba.

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

La barra invertida desactivará temporalmente cualquier alias que haya llamado cp .


Como han indicado otras respuestas, esto podría ocurrir si cp es un alias de cp -i .

Puede agregar un / antes del comando cp para usarlo sin alias.

/cp -fR source target


Esto probablemente se debe a que cp ya está asociado a algo como cp -i . Llamar directamente a cp debería funcionar:

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

Otra forma de evitar esto es usar el comando yes :

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


No es cp -i . Si no desea que se le solicite confirmación, es cp -n ; por ejemplo:

cp -n src dest

O en el caso de directorios / carpetas es:

cp -nr src_dir dest_dir


Otra forma de llamar al comando sin el alias es usar el command incorporado en bash.

command cp -rf /zzz/zzz/*


Por defecto, cp tiene además a cp -i . Puedes comprobarlo, escribir alias y ver algunos como:

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''

Para resolver este problema, simplemente use /bin/cp /from /to lugar de comando cp /from /to


Probablemente tengas un alias en algún lugar, mapeando cp a cp -i ; porque con la configuración predeterminada, cp no pedirá que se sobrescriba. Compruebe su .bashrc , su .profile etc.

Consulte la página de manual de cp : Solo cuando se especifique el parámetro -i , cp solicitará antes de sobrescribir.

Puedes verificar esto a través del comando alias :

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

Para anular la definición del alias, use:

$ unalias cp -i


Puedes hacer yes | cp -rf xxx yyy yes | cp -rf xxx yyy , pero gutfeeling dice que si lo haces como root, tu .bashrc o .profile tiene un alias de cp a cp -i , la mayoría de los sistemas modernos (principalmente derivados de RH) hacen eso para los perfiles de root.

Puede verificar los alias existentes ejecutando alias en el símbolo del sistema, o en which cp para verificar los alias solo para cp .

Si tiene un alias definido, ejecutar unalias cp lo eliminará para la sesión actual, de lo contrario, puede eliminarlo de su perfil de shell.

Puede omitir temporalmente un alias y usar la versión sin alias de un comando prefijándolo con / , por ejemplo, /cp whatever


Si desea mantener el alias en el nivel global tal como está y simplemente desea cambiarlo para su script.

Solo usa:

alias cp = cp

y luego escriba sus comandos de seguimiento.


Simplemente usé unalias para eliminar el alias "cp -i", luego hacer la copia y luego volver a establecer el alias. :

unalias cp cp -f foo foo.copy alias cp="cp -i"

No es el código más hermoso, pero es fácil de configurar y eficiente. También compruebo que el alias ya está retrasado con un simple

alias |grep cp


También puedes usar este comando:

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

Aunque actualizaría tu archivo existente con el más nuevo.


cp suele tener un alias como este

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

Si está seguro de que desea realizar la sobrescritura, utilice esto:

/bin/cp <arguments here> src dest


cp -u ... cp --update ...

tambien funciona