rm -- --somefile
Während das funktioniert, ist es eine Lösung, die auf der rmVerwendung von getopts zum Parsen seiner Optionen beruht . Es gibt Anwendungen, die ihre eigene Analyse durchführen und auch darauf kotzen (weil sie möglicherweise nicht unbedingt die "-- Logik Mittel-Ende der Optionen" ).
Aus diesem Grund sollten Sie folgende Lösung durch Ihren Schädel fahren:
rm ./--somefile
Es wird immer funktionieren, denn auf diese Weise beginnen Ihre Argumente nie mit einem -.
Darüber hinaus, wenn Sie versuchen, wirklich anständige Shell-Skripte zu erstellen; Sie sollten sich technisch ./vor alle Erweiterungen Ihrer Dateinamenparameter stellen, um zu verhindern, dass Ihre Skripte aufgrund funky Dateinameneingaben beschädigt werden (oder um zu verhindern, dass sie missbraucht / ausgenutzt werden, um Dinge zu tun, die sie nicht tun sollen: Zum Beispiel rmwerden Dateien gelöscht Aber überspringen Sie Verzeichnisse, während rm -rf *alles gelöscht wird. Wenn Sie einen Dateinamen von " -rf" an ein Skript oder an jemanden übergeben touch ~victim/-rf, kann dies dazu verwendet werden, sein Verhalten mit wirklich schlimmen Konsequenzen zu ändern.