Как иметь дело с утилитами с тем же именем, но вести себя по-другому между вариантами Unix?

Что мятный набор должен использовать для шрифта и локали? Можно найти настройки путем нажатия на верхнее левое из мятного окна, выбрать 'Опции...' и затем нажать 'текст'.

Мой установлен на Шрифт: Consolas, с 11 точками. Локаль: en_US, Набор символов: UTF-8.

Попробуйте это сначала, затем попытайтесь установить свою Локаль на русский язык.

3
06.03.2015, 00:35
2 ответа

Unix имеет сложную историю . Со временем многие варианты накопили множество различных команд и опций.

Существует стандарт, подобный большинству Unix-подобных систем, или скорее иерархия стандартов: POSIX и POSIX+XSI (ранее известный как Single Unix - Single Unix теперь POSIX с XSI частями, помеченными как необязательные). Вы можете рассчитывать на все Unix-подобные и не антикварные или встроенные реализации POSIX-2004 a.k.a. Single Unix v3 a.k.a. Open Group Base Specification Issue 6; более новая версия (POSIX-2008 = SUSv4 = Issue 7) поддерживается не везде и не везде даже сегодня.

Если вас интересует только OSX (и FreeBSD, откуда взялось большинство утилит OSX) и не встроенный Linux, вы можете рассчитывать на большее количество команд и опций: и те, и другие имеют больше возможностей, чем в среднем. Вам необходимо обратиться к руководству, чтобы узнать, что поддерживают обе ОС.

Встраиваемые системы Linux (и некоторые вышестоящие встраиваемые системы Linux), а также Cygwin поставляются с утилитами GNU. Утилиты GNU обычно обладают гораздо более удобными функциями, чем остальные утилиты конкурентов.

Команда stat - пример, где POSIX ничего не говорит, OSX имеет определенный синтаксис, а GNU обладает аналогичной функциональностью, но с другим синтаксисом.

Вы можете установить утилиты GNU на большинство Unix-вариантов. Для OSX смотрите https://apple.stackexchange.com/questions/69223/how-to-replace-mac-os-x-utilities-with-gnu-core-utilities.

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

3
27.01.2020, 21:12

Это не UNIX против Linux, а скорее BSD против GNU.

Обе семьи доступны в качестве исходного кода и могут быть установлены на любой ОС. Просто Googling «GNU для Mac» нашел несколько страниц с инструкциями по использованию HomeBrew, или другому менеджеру пакетов OSS для Mac, для замены инструментов BSD на их версию GNU.

О том, как сохранить здравомыслие при работе с обоими наборами инструментов:

Большинство различий, которые я видел падение в два лагеря: больше вариантов и более гибкостью анализа.

. Необычные варианты отображения. Некоторые из них являются общими для нескольких инструментов. Например, многие команды принять -h или -H вариант, чтобы показать «читаемые единица человека», как кило- гига Мега и т.д.

Гибкость синтаксического анализа приходит Поскольку большинство команд используют библиотеку GetOPT , которая в версии GNU более современна и способна. Наиболее очевидным следствием является то, что в то время как большинство команд документируются как:

command [options] file file...

, если они используют библиотеку GUNU GETOPT , параметры могут быть перемещены с файлами. Например, в GNU вы можете использовать:

ls -lt fileA fileB

или

ls -l fileA -t fileB

и получить тот же результат, потому что -l и -t может присутствовать в любом месте в командной строке. В системах BSD вторая форма дает ошибку или может попытаться найти файл под названием -T .

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

4
27.01.2020, 21:12

Теги

Похожие вопросы