ls
Опція --group-directories-first
призводить до того, що каталоги будуть вказані у верхній частині, що робить результат ls
вигідним і чистим:
ls -l --group-directories-first
Однак він не діє на те symlinks
, що є насправді symlinks
до каталогів. Є можливість використовувати
ls -l -L --group-directories-first
який буде перераховувати обидва типи каталогів зверху, але не буде розрізняти належну директорію та каталог, що зв'язаний посиланням, що знову заплутано.
Чи можна ls
відображати каталоги, що мають посилання, зверху, зберігаючи їх на відміну від звичайних каталогів?
EDIT:
Я використовую bash
.
ls
не lstat()
(і readlink
для посилань), якщо ви не скористаєтесь -L
опцією (у цьому випадку вона використовується stat()
)
S_ISLNK(st_mode)
також повертається істина через stat()
, але це не так - це робиться тільки через lstat()
. Також ISLNK не повертає істину через stat, навіть якщо посилання є посиланням на посилання. Означає, що ISLNK
ніколи не повернеться істиною через stat, хоча це не визначено ...
stat
дає вам властивості файлу в кінці символьних посилань. Якщо цього не існує або він недоступний, він stat
повертає ENOENT, тому те, що повертається, stat
ніколи не буде символьним посиланням. stat()
ніколи не розкаже вам нічого про посилання, як open
ніколи не відкриє символьне посилання, або chmod()
не змінить дозволу символьної посилання ... тощо.
ls
. Відповідно доstat()
системного виклику, символьне посилання на каталог все ще є каталогом (S_ISDIR(st_mode)
повернеться істинним). Доказовоls
знижує символьні посилання перед тим, як перевірити це.