ls
L'option --group-directories-first
fait apparaître les répertoires en haut, ce qui rend la sortie ls
agréable et propre:
ls -l --group-directories-first
Cependant, il n'agit pas symlinks
, qui sont en fait symlinks
à des répertoires. Il est possible d'utiliser
ls -l -L --group-directories-first
qui listera les deux types de répertoires en haut, mais ne fera pas de distinction entre le répertoire approprié et le répertoire avec lien symbolique, ce qui est encore une fois déroutant.
Peut-il ls
afficher des répertoires liés par des liens symboliques sur le dessus, tout en les gardant distincts des répertoires classiques?
EDIT:
J'utilise bash
.
ls
ne lstat()
(et readlink
pour les liens symboliques) sauf si vous utilisez l' -L
option de (auquel cas il utilise stat()
)
S_ISLNK(st_mode)
également vrai via stat()
, mais ce n'est pas le cas - il le fait uniquement via lstat()
. De plus, ISLNK ne renvoie pas true via stat même si le lien est un lien vers un lien. Ce qui ISLNK
pourrait ne jamais revenir vrai via stat, bien que ce soit un peu indéterminé ...
stat
vous donne les propriétés du fichier à la fin du ou des liens symboliques. Si cela n'existe pas ou n'est pas accessible, le stat
retourne un ENOENT, donc ce qui est retourné par stat
ne sera jamais un lien symbolique. stat()
ne vous dira jamais rien à propos des liens symboliques, tout comme open
n'ouvrira jamais le lien symbolique, ou chmod()
ne changera pas les autorisations d'un lien symbolique ... etc.
ls
. Selon l'stat()
appel système, un lien symbolique vers un répertoire est toujours un répertoire (S_ISDIR(st_mode)
renvoie true). Evite évidemmentls
les liens symboliques avant de vérifier cela.