Usando un script de shell o Terminal, ¿cómo sobrescribo los archivos que pueden o no estar presentes? Miré la página del manual para cp, decía usar 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 de línea de comandos incorporadas comunes en OS X?
terminal
command-line
script
rogerFernand
fuente
fuente
sudo
al comienzo del comando. ¡Pero úsalo con precaución!mv
orm
ellos.sudo
puedo usarmv
orm
mover o eliminar archivos antes de usarcp
. Usarsudo cp
no hace ninguna diferencia.Respuestas:
Estoy perplejo de por qué cp se comporta de esta manera si no hay un alias involucrado. Sin embargo, hay una utilidad rápida sucia y peligrosa previsto esta situación exacta:
yes
. Puede usarlo para canalizar una secuencia continua 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 indicaciones de confirmación.fuente
Puede ser causado por un alias de comando.
Para llamar
cp
directamente puedes usar/bin/cp src dest
fuente
alias cp
). Pueden cambiar el alias en su perfil o usar / bin / cp como se sugiere.cp
como Apple lo proporcionó.roger$ alias cp -bash: alias: cp: not found
type cp
. Y de hecho lo hizo.Primero elimina (
rm
) el destino, luego, si tiene éxito (&&
), realiza la copia. Al eliminar una carpeta, recuerde agregar-r
arm
(rm -r
).fuente
También tuve un alias jugando con -f, llame a cp directamente desde / bin y todo está bien, tener un alias que evita sobrescrituras / eliminaciones accidentales por defecto es bastante bueno, así que mejor no lo elimine.
como ya se dijo, el indicador -i superceedes -f, que no permitiría que el siguiente comando funcione como se esperaba.
fuente