Я использую Ubuntu 16.04 и OS X.
alias ll='ls -Flh --group-directories-first'
Это псевдоним в моем bashrc, но каким-то образом --group-directories-first
опция стала незаконной в OS X после того, как я обновил bash с помощью Homebrew. На моем рабочем столе Ubuntu я все еще могу использовать эту опцию.
В какой версии Bash опция не поддерживается? Версия Bash в моей машине OS X говоритGNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)
Я хотел бы использовать --group-directories-first
опцию снова. Есть ли способ добиться этого?
ls
или MacOSls
? Ты пробовал другой?Ответы:
Установить
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 Coreutilsls
поддерживает--group-directories-first
, и переключение на него (как я полагаю, bmike предлагает ) должно решить вашу проблему.Если по какой-то причине вы хотите использовать один и тот же
.bashrc
файл в обеих системах, есть несколько возможных подходов. Вы можете создать символическую ссылку, скрипт-обертку, функцию оболочки или (поскольку расширение псевдонима Bash нерекурсивно) псевдоним дляgls
вашей системы Ubuntu. Но я предлагаю вместо этого проверить, какая ОС используется в.bashrc
. Несмотря на то, что вы получите разныеll
псевдонимы, определенные в каждой системе, этот подход имеет преимущество самодокументирования. Ваш.bashrc
будет иметь смысл для вас через год или месяц.Или, если вы обнаружите, что обычно предпочитаете запускать Coreutils
ls
, даже если вы не используетеll
псевдоним, вы можете создатьls
псевдоним дляgls
:(Спасибо большое soroushjp за обнаружение ошибки в более ранней версии этого скрипта.)
источник
"$OSTYPE" != linux-gnu
так как вы хотите присвоить псевдониму ls значение gls, если вы не находитесь в системе Linux GNU (например, ты на маке).