Как командная строка Mac сравнивается с Linux?

30

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

Знание того, что Mac построен на Unix, заставляет задуматься, а не сладкое ли это место между ними. Но мне интересно: насколько похожа командная строка Mac на bash Linux ? Могу ли я разобраться с использованием сценариев vim, bash, git и т. Д.? Будут ли общие команды, такие как изменение каталогов, другими? Кто-нибудь знает онлайн ресурс "сравни и сравнивай"?

Натан Лонг
источник

Ответы:

11

Bash - это bash, поэтому оболочка и ее встроенные компоненты совпадают. Но учтите, что поведение некоторых инструментов, таких как psили headможет отличаться в деталях, может привести к сбою ваших сценариев.

Сис Тиммерман
источник
5
Имейте в виду, что это не столько проблема Mac против Linux, сколько различные варианты Unix, но это немного другая проблема. Вы найдете то же самое (на самом деле больше различий) между Linux и, например, HP-UX.
KeithB
2
Вы можете стандартизировать набор инструментов gnu binutils для Linux и OSX. Macports и homebrew будут установлены на OSX. Это как минимум стандартизирует такие вещи, как ls / tar / etc. PS по-прежнему зависит от ОС.
skarface
также file: file -iна linux в то время как file -Iв OSX ☹️
Энтони Конг
30

Mac OS X - это ОС Unix, и ее командная строка на 99,9% такая же, как и в любом дистрибутиве Linux. bashэто ваша оболочка по умолчанию, и вы можете скомпилировать все те же программы и утилиты. Там нет заметной разницы. Вы также можете найти различные проекты, такие как MacPorts, которые обеспечивают управление пакетами для Mac.

w0rm
источник
1
+1: сказанное выше верно. Возможно, вам придется помнить о том, что ваш Mac использует процессор Intel или PowerPC, когда дело доходит до компиляции кода или использования готовых пакетов, я понимаю, что новые Mac - это только Intel, но я могу ошибаться. typo @ w0rm: пакет * управление. :-)
Sirex
2
Хотя ваши скрипты, вероятно, будут работать как для Mac, так и для Linux, всегда разумно тестировать их на обеих платформах. Я видел некоторые (тонкие) различия между дистрибутивами Linux и даже между разными версиями одной и той же версии Linux.
Roalt
1
FeeBSD, если быть точным.
digitxp
6
@digit, это должна быть версия BSD, за которую они взимают плату? s / F / Fr /;)
Джон Т
18
99,9% не правильно. OS X является вариантом BSD и не имеет утилит GNU. Вы всегда можете установить их, но многие команды имеют разные параметры. Это Unix, но не Linux.
Маттео
12

Это очень похоже, но если вы знаете о каких-либо различиях между BSD и Linux, ожидайте, что Mac будет работать с BSD.

Нес
источник
Интересный. Можете ли вы подробнее рассказать об этом? Почему это?
fat_mike
@fat_milke, потому что OSX использует утилиты BSD, а не GNU, которые использует
Linix
b / c Mac OSX, производная от ядра * nix (NeXTSTEP на основе BSD), которое разветвилось в Unix раньше, чем в Linux. Таким образом, они оказались с немного различными реализациями некоторых утилит. См. En.wikipedia.org/wiki/MacOS
Ницше
9

Пара вещей - это действительно зависит от того, что вы подразумеваете под командной строкой.

  1. Вы, вероятно, запустите bash, который будет таким же, как bash в любой другой UNIX. Язык программирования bash тоже будет таким же - при условии, что это та же версия. Версии Bash имеют небольшие различия в языке, но это не имеет ничего общего с MacOSX против Linux как таковой.

Вы можете столкнуться с этим - / bin / bash на Mac прикреплен к 3.x по причинам лицензирования. Вы можете найти незначительные проблемы совместимости, если вы привыкли к 4 или даже 5.

  1. bash сам по себе является небольшим подмножеством «командной строки». Чтобы быть полезным, вы обычно используете другие распространенные утилиты UNIX, такие как awk, ls или cut. Из-за своей истории (она произошла от BSD, а не от Linux или SystemV), версии утилит для Mac будут отличаться от тех, которые вы привыкли использовать в Linux (также как версии GNU). Они будут иметь по крайней мере некоторые различия флагов, а также некоторые отличия вывода и функциональности по сравнению с Linux. Сценарии, которые их используют, должны быть изменены для компенсации. BSD awk против GNU gawk довольно сильно отличается. ИЛИ, вы можете получить эти версии GNU из macports или home brew и установить свой PATH так, чтобы это были значения по умолчанию (по сравнению со встроенными версиями).

  2. MacOS X также имеет несколько новых интересных инструментов. openхорошо, он откроет объект, как если бы вы дважды щелкнули по нему. defaultsпозволяет вам установить некоторые настройки, некоторые даже не в панелях настроек GUI. textutilможет быть полезным и sayможет быть весело.

Рич Гомолка
источник
3

Функциональность командной строки в Mac и Linux действительно схожи, поскольку OS X имеет вид UNIX (называемый Darwin) под GUI, который вы видите.

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

На Mac приложением командной строки по умолчанию является Терминал. Существует также ряд других эмуляторов, но в целом Terminal обеспечивает очень похожий внешний вид на оболочку, к которой вы привыкли в Linux.

Основным источником различий являются:

  • Различные аргументы командной строки время от времени (например, см., duНапример). Основные команды, такие как cdили lsдр., Похожи.
  • Есть больше частей OS X, которые не должны редактироваться вручную, как вы могли бы сделать в Linux. Это отдельная тема, но имейте в виду, что запуск Mac не совсем похож на запуск Linux-бокса с точки зрения конфигурации и поддержки.

Тем не менее, есть также много классных хаков, доступных из командной строки в OS X (например, opencommnand). Есть много предыдущих тем и сообщений в блоге там с дополнительной информацией.

Вы также можете получить ваши руки на кучу пакетов с открытым исходным кодом (то есть git, hgи т.д.) через MacPorts, Fink или несколько других систем управления пакетами для OS X. Вы можете также создавать другие пакеты с исходным кодом , предназначенный для UNIX / Linux , как системы по мере необходимости ,

dtlussier
источник
0

Здесь есть одно отличие. Попробуйте эту команду в оболочке bash для Mac и Linux

find /etc -name "*.conf"

Mac ничего не показывает, хотя внутри / etc много файлов .conf.

Энтони Томас
источник
1
Может быть, вы могли бы рассказать людям, почему это так.
Мадс
1
Не уверен, может быть, это связано с расширениями путей в POSIX. Эта команда работает find /etc/* -name "*.conf". Тем не менее, это было предоставлено в качестве примера для сравнения командной строки MAC с командной строкой LINUX. Невозможно мотивировать голос.
Энтони Томас
4
Это потому, что / etc в OSX является символической ссылкой. Если вы попробуете find /etc/ -name "*.conf"это указать, то / etc - это каталог, а не файл. Есть ли findв Linux рассматривать символические ссылки на каталоги как папки по умолчанию?
MechEthan