Встановіть за coreutils
допомогою Homebrew та псевдонімів ll
до gls -Flh --group-directories-first
цього.
brew install coreutils
встановлює GNU Coreutils , якщо він не встановлений.
- Використання
alias ll='gls -Flh --group-directories-first'
в .bashrc
.
(Якщо ви хочете використовувати один і той же .bashrc
файл в обох операційних системах, див. Нижче).
У Ubuntu ls
надається GNU Coreutils , який Ubuntu завжди є. Ось чому ls
підтримка --group-directories-first
в Ubuntu. Можливо, раніше ви вже використовували версію GNU Coreutils ls
на macOS, яку Homebrew встановлює як, gls
але яку можна зробити корисною як ls
декількома способами.
ls
це зовнішня команда, а не вбудована Bash. Використання іншої версії або збірки Bash не повинно впливати на неї. Я не впевнений, що сталося, коли ви оновили Bash за допомогою Homebrew. Можливо, більше, ніж Баш також удосконалився; можливо, у вас булаls
функція оболонки або псевдонім, визначений у глобальному файлі конфігурації, який було замінено; можливо, у вас був символічний зв’язок,ls
який вказувавgls
і був перезаписаний; можливо, у вас все ще є щось подібне, але ваше$PATH
змінилося. Що б не сталося, GNU Coreutils ls
підтримує--group-directories-first
, і перехід на нього (як я вважаю, Bmike пропонує ) повинен вирішити вашу проблему.
Якщо ви з якоїсь причини хочете використовувати точно той самий .bashrc
файл в обох системах, є кілька можливих підходів. Ви можете створити симпосилання, сценарій обгортки, функцію оболонки або (оскільки розширення псевдоніма Bash нерекурсивне) псевдонім оболонки для gls
вашої системи Ubuntu. Але замість цього я пропоную перевірити , які ОС в даний час використовується в .bashrc
. Хоча ви отримаєте інший ll
псевдонім, визначений у кожній системі, цей підхід має перевагу як самодокументування. Ваш .bashrc
матиме сенс для вас на рік, або місяць.
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
Або якщо ви вважаєте, що зазвичай вважаєте за краще запускати Coreutils ls
, навіть якщо ви не використовуєте ll
псевдонім, ви можете зробити ls
псевдонім для gls
:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(Дякую перейти до soroushjp за те, що помилився у попередній версії цього сценарію.)
ls
або macOSls
? Ви пробували іншого?