Estoy tratando de usar el cpcomando y forzar una sobrescritura.
Lo he intentado cp -rf /foo/* /bar, pero todavía se me pide que confirme cada sobrescritura.
Estoy tratando de usar el cpcomando y forzar una sobrescritura.
Lo he intentado cp -rf /foo/* /bar, pero todavía se me pide que confirme cada sobrescritura.
Respuestas:
Puede hacerlo yes | cp -rf xxx yyy, pero mi gutfeeling dice que si lo hace como root - su .bashrco .profiletiene un alias de cpa cp -i, los sistemas más modernos (principalmente RH-derivados) que hacen a los perfiles de raíz.
Puede verificar los alias existentes ejecutando aliasen el símbolo del sistema, o which cppara verificar solo los alias cp.
Si tiene un alias definido, la ejecución unalias cpeliminará eso 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 con el prefijo \, p. Ej.\cp whatever
¯\_(ツ)_/¯respecto.
(primarily RH-derivatives)comentario :)
unalias cpy copiar lo que necesite copiar, puede volver a establecer el alias a su valor predeterminado haciendo alias cp='cp -i'. Después de lo cual, ejecute alias cppara que pueda verificar que ha vuelto al alias predeterminado.
Esto probablemente es causado por cpestar alias a algo así cp -i. Llamar cpdirectamente debería funcionar:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Otra forma de evitar esto es usar el yescomando:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yescomando. Divertidísimo. Y algún día puedo usarlo.
Como algunas de las otras respuestas han dicho, es probable que utilice un alias en algún lugar que se asigna cpa cp -io algo similar. Puede ejecutar un comando sin ningún alias precediéndolo con una barra diagonal inversa. En tu caso, intenta
\cp -r /zzz/zzz/* /xxx/xxx
La barra invertida desactivará temporalmente cualquier alias que haya llamado cp.
cp, \cpinvocará el comando cp. Esto parece ser el equivalente de correr command cp.
Probablemente tengas un alias en alguna parte, asignando cpa cp -i; porque con la configuración predeterminada, cpno pedirá sobrescribir. Comprueba tu .bashrc, tu .profileetc.
Consulte la página de manual de cp : solo cuando -ise especifique el parámetro, se cpsolicitará antes de sobrescribir.
Puede verificar esto mediante el aliascomando:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Para definir el alias, use:
$ unalias cp
Como han dicho otras respuestas, esto podría suceder si cpes un alias de cp -i.
Puede agregar un \antes del cpcomando para usarlo sin alias.
\cp -fR source target
Por defecto cptiene aliase a cp -i. Puede verificarlo, escribir aliasy puede 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 el /bin/cp /from /tocomandocp /from /to
cp generalmente tiene un alias como este
alias cp='cp -i' # i.e. ask questions of overwriting
si está seguro de que desea sobrescribir, use esto:
/bin/cp <arguments here> src dest
encontré esto
'cp' -rf * /data/danalonso_testing/target/
Fuente: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
Así que me encuentro mucho con esto porque sigo alias cp cp -iv, y encontré un buen truco. Resulta que mientras -iy -ntanto cancelar directivas de sobreescritura anteriores, -fno lo hace. Sin embargo, si lo usa -nfagrega la capacidad de borrar el -i. Entonces:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Bastante bien, ¿eh? / necropost
cp -u ...
cp --update ...
También funciona.
Otra forma de llamar al comando sin el alias es usar el commandbuiltin en bash.
command cp -rf /zzz/zzz/*
-n es "no sobreescribir" pero su pregunta es totalmente opuesta a lo que respondiste.
Para evitar esta confirmación, simplemente puede ejecutar el comando cp con la ruta absoluta, evitará el alias.
/ bin / cp destino del archivo fuente
Si desea mantener el alias a nivel global tal como está y solo desea cambiar su script.
Solo usa:
alias cp = cp
y luego escribe tus comandos de seguimiento.
Simplemente utilicé unalias para eliminar el alias "cp -i", luego hice la copia y luego volví a configurar el alias. :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
No es el código más bonito, pero fácil de configurar y eficiente. También verifico que el alias ya está retrasado con un simple
alias |grep cp
No es cp -i. Si no desea que se le pida 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
cp -i, lo que significa que estaban tratando de superar el valor predeterminado y forzar una sobrescritura. Parece que puede haber confundido que por ser la sintaxis sugerido, pero -nserá evitar una sobrescritura.