Avec OS X Yosemite, j'utilise les commandes suivantes:
$ touch .a
$ touch b
$ /bin/ls
b
$ /bin/ls -A
.a b
$ sudo /bin/ls
.a b
Il affiche les fichiers cachés (dont le nom commence par un point) lorsqu'il est appelé par root et ne les affiche pas (comme prévu) lorsqu'il est exécuté en tant qu'utilisateur normal. Cela diffère de ce que fait ls
Linux (celui qui vient de coreutils
).
Pourquoi ls
se comporte de cette façon?
BSD
etOSX
sont plus appropriées ici.Réponses:
Il s'avère que cette fonctionnalité n'est pas spécifique à Apple. Ceci est une caractéristique des systèmes BSD en général.
Au départ, je pouvais le retrouver dans les sources de 4.4BSD-Lite . Il était déjà présent dans cet engagement FreeBSD depuis 1994 qui importait ces sources.
La fonctionnalité est également présente dans OpenBSD et se trouve dans ce commit de 1995 prétendant importer du code à partir de NetBSD. Elle était donc déjà présente dans NetBSD .
Ensuite, on découvre le commit de NetBSD de 1993 qui prétend importer du code de 386BSD , et la fonctionnalité est déjà présente . En outre, cet engagement montre qu’il était présent lors du développement de la version 0.0 de 386BSD en 1991, qui est passé de BSD à la version 4.3, pour autant que je sache.
Le commentaire est apparu pour la première fois lors du développement de la 4.3BSD-Reno dans ce commit (27 juin 1989) intitulé "première version de travail de new ls". Le commentaire original disait:
qui a été changé plus tard dans la journée (je ne suis pas sûr que les horodatages soient tout à fait corrects dans ce référentiel):
Et seulement en 1992, la lettre majuscule et la période ont été ajoutées, transformant le commentaire en ce que nous avons maintenant:
Mais le comportement était présent dans 2BSD à compter du 9 mai 1979, comme le montre cet instantané :
Je ne peux trouver aucune histoire réelle de cette époque, mais il y a aussi cet instantané de 1BSD de 1977 sans ces lignes. Et sans le
-A
drapeau en fait.Il semble donc que la fonctionnalité ait été introduite quelque part entre novembre 1977 (1BSD en cours de développement à ce moment-là) et la sortie de 2BSD en mai 1979.
Ce que j’ai également découvert lors de cette enquête, c’est le
-I
drapeau ajouté à FreeBSD en 2005 pour remplacer ce comportement et qui a été retravaillé un peu plus tard.la source
.
un simple bugls
était supposée masquer le.
répertoire, pas tout ce qui commençait par.
. Quelques décennies plus tard, il est généralement utilisé pour masquer des fichiers dangereux, etc., mais également pour masquer la configuration du système, etc. .Voici un lien vers le code source. Remarque
/* Root is -A automatically. */
. Ceci est une fonctionnalité de la version Apple de BSDls
.la source
Root is -A automatically
chaîne pour rechercher des indices.IIRC, il y avait un fil à ce sujet au début de Usenet (début des années 80). La fonctionnalité a été ajoutée à titre de mesure de sécurité afin que les utilisateurs malveillants ne puissent pas facilement cacher des fichiers / répertoires / exécutables à l’adresse sysadmin / root. La théorie était fondamentalement la suivante: "root a accès à tout, il devrait donc pouvoir tout voir".
la source