Una Breve Historia de los comandos 'rm' y 'rmdir'

Por: Eric Fischer

Traducci�n al Espa�ol por: Lucas Maximiliano Sola
el d�a 14 de Noviembre 2000, para La Gaceta de Linux

Al contrario de la mayor�a de las m�s b�sicas utilidades para Linux y Unix, el nombre del comando rm no es realmente m�s antiguo que el mismo Unix. En los predecesores de Unix, el CTSS (Compatible Time Sharing System / Sistema Compatible de Tiempo Compartido) y Multics, el comando para remover archivos se llamaba delete, el cual en Multics pod�a opcionalmente ser abreviado a dl. En Unix, el nombre se transform� en rm, probablemente para reflejar el cambio filosofal entre borrar archivos y remover los accesos a directorios que se enlazaban con ellos.

Adem�s en una parte de Unix al tiempo de la Primera Edici�n de su manual (Noviembre 3, 1971) estaba el comando rmdir para remover directorios. Hoy el comando rmdir s�lo hace una llamada rmdir()al sistema para cada uno de sus argumentos y reporta cualquier error. Pero en 1971 no exist�a la llamada al sistema rmdir(), por lo tanto el programa rmdir ten�a que hacer todo el trabajo por s� mismo. Se ten�a que asegurar que el directorio que iba a ser removido estaba vac�o y que sus permisos eran los correctos y luego remover los enlaces especiales "." y ".." antes de romper el enlace del mismo directorio. Esta situaci�n persisti� hasta 1983, cuando la introducci�n del nuevo Sistema R�pido de Archivos en 4.2BSD hizo que la creaci�n y remoci�n de directorios fuera responsabilidad del kernel.

La versi�n de 1971 del comando rm no ten�a ninguna de las opciones que la actual versi�n posee. Adem�s estaba dispuesto a remover archivos de s�lo lectura, aunque el manual dec�a "probablemente deber�a preguntar". Fue cambiado para que s� tuviera que preguntar (como el comando delete de CTSS lo hab�a hecho en 1965) en una nueva versi�n cuyas p�ginas del manual ten�an la fecha de 20 de Enero de 1973, y las cuales inclu�an estas opciones

rm -f   no preguntar antes de remover archivos de s�lo lectura
rm -r   remueve subdirectorios recursivamente

La forma en que la opci�n rm -r estaba implementada en ese momento, era que cuando el comando rm encontraba un directorio en medio de los archivos que estaba removiendo, cambiar�a de directorio (en ese momento llamado chdir) hacia el directorio en cuesti�n y comenzar�a otra instancia del comando rm -r * para remover su contenido. Una nueva versi�n la cual realizaba la recursi�n dentro de un simple proceso rm apareci� en la S�ptima Edici�n de Unix en 1979, la cual adem�s inclu�a una nueva opci�n:

rm -i   preguntar si cada archivo o directorio deber�a ser removido

Esto hac�a posible escribir rm -i * para remover interactivamente los archivos seleccionados de un directorio, incluyendo aquellos cuyos nombres de alguna manera hab�an sido mutilados hasta el punto que ellos se hab�an vuelto imposibles de tipear. Esta caracter�stica realmente se habr�a necesitado mucho tiempo antes, pero previamente a la S�ptima Edici�n esto era realizado por un programa separado, ahora abandonado, llamado dsw.

El nombre de dsw era m�s misterioso que cualquier otro comando, incluso en este sistema operativo conocido por sus nombres oscuros. El manual de la Sexta Edici�n recriminaba al curioso comando con la nota que dec�a "el nombre dsw es una cosa pospuesta desde los tiempos antiguos. Su etimolog�a es divertida." La Primera Edici�n tuvo que agregar "...pero el nombre es no obstante inconsiderado," pero esto desapareci� en manuales posteriores.

La especulaci�n acerca de que podr�a significar realmente el nombre dsw (delete s--t work?) lleg� a su fin cuando Dennis Ritchie lo revel� en 1981 en un grupo de Usenet al poner un mensaje que dec�a que el nombre originalmente significaba "delete from switches (borrar a partir de par�metros)." Esto era una referencia hacia los par�metros de alarma que se encontraban sobre el panel frontal de la computadora PDP-7 en la cual corr�a la m�s temprana versi�n de Unix. (Algunas piezas de hardware posteriores tambi�n ten�an par�metros de consola, y desde la Tercera a la Sexta Edici�n tambi�n pose�an una llamada getcsw()al sistema que los programas pod�an utilizar para averiguar que quer�an configurar.)
(Nota del Traductor: en donde dice (delete s--t work?) permanece de esa forma ya que es un chiste del redactor del art�culo y al traducirlo pierde la gracia, significa algo como "borrar trabajo de mier--?").

Para utilizar el comando original dsw, usted deb�a configurar los par�metros del panel frontal a un n�mero y correr dsw, el cual entonces le�a ese n�mero de entradas desde el directorio actual,  imprim�a en la terminal el nombre del �ltimo que hab�a le�do, y se abortaba a s� mismo, dejando un archivo core que proven�a del volcado de datos. Usted entonces pod�a, si usted quer�a, remover el archivo que hab�a nombrado al reejecutar el archivo core. Cuando esta horrible interfaz de usuario fue reemplazada por una m�s razonable, el nombre permaneci� hasta que el programa entero fue reemplazado por rm -i.

En ese punto, la evoluci�n del comando rm lleg�, en su mayor parte, a un final. Una ligeramente alterada versi�n, con fecha de 1 de Abril de 1981 e introducida con 4.2BSD, introdujo una opci�n de terminaci�n "-" para hacer m�s f�cil la remoci�n de archivos cuyos nombres comenzaban un gui�n. Para consistencia con otros comandos, el est�ndar POSIX cambi� esto a "--" y cre� la opci�n capitalizada "-R" para borrar directorios recursivamente.


Copyright © 2000, Eric Fischer
Publicado en la Edici�n 49 de Linux Gazette, Enero del 2000
Hosted by www.Geocities.ws

1