cp -f não pode sobrescrever alias cp -i

8

No meu arquivo /home/user/.bashrc, tenho esses aliases para evitar erros:

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

Se realmente tenho certeza do que estou fazendo, posso sobrescrever rme mvusar pseudônimos usando rm -for mv -f, não me perguntará se realmente quero sobrescrever arquivos.

O problema é que ele não funciona para o cpcomando, usando cp -fainda me fará uma pergunta.

Isso é normal? O que devo fazer para ter um cp -ialias por padrão e poder usar o cp -fcomando também?

Estou usando o Debian Wheezy de 64 bits.

baptx
fonte

Respostas:

9

Enquanto -fsignifica força em todos eles, cppois significa força tentando remover o destino primeiro se o destino não puder ser atualizado .

Para mve rm, -fapenas substitui -i. Mas cp, isso muda o comportamento do utilitário, -fnão é o oposto -inesse caso, cp -i -ffaz sentido e significa que, se o destino existir, pergunte ao usuário e, se não puder ser substituído, remova-o primeiro .

Mesmo para mve rm, adicionar -fnão é o mesmo que remover -iquando se trata de mensagens de aviso e erro enviadas ao usuário. Por exemplo rm non-existent-file, reportaria um erro, enquanto rm -i -f non-existent-filenão reportaria .

Como já mencionado, para remover o efeito de -i, em vez de adicionar -f, você deve desativar o alias usando qualquer uma das soluções fornecidas.

Stéphane Chazelas
fonte
"Para mv e cp, -f apenas substitui -i." Você quer dizer mv e rm, eu acho. Obrigado por explicar, está muito claro para mim agora!
baptx
11

Ao dar cp -f, a opção simplesmente se soma à opção existente.

Ou seja, se você tem um alias cp='cp -i', a palavra cp é substituída no comando cp -f, então você recebe cp -i -f file1 file2.

Para substituir o alias:

\cp -f file1 file2

A barra invertida antes do comando desativará o alias. Você pode usar em command cpvez de \cplegibilidade.

Guru
fonte
Cometi um erro no meu post, quando falei sobre cp -r, quis dizer cp -f, está corrigido. Sua solução com uma barra invertida está funcionando, obrigado! Mas ainda não entendo por que a barra invertida não é necessária para o comando mv ou rm, o alias é desabilitado diretamente com mv -f e rm -f!
baptx