Usando um script de shell ou Terminal, como sobrescrevo arquivos que podem ou não estar presentes. Eu olhei para a página de manual do cp, que dizia usar o argumento -f para forçar a substituição. Mas, isso não faz nada.
$ cp -f /path/to/source/file.txt /path/to/target
Ou existe outra opção para substituir arquivos usando as ferramentas de linha de comando comuns incorporadas no OS X?
terminal
command-line
script
rogerFernand
fonte
fonte
sudo
no início do comando. Mas use com cuidado!mv
eles ourm
eles.sudo
, posso usarmv
ourm
mover ou remover arquivos antes de usarcp
. Usarsudo cp
não faz diferença.Respostas:
Estou perplexo com o motivo pelo qual o cp está se comportando dessa maneira, se não houver um pseudônimo envolvido. No entanto, existe um utilitário de quick-sujo e perigoso prevista nesta situação exata:
yes
. Você pode usá-lo para canalizar um fluxo contínuo de afirmativas em qualquer comando que forneça prompts de confirmação (você pode usá-lo para enviar qualquer texto, mas o padrão é "y").yes | cp foo bar
executará o comando cp e ignorará todos os prompts de confirmação.fonte
Pode ser causado por um alias de comando.
Para ligar
cp
diretamente, você pode usar/bin/cp src dest
fonte
alias cp
). Eles podem alterar o alias em seu perfil ou usar / bin / cp, conforme sugerido.cp
como a Apple forneceu.roger$ alias cp -bash: alias: cp: not found
type cp
. E realmente aconteceu.Primeiro você remove (
rm
) o destino e, em seguida, se for bem-sucedido (&&
), copia. Ao remover uma pasta, lembre-se de adicionar-r
arm
(rm -r
).fonte
Eu também tinha um apelido atrapalhando com -f, chamo o cp diretamente de / bin e está tudo bem, ter um apelido que evita substituições / remoções acidentais por padrão é muito bom, por isso é melhor não removê-lo.
como já foi dito, o sinalizador -i substitui -f, o que não permitiria que o comando abaixo funcionasse conforme o planejado.
fonte