ls
опция --group-directories-first
заставляет каталоги быть перечисленными сверху, что делает вывод ls
красивым и чистым:
ls -l --group-directories-first
Тем не менее, это не действует symlinks
, которые на самом деле относятся symlinks
к каталогам. Есть возможность использовать
ls -l -L --group-directories-first
который перечислит оба вида каталогов сверху, но не будет различать надлежащий каталог и каталог с символическими ссылками, что опять-таки сбивает с толку.
Можно ли ls
отображать каталоги с символическими ссылками сверху, при этом отличая их от обычных каталогов?
РЕДАКТИРОВАТЬ:
я использую bash
.
ls
делает lstat()
(и readlink
для символических ссылок), если вы не используете -L
опцию (в этом случае она использует stat()
)
S_ISLNK(st_mode)
также вернул истину через stat()
, но это не так - он делает это только через lstat()
. Также, что ISLNK не возвращает true через stat, даже если ссылка является ссылкой на ссылку. Это означает, что ISLNK
это никогда не вернет истину через стат, хотя это не определено ...
stat
дает вам свойства файла в конце символической ссылки. Если это не существует или недоступно, stat
возвращается ENOENT, поэтому то, что возвращается, stat
никогда не будет символической ссылкой. stat()
никогда не скажет вам ничего о символических ссылках, точно так же, как open
никогда не откроет символическую ссылку, или chmod()
не изменит разрешения символической ссылки ... и т. д.
ls
. Согласноstat()
системному вызову, символическая ссылка на каталог все еще является каталогом (S_ISDIR(st_mode)
вернет true). Доказывает,ls
что символические ссылки, прежде чем он это проверяет.