Por que esse comando composto reporta erros ao copiar diretórios?

0

Se alguém executa os dois comandos a seguir em uma linha da seguinte forma,

rm -rf dir ; cp -r dir2 dir

pode retornar que o cp não pode criar o diretório dir/subdir : o arquivo existe

mas se esses dois comandos forem executados em duas linhas, nenhum erro será gerado. Eu só estou querendo saber qual é a diferença e mais importante, como executar dois comandos em uma linha, com o efeito exatamente o mesmo que por duas linhas ...

EDIT: Eu mudo para cp -r dir2 dir . Além disso, o que está em dir ou dir2 é enorme, normalmente 4gb.

    
por Richard 20.07.2012 / 21:15

1 resposta

2

Solução sem explicação

Eu não tenho 100% de certeza porque isso acontece, embora eu suspeite que tenha algo a ver com como ou quando o Bash está expandindo os argumentos para cp . No entanto, é fácil de corrigir: basta adicionar o sinalizador -a. Por exemplo:

rm -rf dir; cp -a dir2 dir

Isso funciona corretamente no meu sistema e não reporta erros. Como prova:

$ set -x; rm -rf dir; cp -a dir2 dir; ls
+ rm -rf dir
+ cp -a dir2 dir
dir  dir2
    
por 20.07.2012 / 21:24