La sinopsis estándar del rm
La utilidad se especifica en el estándar POSIX como
rm [-iRr] file...
rm -f [-iRr] [file...]
En su primera forma, requiere al menos un operando de archivo, pero en su segunda forma no lo requiere.
Haciendo rm -f
sin operandos de archivo no es un error:
$ rm -f
$ echo "$?"
0
... pero no hace mucho.
El estándar dice que para el -f
opción, el rm
la utilidad debería...
No pida confirmación. No escriba mensajes de diagnóstico ni modifique el estado de salida en el caso de que no haya operandos de archivo, o en el caso de operandos que no existan. Cualquier aparición anterior de -i
la opción será ignorada.
Esto confirma que debe ser posible ejecutar rm -f
sin ningún operando de nombre de ruta y que esto no es algo que haga rm
salir con un mensaje de diagnóstico ni un estado de salida distinto de cero.
Este hecho es muy útil en un script que intenta eliminar una serie de archivos como
rm -f -- "[email protected]"
donde "[email protected]"
es una lista de rutas que pueden o no estar vacías, o que pueden contener rutas que no existen.
(rm -f
seguirá generando un mensaje de diagnóstico y saldrá con un estado de salida distinto de cero si hay problemas de permisos evitando que se elimine un archivo con nombre).
Sin embargo, ejecutar la utilidad sin operandos de opción ni de nombre de ruta es un error:
$ rm
usage: rm [-dfiPRrv] file ...
$ echo "$?"
1
Lo mismo es válido para GNU rm
(lo anterior muestra OpenBSD rm
) y otras implementaciones de la misma utilidad, pero el mensaje de diagnóstico exacto y el estado de salida distinto de cero pueden ser diferentes (en Solaris el valor es 2 y en macOS es 64, por ejemplo).
En conclusión, el GNU rm
manual puede ser un poco impreciso ya que es cierto que con alguna opción (-f
, que es una opción opcional), el operando de nombre de ruta es opcional.
desde la edición de 2016, después de la resolución de este error, consulte la edición anterior como referencia.
POSIX es el estándar que define qué es un sistema Unix y cómo se comporta. Este estándar es publicado por The Open Group. Consulte también la pregunta "¿Qué es exactamente POSIX?".
Técnicamente, la sinopsis es correcta, pero es confusa. Hay casos en los que no se necesita un nombre de archivo:
rm --help
rm --version
(al usar GNU rm
). Todos los demás casos requieren un nombre de archivo.
Otras versiones de rm
mostrar el archivo como no opcional, p. ej. en la página de manual de OpenBSD.
Una sinopsis más precisa para GNU rm
mostraría las tres variantes:
rm
[opciones ...] archivo ...
rm --help
rm --version