Встановіть за 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? Ви пробували іншого?