Установить 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. Может быть, больше, чем Bash тоже был улучшен; возможно у вас была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
? Ты пробовал другой?