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