Cài đặt coreutils
với Homebrew và bí danh ll
để gls -Flh --group-directories-first
thay 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 .bashrc
tệ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 ls
hỗ trợ --group-directories-first
trong Ubuntu. Có lẽ bạn cũng đã từng sử dụng phiên bản GNU Coreutils ls
trên macOS, mà Homebrew cài đặt gls
nhưng có thể sử dụng được theo ls
nhiều cách.
ls
là 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ộtls
hà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ỉgls
và 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 ls
hỗ 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 .bashrc
tệ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 gls
hệ 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 ll
bí 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 .bashrc
sẽ 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 ll
bí danh, bạn có thể tạo ls
bí 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 đó.)
ls
hoặc macOSls
? Bạn đã thử cái khác chưa?