Una breve historia del comando "ls" //////////////////////////////////// El comando ls, que elabora listados de ficheros, es una de las utilidades más esenciales para los usuarios de los sistemas de tipo UNIX, y no es sorprendente que sea uno de los más viejos. En su forma más primigenia se denominaba listf, y estaba disponible en el Sistema de Tiempo de Cómputo Compatible (CTSS) del MIT, ya en julio de 1961. Para 1963, los hackers del MIT le habían integrado algunas opciones que podían usarse para variar lo que listf podía hacer: listf lista ficheros, los más nuevos primero listf rev lista ficheros, los mas viejos primero listf fichero extensión da información sobre el fichero nombrado listf mes día año lista ficheros más antiguos que la fecha dada En 1965, listf fue extendido para reconocer el caracter "*" como forma de listar todos los ficheros que coincidieran con un patrón específico, y se realizaron mayores mejoras a la rutina de coincidencia de patrones en una versión actualizada fechada el 3 de enero de 1966. La versión de 1966 también generalizaba la sintaxis y agregaba un montón de opciones, entre ellas: listf (file) sólo lista ficheros, y no enlaces listf (auth) usuario lista ficheros creados por el usuario dado listf (made) mmddaa [mmddaa] lista ficheros creados entre las fechas dadas. listf (srec) lista por tamaño listf (smad) lista por fecha de última modificación listf (rev) lista en orden inverso listf (long) lista en formato largo Cuando CTSS fue reemplazado por Multics, el comando listf fue renombrado list, el que opcionalmente podía abreviarse ls. La versión inicial de ls contaba con menos opciones que las versiones finales de listf, pero aún incluía , entre otras: list -all (ls -a) lista todo list -date_time_modified (ls -dtm) lista por fecha de última modificación. list -reverse (ls -rv) lista en orden inverso Cuando los Laboratorios Bell abandonaron el desarrollo de Multics en 1969 y un grupo allí comenzó a desarrollar UNIX, Ken Thompson decidió sólo retener el nombre abreviado de list, de modo que el UNIX de Primera Edición (manual editado el 3 de noviembre de 1971) documenta las siguientes opciones para ls, todas ellas aún disponibles al día de hoy. ls -l lista en formato largo ls -t ordena por fecha de modificación ls -a lista todo, incluyendo nombres que comiencen con "." ls -s incluye el tamaño de los ficheros en el listado ls -d lista los nombres de directorios, no sus contenidos Para el UNIX Quinta Edición (página de manual fechada el 20 de marzo de 1974), las opciones de ls se habían incrementado para incluir: ls -r lista en orden inverso ls -u usa el momento de acceso, no el de modificación ls -i lista el i-number de cada fichero ls -f no ordena el listado de ninguna manera El UNIX Sexta Edición (mayo de 1975) agrega una mas: ls -g Lista el ID de grupo al usar el listado de formato largo Entre mayo y agosto de 1977, Bill Joy realiza algunas modificaciones a su propio ls en la Universidad de California en Berkeley, la cual distribuye como parte del carrete de cinta magnética de lo que sería retrospectivamente llamado Primera Distribución de Software de Berkeley (1BSD). La diferencia más importante con la versión oficial de ls, era que listaba ficheros en columnas múltiples en lugar de listar sólo un nombre por línea, eficientizando el uso de la pantalla o papel de teletipo. La opción de control para este nuevo formato de presentación eran: ls -1 lista a un nombre por línea (sin columnas) ls -c lista en columnas ls -x lista en columnas, pero ordena horizontalmente, no verticalmente ls -q muestra los caracteres de control como "?" ls -m todo en una línea, separado por comas Hubo controversia sobre si era apropiado incorporarle a ls el código para encolumnar de manera integral, o si en vez de ello hubiese convenido que el encolumnado fuese realizado por un formateador aparte al cual se le hubiese podido enviar la salida de ls (o cualquier otro programa) a través de un caño. A comienzos de 1979, los Laboratorios Bell lanzaron su UNIX Séptima Edición. La versión de ls incluida no incorporaba los cambios controversiales, y sumaba una opción que entraba en conflicto con una letra que había usado Bill Joy: ls -c usar hora de cambio de inode, en lugar de la hora de modificación El 26 de agosto de 1980 se lanzó una nueva versión del ls de Berkeley, junto al 4BSD, que resolvía el cisma asignando la letra mayúscula para la conflictiva opción de encolumnado: ls -C. También incorporó lo que en el manual describe como "una increíble cantidad de opciones": ls -F marca los directorios con "/" y los programas ejecutables con "*" ls -R lista recursivamente los subdirectorios ls -b presenta caracters de control como sus códigos ASCII Otra revisión del 4.2BSD (del 28 de julio de 1983) removía las opciones -m, -b y -x, pero no antes que el UNIX System V Release 2 de AT&T las adoptase para su propio repertorio de opciones, en la típica "polinización cruzada" entre los UNIX que se daba en aquella época. Todas permanecieron allí pero ninguna sobrevivió la estandarización POSIX, de modo que el ls de la versión 4.2BSD es esencialmente el ls que conocemos hoy en día.