SUSv3 sagt:
-f Keine Bestätigung anfordern. Schreiben Sie keine Diagnosemeldungen oder ändern Sie den Exit-Status bei nicht vorhandenen Operanden. Alle früheren Vorkommen der Option -i werden ignoriert.
ubuntu 9.10 Wenn Sie rm eingeben, erhalten Sie einen fehlenden Operandenfehler. Dasselbe gilt für rm -r, aber bei rm -f wird kein Fehler ausgegeben. -f soll "erzwingen" sein, nicht "Fehler beseitigen"
SUSv3 sagt:
-f Keine Bestätigung anfordern. Schreiben Sie keine Diagnosemeldungen oder ändern Sie den Exit-Status bei nicht vorhandenen Operanden. Alle früheren Vorkommen der Option -i werden ignoriert.
Auf der Unix-Manpage
-f, --force
ignoriert nicht vorhandene Dateien und fordert Sie niemals auf
Das Ignorieren nicht vorhandener Dateien bedeutet, dass keine Fehlermeldung angezeigt wird, wenn keine zu entfernenden Dateien vorhanden sind. Dies geschieht, wenn Sie rm -f ohne Angabe von Dateien verwenden. Soweit ich weiß, ist dies das erwartete Verhalten. Es ignoriert nicht alle Fehler, aber -f erfordert nicht, dass in der Datei ein Operand aufgeführt wird, sodass kein Fehler ausgegeben werden kann.
Um zu verstehen, warum der Dateiparameter wirklich optional ist, müssen Sie berücksichtigen, dass in vielen Skripts die Liste der zu entfernenden Dateien in einer Variablen gespeichert wird. Mit -f können Sie sich nicht darum kümmern, ob die Liste leer ist oder nicht. Sie können einfach tun:
rm -f $FILES
Insead der umständlicheren:
-z "$FILES" || rm $FILES
Daher ist es logisch, dass eine Option namens "Nicht vorhandene Dateien ignorieren" nicht fehlschlägt, wenn in der Befehlszeile keine Datei angegeben ist.