cp -f no puede sobrescribir cp -i alias

8

En mi archivo /home/user/.bashrc, tengo esos alias para evitar errores:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

Si estoy realmente seguro de lo que estoy haciendo, puedo sobrescribir rmy mvusar alias rm -fo mv -f, no me preguntará si realmente quiero sobrescribir archivos.

El problema es que no funciona para el cpcomando, el uso cp -faún me hará una pregunta.

¿Esto es normal? ¿Qué debo hacer para tener un cp -ialias por defecto y poder usar el cp -fcomando también?

Estoy usando Debian Wheezy 64bit.

Baptx
fuente

Respuestas:

9

Mientras que -fsignifica forzarlos a todos cp, porque significa forzar al intentar eliminar el destino primero si el destino no se puede actualizar .

Por mvy rm, -fsimplemente reemplaza -i. Pero para cp, cambia el comportamiento de la utilidad, -fno es lo contrario de -ien ese caso, cp -i -ftiene sentido y significa, si el objetivo existe, pregunte al usuario y si no se puede anular, elimínelo primero .

Incluso para mvy rm, agregar -fno es lo mismo que eliminar -icuando se trata de mensajes de advertencia y error enviados al usuario. Por ejemplo rm non-existent-file, reportaría un error mientras rm -i -f non-existent-fileque no.

Como ya se mencionó, para eliminar el efecto de -i, en lugar de agregar -f, debe deshabilitar el alias utilizando cualquiera de las soluciones proporcionadas.

Stéphane Chazelas
fuente
"Para mv y cp, -f simplemente anula -i". Te refieres a mv y rm, creo. Gracias por explicar, ¡ahora está muy claro para mí!
baptx
11

Al dar cp -f, la opción simplemente se suma a la opción existente.

Es decir, si tiene un alias cp='cp -i', la palabra cp se reemplaza en el comando cp -f, por lo que obtiene cp -i -f file1 file2.

Para anular el alias:

\cp -f file1 file2

La barra diagonal inversa antes del comando deshabilitará el alias. Puede usar en command cplugar de \cplegibilidad.

Gurú
fuente
Cometí un error en mi publicación, cuando hablé de cp -r, quise decir cp -f, está corregido. Su solución con una barra invertida está funcionando, ¡gracias! Pero todavía no entiendo por qué la barra invertida no es necesaria para el comando mv o rm, ¡el alias está deshabilitado directamente con mv -f y rm -f!
baptx