lsopcja --group-directories-firstpowoduje, że katalogi są wyświetlane na górze, co sprawia, że wyjście jest lsładne i czyste:
ls -l --group-directories-first
Jednak to nie działa na symlinks, które są faktycznie symlinksdo katalogów. Istnieje możliwość użycia
ls -l -L --group-directories-first
który wyświetli listę obu rodzajów katalogów na górze, ale nie rozróżni właściwego katalogu i katalogu z dowiązaniem symbolicznym, co znów jest mylące.
Czy lsna górze mogą wyświetlać się dowiązane katalogi, a jednocześnie odróżniać je od zwykłych katalogów?
EDYCJA:
Używam bash.
lsnie lstat()(i readlinkdla dowiązań symbolicznych), chyba że skorzystasz z -Lopcji (w którym to przypadku używa stat())
S_ISLNK(st_mode)również zwróciło prawda przez stat(), ale tak nie jest - robi to tylko przez lstat(). Również, że ISLNK nie zwraca true przez stat, nawet jeśli link jest linkiem do linku. Oznacza to, że ISLNKmoże nigdy nie zwróci prawdy poprzez statystyki, chociaż jest to rodzaj nieokreślonego ...
statdaje właściwości pliku na końcu dowiązań symbolicznych. Jeśli to nie istnieje lub jest niedostępne, statzwraca ENOENT, więc to, co zostanie zwrócone stat, nigdy nie będzie dowiązaniem symbolicznym. stat()nigdy nie powie ci nic na temat dowiązań symbolicznych, tak jak opennigdy nie otworzy dowiązań symbolicznych, ani chmod()nie zmieni uprawnień dowiązań symbolicznych ... itd.
ls. Zgodnie zstat()wywołaniem systemowym dowiązanie symboliczne do katalogu jest nadal katalogiem (S_ISDIR(st_mode)zwróci wartość true). Wyraźnie pomija łączalssymboliczne, zanim to sprawdzi.