Могу ли я использовать .bashrc, чтобы ls отображал цвета как на OS / X, так и на Linux?

Я запускаю OS / X на своей персональной машине и Linux на своих удаленных серверах. (Я никогда не мог позволить Xserve даже вернуться, когда они все еще сделали их.) Я бы хотел использовать тот же .bashrc-файл для обоих, и я хочу, чтобы я показывал мне цвета, чтобы я мог идентифицировать исполняемые файлы, каталоги и как.

Но GNU ls на Linux хочет увидеть --colors командной строки --colors или он откажется показывать цвета. Apple (BSD?) ls предпочитает export CLICOLORS=1 переменную оболочки export CLICOLORS=1 чтобы показать ей, чтобы показывать цвета.

Я бы сделал и то, и другое, но Apple ls barfs, если он увидит неизвестный переключатель --colors .

Есть ли хороший способ в .bashrc для того, чтобы определить, принимает ли ls коммутатор, а затем решает, следует ли его псевдониму с помощью --colors или нет?

  • Странное форматирование даты в сценарии bash
  • Локальный, обычный файл вызывает зависание `stat` или` ls -l`
  • 'ls' показывает два идентичных файла в каталоге
  • Выполните условие IF из результата, который мы получаем с удаленного сервера
  • Как я могу остановить ls от спуска в директории, похожие на чернослив для поиска?
  • Изменить временную метку файла и время показа вместо года с помощью ls
  • Как перечислить n-й самый младший файл (без разбора ls!)
  • Удаление каталога, в котором нет файлов
  • 2 Solutions collect form web for “Могу ли я использовать .bashrc, чтобы ls отображал цвета как на OS / X, так и на Linux?”

    Когда вы пытаетесь сделать что-то портативно, протестируйте функции, а не платформы:

     if ls --help 2>&1 | grep -q -- --color then alias ls='ls --color=auto -F' else alias ls='ls -FG' fi 

    Тесты платформы ломаются, когда платформы меняются. OS X (теперь macOS) отправляет смесь инструментов BSD и GNU userland, и этот микс имеет тенденцию смещаться в сторону BSD. Итак, тест на «OS X» сегодня может завершиться неудачно, когда Apple заменит инструмент GNU, в котором вы были в зависимости от его эквивалента BSD. Функциональные тесты чаще всего продолжают работать при смене лица.

    В качестве бонуса иногда вы создаете поддержку для платформ, с которых вы изначально не тестировали. Вышеупомянутый фрагмент скрипта также должен делать правильные действия в Solaris и FreeBSD, например.

    (Это философия GNU Autoconf, кстати, вот почему скрипт configure написанный 10 лет назад, вероятно, по-прежнему работает сегодня в совершенно новой системе.)

    Измените псевдонимы. Я просто показываю значения, которые я использую в ближайших к MacOS и Linux системах, когда пишу это.

    вы можете проверить, является ли это linux, а затем установить ls для него. то есть:

     export CLICOLORS=1 if uname -a | grep Linux >/dev/null; then # your linux ls stuff fi 
    Linux и Unix - лучшая ОС в мире.