ls
opcja --group-directories-first
powoduje, ż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 symlinks
do 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 ls
na górze mogą wyświetlać się dowiązane katalogi, a jednocześnie odróżniać je od zwykłych katalogów?
EDYCJA:
Używam bash
.
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 łączals
symboliczne, zanim to sprawdzi.ls
nielstat()
(ireadlink
dla dowiązań symbolicznych), chyba że skorzystasz z-L
opcji (w którym to przypadku używastat()
)S_ISLNK(st_mode)
również zwróciło prawda przezstat()
, ale tak nie jest - robi to tylko przezlstat()
. Również, że ISLNK nie zwraca true przez stat, nawet jeśli link jest linkiem do linku. Oznacza to, żeISLNK
może nigdy nie zwróci prawdy poprzez statystyki, chociaż jest to rodzaj nieokreślonego ...stat
daje właściwości pliku na końcu dowiązań symbolicznych. Jeśli to nie istnieje lub jest niedostępne,stat
zwraca ENOENT, więc to, co zostanie zwróconestat
, nigdy nie będzie dowiązaniem symbolicznym.stat()
nigdy nie powie ci nic na temat dowiązań symbolicznych, tak jakopen
nigdy nie otworzy dowiązań symbolicznych, anichmod()
nie zmieni uprawnień dowiązań symbolicznych ... itd.Odpowiedzi:
Nie, ale jeśli używasz
zsh
, możesz:Możesz także zdefiniować globalną kolejność sortowania, taką jak:
i używaj go w następujący sposób:
W ten sposób, można ją używać do innych poleceń niż
ls
lubls
z różnymi opcjami, albo dla różnych wzorów, takich jak:lub:
Jeśli musisz użyć
bash
, odpowiednik wyglądałby następująco:bash
nie ma kwalifikatorów globowania ani żadnego sposobu wpływania na porządek sortowania globów, ani żadnego sposobu na zmianę nullglob dla poszczególnych globów, ani też lokalnego kontekstu dla opcji (innych niż uruchomienie podpowłoki, stąd()
zamiast{}
wyżej) AFAIK .źródło
bash
?