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

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 eu tiver certeza do que estou fazendo, posso sobrescrever rm e mv aliases usando rm -f ou mv -f . Não será possível perguntar se realmente desejo substituir arquivos.

O problema é que ele não funciona para o comando cp , usando cp -f ainda vai me fazer uma pergunta.

Isso é normal? O que devo fazer para ter cp -i alias por padrão e poder usar o comando cp -f também?

Estou usando o Debian Wheezy 64bits.

    
por baptx 03.12.2012 / 13:18

2 respostas

9

Enquanto -f significa força em todos eles, para cp , isso significa force ao tentar remover o destino primeiro se o destino não puder ser atualizado .

Para mv e rm , -f apenas substitui -i . Mas para cp , altera o comportamento do utilitário, -f não é o oposto de -i nesse caso, cp -i -f faz sentido e significa, se o alvo existe, pergunte ao usuário e se não pode ser substituído, remova-o primeiro .

Mesmo para mv e rm , adicionar -f não é o mesmo que remover -i quando 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-file não.

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.

    
por 03.12.2012 / 14:47
11

Ao atribuir cp -f , a opção simplesmente adiciona a opção existente.

Ou seja, se você tiver um alias cp='cp -i' , a palavra cp será substituída no comando cp -f , assim você obterá 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 command cp em vez de \cp para legibilidade.

    
por 03.12.2012 / 13:23

Tags