rm -- --somefile
Während das funktioniert, ist es eine Lösung, die auf der rm
Verwendung 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 rm
werden 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.