Deve conter '-rm' ou 'rm -f' [fechado]

1

A questão deve estar clara no título, mas aqui vai.

Qual é melhor ou há opções melhores:

thing:
    rm -f a.file b.file
    doTheMake

thing:
    -rm a.file b.file
    doTheMake

Eu quero sempre excluir a.file e b.file antes que doTheMake seja executado.

    
por Pål GD 19.09.2015 / 18:56

1 resposta

2

Depende da sua intenção. Sem o sinalizador -f , você terminará com uma mensagem de erro e um valor de retorno de erro se o arquivo não existir. Makefiles não prosseguem depois de um erro (a menos que você os tenha configurado para fazer isso). Se o arquivo pode ou não existir e você deseja excluí-lo em todos os casos, -f é o comportamento correto. Se o arquivo deve existir por causa de uma etapa anterior no conjunto de ferramentas e você deseja excluí-lo neste ponto (ou seja, é um erro para ele não existir neste momento), não use -f .

Agora, se você prefixar uma linha com - , o comando será executado normalmente, mas seus erros serão ignorados e o processamento continuará.

A maioria dos comandos não tem um sinal -f , e é por isso que o prefixo - existe. Mas rm faz. Nesse caso, você usaria o prefixo - vs o sinal -f com base em se deseja ou não que o rm reclame que o arquivo não existe. É provavelmente uma questão de estilo e preferência neste momento, mas pense sobre suas intenções, o arquivo que você está excluindo, etc. Eu pessoalmente prefiro ter um makefile sem qualquer - prefixos em qualquer lugar porque eu os considero mais um hack, e preferiria usar rm -f , mas depois dessa explicação, é a sua chamada.

    
por 19.09.2015 / 19:23

Tags