Cài đặt coreutilsvới Homebrew và bí danh llđể gls -Flh --group-directories-firstthay thế.
brew install coreutils cài đặt GNU Coreutils , trong trường hợp nó không được cài đặt.
- Sử dụng
alias ll='gls -Flh --group-directories-first'trong .bashrc.
(Nếu bạn muốn sử dụng cùng một .bashrctệp trong cả hai hệ điều hành, xem bên dưới.)
Trong Ubuntu, lsđược cung cấp bởi GNU Coreutils , thứ mà Ubuntu luôn có. Đó là lý do tại sao lshỗ trợ --group-directories-firsttrong Ubuntu. Có lẽ bạn cũng đã từng sử dụng phiên bản GNU Coreutils lstrên macOS, mà Homebrew cài đặt glsnhưng có thể sử dụng được theo lsnhiều cách.
lslà một lệnh bên ngoài, không phải là nội dung Bash. Sử dụng một phiên bản hoặc bản dựng khác của Bash sẽ không ảnh hưởng đến nó. Tôi không chắc điều gì đã xảy ra khi bạn nâng cấp Bash bằng Homebrew. Có lẽ nhiều hơn Bash đã được nâng cấp quá; có thể bạn đã có mộtlshàm shell hoặc bí danh được xác định trong tệp cấu hình toàn cầu đã được thay thế; có thể bạn đã có một liên kết tượng trưnglsđã chỉglsvà bị ghi đè; có thể bạn vẫn còn một cái gì đó như thế nhưng bạn$PATHđã thay đổi. Bất cứ điều gì đã xảy ra, GNU Coreutils lshỗ trợ--group-directories-first và chuyển sang nó (như tôi tin rằng bmike đang đề xuất ) sẽ khắc phục vấn đề của bạn.
Nếu vì lý do nào đó bạn muốn sử dụng cùng một .bashrctệp trong cả hai hệ thống, có một vài cách tiếp cận có thể. Bạn có thể tạo một liên kết tượng trưng, tập lệnh trình bao bọc, hàm shell hoặc (vì mở rộng bí danh Bash là không hồi quy) bí danh cho glshệ thống Ubuntu của bạn. Nhưng tôi đề nghị thay vì kiểm tra mà hệ điều hành đang được sử dụng trong .bashrc. Mặc dù bạn sẽ nhận được một llbí danh khác nhau được xác định trong mỗi hệ thống, phương pháp này có lợi ích là tự ghi lại tài liệu. Bạn .bashrcsẽ có ý nghĩa với bạn trong một năm, hoặc một tháng.
if [ "$OSTYPE" == linux-gnu ]; then # Is this the Ubuntu system?
alias ll='ls -Flh --group-directories-first'
else
alias ll='gls -Flh --group-directories-first'
fi
Hoặc nếu bạn thấy bạn thường thích chạy Coreutils ls, ngay cả khi bạn không sử dụng llbí danh, bạn có thể tạo lsbí danh để gls:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(Cảm ơn bạn đã đến siousshjp vì đã bắt lỗi trong phiên bản trước của kịch bản đó.)
lshoặc macOSls? Bạn đã thử cái khác chưa?