Sollte make '-rm' oder `rm -f 'enthalten

1420
Pål GD

Die Frage sollte aus dem Titel klar sein, aber hier geht es.

Was ist besser, oder gibt es bessere Optionen:

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

Ich möchte immer löschen a.fileund b.filevorher doTheMakelaufen lassen.

1

1 Antwort auf die Frage

2
Mahmoud Al-Qudsi

Das hängt von deiner Absicht ab. Ohne das -fFlag erhalten Sie eine Fehlermeldung und einen Fehlerrückgabewert, wenn die Datei nicht vorhanden ist. Makefiles werden nach einem Fehler nicht fortgesetzt (es sei denn, Sie haben sie dafür konfiguriert). Wenn die Datei möglicherweise vorhanden ist oder nicht, und Sie sie in allen Fällen löschen möchten, -fist das richtige Verhalten. Wenn die Datei aufgrund eines früheren Schritts in der Toolchain vorhanden sein soll und Sie sie an dieser Stelle löschen möchten (dh es liegt ein Fehler vor, wenn sie zu diesem Zeitpunkt nicht vorhanden ist), verwenden Sie sie nicht -f.

Wenn Sie nun -dem Befehl eine Zeile voranstellen, wird der Befehl normal ausgeführt, die Fehler werden jedoch ignoriert und die Verarbeitung wird fortgesetzt.

Die meisten Befehle haben -fanfangs keine Flagge, deshalb -existiert das Präfix. Aber rmtut. In diesem Fall würden Sie das -Präfix gegen das -fFlag verwenden, je nachdem, ob Sie sich darüber beschweren möchten, dass die Datei nicht vorhanden ist. An diesem Punkt ist es wahrscheinlich eine Frage des Stils und der Präferenzen, aber denken Sie an Ihre Absichten, die Datei, die Sie löschen, usw. Ich persönlich bevorzuge es, ein Makefile ohne -Präfixe zu haben, da ich sie eher für einen Hack halte und lieber Verwenden Sie rm -fstattdessen, aber nach dieser Erklärung ist es Ihr Anruf.