ls
tùy chọn --group-directories-first
làm cho các thư mục được liệt kê ở trên cùng, điều này làm cho đầu ra của ls
đẹp và sạch:
ls -l --group-directories-first
Tuy nhiên, nó không hoạt động symlinks
, mà thực sự là các symlinks
thư mục. Có khả năng sử dụng
ls -l -L --group-directories-first
trong đó sẽ liệt kê cả hai loại thư mục trên đầu, nhưng sẽ không phân biệt giữa thư mục phù hợp và thư mục symlinked, một lần nữa gây nhầm lẫn.
Có thể ls
hiển thị các thư mục symlinked trên đầu, trong khi vẫn giữ chúng khác biệt với các thư mục thông thường?
EDIT:
Tôi đang sử dụng bash
.
ls
không lstat()
(và readlink
đối với các liên kết tượng trưng) trừ khi bạn sử dụng -L
tùy chọn (trong trường hợp đó là sử dụng stat()
)
S_ISLNK(st_mode)
cũng trở lại đúng thông qua stat()
, nhưng nó không - nó chỉ làm như vậy thông qua lstat()
. Ngoài ra, ISLNK không trả về true qua stat ngay cả khi liên kết là liên kết đến liên kết. Có nghĩa là điều đó ISLNK
có thể không bao giờ trả lại đúng thông qua stat, mặc dù đó là loại không xác định ...
stat
cung cấp cho bạn các thuộc tính của tệp ở cuối (các) symlink. Nếu điều đó không tồn tại hoặc không thể truy cập được, thì stat
trả về ENOENT, vì vậy những gì được trả về stat
sẽ không bao giờ là liên kết tượng trưng. stat()
sẽ không bao giờ cho bạn biết bất cứ điều gì về liên kết tượng trưng, giống như open
sẽ không bao giờ mở liên kết tượng trưng hoặc chmod()
sẽ không thay đổi quyền của liên kết tượng trưng ... vv
ls
. Theostat()
cuộc gọi hệ thống, một liên kết tượng trưng đến một thư mục vẫn là một thư mục (S_ISDIR(st_mode)
sẽ trả về đúng). Rõ ràngls
giảm giá các liên kết tượng trưng trước khi nó kiểm tra điều này.