¿Cómo uso 'cp' para sobrescribir archivos?

9

Utilizando un script de shell o Terminal, ¿cómo sobrescribo los archivos que pueden o no estar presentes? Miré la página de manual de cp, decía que usaba el argumento -f para forzar la sobrescritura. Pero, no hace nada.

$ cp -f /path/to/source/file.txt /path/to/target

¿O hay otra opción para sobrescribir archivos usando las herramientas comunes de línea de comandos incorporadas en OS X?

    
pregunta rogerFernand 06.12.2013 - 02:18

4 respuestas

12

Estoy sorprendido de por qué CP se está comportando de esta manera si no hay un alias involucrado. Sin embargo, se proporciona una utilidad de sucesión rápida y peligrosa para esta situación exacta: yes . Puede usarlo para canalizar un flujo continuo de afirmativos en cualquier comando que le brinde indicaciones de confirmación (puede usarlo para enviar cualquier texto, pero el valor predeterminado es "y").

yes | cp foo bar ejecutará el comando cp y omitirá todas las solicitudes de confirmación.

    
respondido por el octern 13.12.2013 - 01:47
8

Puede deberse a un alias de comando.

Para llamar directamente a cp , puede usar /bin/cp src dest

    
respondido por el Aji 06.12.2013 - 16:06
2
rm foo/bar/destination && cp source foo/bar/destination

Primero eliminas ( rm ) el destino, luego, si tienes éxito ( && ), haces tu copia. Al eliminar una carpeta, recuerde agregar -r a rm ( rm -r ).

    
respondido por el vtoanb 26.05.2017 - 04:00
1

También tuve un alias con -f, call cp directamente desde / bin y todo está bien, tener un alias que evite sobrescrituras / eliminaciones accidentales por defecto es bastante bueno, así que es mejor que no lo elimines.

  

. # alias

     

alias cp = 'cp -i'

como ya se dijo, el -i flag superceedes -f, que no permitiría que el comando de abajo funcione como se esperaba.

  

. # / bin / cp -fauv src dst

    
respondido por el Niklas Göransson 22.10.2014 - 15:37

Lea otras preguntas en las etiquetas