La sinossi standard per rm
l'utilità è specificata nello standard POSIX come
rm [-iRr] file...
rm -f [-iRr] [file...]
Nella sua prima forma, richiede almeno un operando file, ma nella sua seconda forma no.
Facendo rm -f
senza operandi di file non è un errore:
$ rm -f
$ echo "$?"
0
... ma non fa molto.
Lo standard dice che per il -f
opzione, il rm
l'utilità dovrebbe...
Non chiedere conferma. Non scrivere messaggi diagnostici o modificare lo stato di uscita in caso di assenza di operandi di file o in caso di operandi inesistenti. Eventuali occorrenze precedenti di
-i
l'opzione deve essere ignorata.
Ciò conferma che deve essere possibile eseguire rm -f
senza alcun operando di percorso e che questo non è qualcosa che rende rm
esci con un messaggio diagnostico né uno stato di uscita diverso da zero.
Questo fatto è molto utile in uno script che tenta di eliminare un numero di file come
rm -f -- "[email protected]"
dove "[email protected]"
è un elenco di percorsi che possono o meno essere vuoti o che possono contenere percorsi che non esistono.
(rm -f
genererà comunque un messaggio diagnostico ed uscirà con uno stato di uscita diverso da zero se ci sono problemi di autorizzazione impedendo la rimozione di un file denominato.)
Tuttavia, l'esecuzione dell'utility senza opzioni né operandi di percorso è un errore:
$ rm
usage: rm [-dfiPRrv] file ...
$ echo "$?"
1
Lo stesso vale per GNU rm
(quanto sopra mostra OpenBSD rm
) e altre implementazioni della stessa utilità, ma il messaggio diagnostico esatto e lo stato di uscita diverso da zero potrebbero essere diversi (su Solaris il valore è 2 e su macOS è 64, ad esempio).
In conclusione, lo GNU rm
manual potrebbe essere solo un po' impreciso in quanto è vero che con qualche opzione (-f
, che è un'opzione facoltativa), l'operando del percorso è facoltativo.
dall'edizione 2016, dopo la risoluzione di questo bug, vedere l'edizione precedente per riferimento.
POSIX è lo standard che definisce cos'è un sistema Unix e come si comporta. Questo standard è pubblicato da The Open Group. Vedi anche la domanda "Cos'è esattamente POSIX?".
Tecnicamente, la sinossi è corretta, ma è confusa. Ci sono casi in cui non è necessario alcun nome file:
rm --help
rm --version
(quando si usa GNU rm
). Tutti gli altri casi richiedono un nome file.
Altre versioni di rm
mostra il file come non facoltativo, ad es. nella manpage di OpenBSD.
Una sinossi più accurata per GNU rm
mostrerebbe le tre varianti:
rm
[opzioni ...] file ...
rm --help
rm --version