Por que o tar não pergunta antes de sobrescrever os arquivos existentes?

5

Eu perdi algumas centenas de linhas de um plugin Vim que escrevi e continuo fazendo backup de vez em quando porque extraí um arquivo tar contendo uma versão mais antiga. Decidi não usar o gerenciamento de controle de origem quando escrevi o plug-in, pois só o atualizo periodicamente.

Por que o tar não pergunta antes de substituir os arquivos existentes por padrão? Eu estou supondo que há alguma lógica por trás do motivo pelo qual o comportamento padrão é sobrescrever arquivos silenciosamente, já que geralmente queremos segurança em vez de velocidade e conveniência. Por exemplo, geralmente usamos #ifdef NDEBUG , não #ifdef DEBUG ; da mesma forma, eu esperaria tar me perguntar antes de sobrescrever quaisquer arquivos, e para que ele tenha algum sinalizador que eu possa usar para dizer para sobrescrever arquivos sem me pedir. Além disso, como pode fazer com que tar me pergunte por padrão, sem que eu tenha que dar sinalizadores? Estou bem com o uso de ferramentas diferentes de tar , se elas suportarem esse comportamento padrão mais seguro.

Obrigado pelo seu tempo!

    
por void-pointer 22.02.2012 / 06:13

2 respostas

10

O mesmo motivo rm , cp e uma série de outras utilidades não - desde o início, o conceito de design POSIX sempre foi assumir que a pessoa no console sabe o que está fazendo e não pedir esclarecimentos a menos que haja um problema real.

No caso de tar , uma olhada na página de manual sugere que você poderia tentar definir a variável TAR_OPTIONS env para incluir o sinalizador --confirmation .

    
por 22.02.2012 / 06:37
7
A opção

tar -k pede uma confirmação se o arquivo já existir. Você pode configurá-lo por padrão, adicionando-o à variável TAR_OPTIONS ( TAR_OPTIONS="$TAR_OPTIONS -k" ) ou criando um alias ( alias tar="tar -k" ).

    
por 08.03.2012 / 04:01