Par Eric Fisher enf@pobox.com
La commande ls
, dont le but est d'afficher une liste de fichiers,
est l'un des utilitaires les plus importants pour les utilisateurs
d'Unix et de Linux, et, sans grande surprise, un des plus anciens.
Dans ses premières versions cette commande était nommée listf
et
était disponible sur le CTSS (Compatible Time Sharing System) du MIT
(Massachusetts Institute of Technology), en juillet 1961. En 1963, il
y avait juste quelques options pour modifier le comportement de
listf
:
listf
donne la liste des fichiers, les plus récents en tête,listf rev
donne la liste des fichiers, en commençant par les plus anciens,listf
fichier extension donne des infomations sur le fichier passé en paramètre,listf
mois jour année donne la liste des fichiers plus anciens que la date spécifiée.En 1965, listf
a été étendue pour pouvoir reconnaître le
caractère "*" comme un moyen de donner la liste de tous
les fichiers qui correspondaient à un motif particulier, avec d'autres
améliorations pour la reconnaissance d'expressions dans une version
mise à jour le 3 janvier 1966.
La version de 1966 a également généralisé la syntaxe et a ajouté de
nombreuses options, dont, entre autres :
listf (file)
ne donne la liste que des fichiers, pas des liens,listf (auth)
utilisateur donne la liste des fichiers créés par cet utilisateur,listf (made)
mmjjaa [mmjjaa] donne
la liste des fichiers créés entre les dates données,listf (srec)
donne la liste des fichiers par ordre de taille,listf (smad)
donne la liste des fichiers triés sur la
date de la dernière modification,listf (rev)
donne la liste des fichiers dans l'ordre inverse,listf (long)
donne la liste des fichiers dans un format détaillé.Quand CTSS a été supplanté par Multics, la commande listf
a été
renommée en list
, qui pouvait être éventuellement abrégée en
ls
. Les premières versions de ls
avaient moins d'options que
les dernières versions de listf
, mais conservaient, avec quelques
autres :
list -all (ls -a)
donne la liste de tous les fichiers,list -date_time_modified (ls -dtm)
donne la liste triée sur la date de la dernière modification,list -reverse (ls -rv)
donne la liste dans l'ordre inverse.Quand Bell Labs a laissé tomber le développement de Multics en 1969 et
qu'il commença à travailler sur Unix, seule la version abrégée de
list
, ls
, a été conservée.
Le manuel d'Unix Première Edition (le 3 novembre 1971), décrivait les
options suivantes de ls
, qui sont encore toutes disponibles de
nos jours :
ls -l
donne la liste des fichiers dans un format détaillé,ls -t
trie sur la date de modification,ls -a
donne une liste complète, incluant les fichiers commençant par '.',ls -s
ajoute la taille des fichiers à la liste,ls -d
donne le nom des répertoires, pas leur contenu.Avec la Cinquième Edition (page de manuel datée du 20 mars 1974), la
liste d'options de ls
s'est allongée avec :
ls -r
donne la liste dans l'ordre inverse,ls -u
trie sur la date du dernier accès et non pas de modification,ls -i
donne le numéro d'index pour chaque fichier,ls -f
donne la liste des fichiers sans faire aucun tri.La Sixième Edition (en mai 1975) rajoutait une option supplémentaire :
ls -g
donne l'identifiant de groupe dans la liste au format détaillé.En mai et août 1977, Bill Joy apporta quelques modifications
personnelles à la commande ls
à Berkeley (Université de San
Fransisco), qu'il distribua par la suite comme partie intégrante de la
First Berkeley Distribution, 1BSD.
La différence la plus marquante de cette version de ls
est
qu'elle donnait une liste des fichiers sur plusieurs colonnes au lieu
de ne donner qu'un nom par ligne.
Les options pour régir le nouveau format étaient :
ls -1
donne la liste avec un seul nom par ligne (sans colonne),ls -c
donne la liste sous forme de colonnes,ls -x
donne la liste sous forme de colonnes, mais en
triant horizontalement et non verticalement,ls -q
affiche les caractères de contrôle avec un '?',ls -m
met tout sur une seule ligne avec des virgules comme séparateurs.Il y eu quelques controverses pour savoir s'il était approprié
d'inclure dans le code de ls
le formatage sous forme de colonnes,
ou s'il valait mieux laisser cette tâche à un programme
extérieur dans lequel serait redirigée, via un tube, la sortie de
ls
(ou n'importe quel autre programme).
Au début de l'année 1979, Bell Labs sortit la Septième Edition d'Unix.
Sa version de ls
n'incluait pas les changements controversés, et
possédait une nouvelle option qui entrait en conflit avec une des
lettres que Joy avait également utilisé :
ls -c
trie sur la date de changement de l'inode et non
pas de modification du fichier.Une nouvelle version du ls
de Berkeley, datée du 26 août
1980, et distribuée avec 4.0BSD, résolut ce conflit en mettant en
majuscule l'option permettant de donner la liste sous forme de
colonnes : ls -C
.
Elle ajouta également à ce qu'en ce temps, le manuel appelait
"un nombre incroyable d'options" :
ls -F
note les répertoires avec un '/' et les programmes avec un '*',ls -R
donne une liste récursive des sous-répertoires,ls -b
affiche les caractères de contrôle comme leur code ASCII.Une autre révision dans 4.2BSD (le 28 juillet 1983) supprima les
options -m
, -b
et -x
-- mais pas avant que le System V
Release 2 les ait toutes trois ajoutées à son répertoire. Elles sont
temporairement restées en vie là, mais aucune des trois ne passa la
standardisation POSIX, et de ce fait, la version de ls
de 4.2BSD
est pratiquement la même que celle de ls
que nous connaissons
aujourd'hui.
Article publié dans le numéro 48 de la Linux Gazette, décembre 1999.
Traduction française de Xavier Serpaggi.