Як командний рядок Mac у порівнянні з Linux?


30

Я люблю Ubuntu Linux - особливо комунальну лінію. Але я мушу визнати, що, принаймні поки що, Windows більш зручний у користуванні - для нього є більше програмного забезпечення, більше драйверів та багато іншого.

Знаючи, що Mac побудований на Unix, змушує мене замислитися, чи це миле місце між ними. Але мені цікаво: наскільки схожий командний рядок Mac на баш Linux ? Чи можу я підібратись із використанням сценаріїв vim та bash, git тощо? Чи відрізняються загальні команди, такі як зміна каталогів? Хтось знає інтернет-ресурс "порівняти та порівняти"?


Відповіді:


11

Bash - це баш, тому оболонка та її вбудовані однакові. Але майте на увазі, що поведінка деяких інструментів на кшталт psабо headможе відрізнятися деталями, тому ваші сценарії можуть вийти з ладу.


5
Майте на увазі, що це не стільки проблема Mac проти Linux, скільки різноманітні аромати Unix. Ви знайдете однакові (насправді більше відмінностей) між Linux і, наприклад, HP-UX.
KeithB

2
Ви можете стандартизувати набір інструментів gnu binutils для Linux та OSX. Macports і homebrew будуть встановлені на OSX. Це принаймні стандартизує такі речі, як ls / tar / тощо. ps все ще залежить від ОС.
skarface

також file: file -iна Linux під час file -IOSX ☹️
Ентоні Конг

30

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


1
+1: вище сказане вірно. Можливо, вам потрібно мати на увазі погоду, коли ваш mac використовує Intel або процесор powerpc, коли мова заходить про компіляцію коду або використання попередньо вбудованих пакетів, я розумію, що нові маки - це лише 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 vs GNU gawk зовсім інша. АБО, ви можете отримати ці версії GNU з макпортів або домашньої пивоваріння та встановити свій PATH таким чином, щоб вони були типовими (над вбудованими версіями).

  2. У MacOS X також є кілька нових класних інструментів. openприємно, він відкриє об’єкт так, ніби ви двічі клацнули по ньому. defaultsдозволяє встановити деякі налаштування, деякі навіть не на панелях налаштувань GUI. textutilможе бути корисним і sayможе бути цікавим.


3

Функціонал командного рядка на Mac та Linux насправді схожий на те, що OS X має аромат UNIX (званий Darwin) під графічним інтерфейсом, який ви бачите.

Оболонка за замовчуванням в OS X - це баш, тому якщо ви знайомі з цим, ви добре налаштуєтесь.

На Mac, програмою командного рядка за замовчуванням є термінал. Існує також ряд інших емуляторів, але в цілому термінал забезпечує дуже схожий зовнішній вигляд на оболонку, до якої ви звикли в Linux.

Основним джерелом відмінностей є:

  • Різні аргументи командного рядка часом (тобто див. duДля прикладу). Основні команди типу тощо cdабо lsподібні.
  • Існує більше частин OS X, які не слід редагувати вручну, як це можна зробити в Linux. Це своя тема, але слід пам’ятати, що запуск Mac не зовсім схожий на запуск Linux-коробки з точки зору конфігурації та обслуговування.

Однак, у командному рядку в OS X також є багато класних хак (наприклад, opencomnand). Існує безліч попередніх тем та публікацій в блогах, де можна отримати більше інформації.

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


0

Ось одна різниця. Спробуйте цю команду в обох Mac і Linux bash shell

find /etc -name "*.conf"

Mac нічого не відображає, хоча у файлі .conf багато / etc.


1
Можливо, ви могли б сказати людям, чому це так.
Мадс

1
Не впевнений, можливо, це має відношення до розширень імені шляху в POSIX. Ця команда працює find /etc/* -name "*.conf". Тим не менш, це було подано як приклад порівняння командного рядка MAC до командного рядка LINUX. Не можу викликати голосування.
Антоній Томас

4
Це тому, що / etc на OSX є символічним посиланням. Якщо ви спробуєте find /etc/ -name "*.conf"це, то вказує / etc - це каталог, а не файл. Чи findтрактує в Linux символічні посилання на каталоги як каталоги за замовчуванням?
МехЕтан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.