rm -- --somefile
Mentre che funziona, è una soluzione che si basa su rm
Utilizzare getopts per analizzare le sue opzioni. Ci sono applicazioni là fuori che fanno il loro proprio parsing e si vomiteranno anche su quello (perché potrebbero non necessariamente implementare la logica "--
significa fine delle opzioni").
A causa di ciò, la soluzione si dovrebbe guidare attraverso il cranio è questa:
rm ./--somefile
E funziona sempre, perché in questo modo le sue argomentazioni non iniziano con un -
.
Inoltre, se si sta tentando di creare script di shell davvero decenti; dovresti mettere tecnicamente ./
di fronte a tutte le espansioni dei parametri del nome del file per impedire che gli script si rompano a causa dell'input funky del nome del file (o per evitare che vengano abusati/sfruttati per fare cose che non dovrebbero fare: ad esempio, rm
elimina i file ma salta le directory, mentre lo standard rm -rf *
eliminerà tutto. Passare un nome file di "-rf
" a uno script o a qualcuno touch ~victim/-rf
"in questo modo potrebbe essere utilizzato per modificare il suo comportamento con conseguenze davvero negative).
Uguale a [serverfault] (https://serverfault.com/questions/47003/deleting-a-unix-directory-with-a-hyphen-in-the-name) e [unix] (https: // unix.stackexchange.com/questions/1519/how-do-i-delete-a-file-whose-name-begins-with-hyphen-aka-dash-or-minus). – Dorian
@Dorian Beh, ok, ma sono stato il primo :) – cb0