Por que o cp não tem uma barra de progresso como o wget?

50

Por favor, note que eu não pergunto como . Eu já conheço opções como pv e rsync -P .

Eu quero perguntar por que o cp não implementa uma barra de progresso, pelo menos como uma bandeira?

    
por Lamnk 26.06.2011 / 18:11

3 respostas

54

A tradição em ferramentas unix é exibir mensagens apenas se algo der errado. Eu acho que isso é tanto por razões de design e práticas. O design destina-se a torná-lo óbvio quando algo dá errado: você recebe uma mensagem de erro e não é afogado em mensagens não realmente informativas. A razão prática é que nos primeiros dias do Unix, ainda havia teleprinters ; ou seja, a saída dos programas seria impressa em papel e você não deseja imprimir barras de progresso.

Qualquer que seja a razão, a tradição de apenas exibir mensagens úteis ficou no mundo unix. Ferramentas modernas algumas vezes introduziram barras de progresso; no caso do rsync, a principal motivação é que o rsync é freqüentemente executado pela rede, e as redes são muito mais fragmentadas do que os discos locais, então a barra de progresso é mais útil. O mesmo raciocínio se aplica ao wget.

    
por 26.06.2011 / 19:06
17

No mundo unix, cada ferramenta é projetada para fazer um trabalho e fazê-lo bem. Por que cp se preocuparia em gerar progresso quando outra ferramenta, como pv , já o faz? Na mesma linha, por que tantos programas despejam coisas na tela sem qualquer paginação? Porque já existem ferramentas para esse trabalho, como more (ou less ). Por que a maioria dos programas que exigem edição de arquivos NÃO apresentam um editor e, em vez disso, terceirizam para $EDITOR ? Porque isso deixa todo mundo fazendo a única tarefa que foi projetada para fazer, e o usuário usando seu editor favorito para todas as tarefas.

Tangencialmente, a maioria dos programas shell é projetada para ter sua saída canalizada para outros programas shell. A única saída que eles provavelmente fornecerão é algo que seria útil para analisar no próximo comando da cadeia. Programas como cp são usados em scripts e também manualmente a partir de um terminal, portanto, sua saída é focada no código de saída e nas listas de arquivos que falharam ou tiveram êxito.

Sempre espere combinar ferramentas para realizar o efeito desejado.

    
por 26.06.2011 / 23:32
2

Esta é uma daquelas coisas marginais em que existem argumentos a favor e contra a adição de uma opção de barra de progresso ao cp. O principal argumento contra, é que você pode não saber de antemão que você quer saber o progresso. Ctrl-T / SIGINFO está disponível no BSD para este fim, e se isso estiver disponível nas plataformas GNU / Linux, pode haver mais motivos para isso acionar a lógica da barra de progresso no cp. Enquanto isso, uma solução mais geral é usar uma ferramenta separada como o Coreutils Progress Viewer ( progress , antigamente conhecido como como cv ) para exibir o status de qualquer processo no sistema.

    
por 21.04.2015 / 04:25