Нужен ли мне дистрибутив Linux для изучения командной строки или OS X будет достаточно?

12

Я собираюсь научиться использовать командную строку. В частности, я буду использовать книгу: «Командная строка Linux: полное введение» . Теперь я должен использовать дистрибутив Linux, чтобы пройтись по книге, или OS X будет достаточно?

Если мне понадобится дистрибутив Linux, то будет ли достаточно использовать его через виртуальную машину или мне нужно будет установить его самостоятельно?

Утка
источник
8
Единственная причина, по которой вам нужно будет установить ОС на физическое оборудование, а не виртуальную машину, связана с производительностью. Если вы просто пытаетесь изучить базовые процедуры, это не будет проблемой. Вероятно, предпочтительнее запускать что-то вроде Arch в виртуальной машине.
Братчли
то же обсуждение на apple.stackexchange.com/q/208692/7057
Гленн Джекман
4
Командная строка - это просто связь между вами и системой. Синтаксис оболочки Bash может быть таким же, но когда вам нужно разобраться с системными частями, будут различия. Например, OS X не имеет /procфайловой системы, USB-накопители, как правило, появляются /Volumesне так, /media/usernameкак в Ubuntu. У CentOS другой dhclient.confфайл. И так далее и тому подобное
Сергей Колодяжный
4
Предлагаемый межсайтовый дубликат - это совершенно другой вопрос , касающийся производительности виртуализации на MacBook. Вопрос не кросс-пост.
Майкл Гомер
2
@ Utku Я думаю, что могло бы помочь разделить несколько понятий: использование командной строки и операционной системы, в которой вы ее используете. Если вы хотите узнать командную строку, OS X будет работать, а также Linux, BSD или даже Windows с некоторыми усилиями. Если вы хотите познакомиться с UNIX или Linux, командная строка - это лишь малая часть - это всего лишь интерфейс, через который вы будете взаимодействовать с ОС. Я думаю, что прояснение того, что вы собираетесь сделать, также облегчит изучение :)
rickcnagy

Ответы:

33

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

Кроме того, командная строка Linux в основном состоит из coreutils bash + GNU , который сильно отличается от BSD Unix (а OS X является наследником BSD Unix). Существует очень большая разница в предпочтениях при написании аргументов в BSD Unix и GNU Linux. Вы можете укусить себя даже как не новичок с различными опциями для стандартных утилит , как psи tarпри работе в обеих системах.

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

Это также позволит вам экспериментировать, не беспокоясь о том, как сломать компьютер, удалив или изменив любые важные файлы.

И последнее, хотя, конечно, не в последнюю очередь, это позволит вам настроить SSH-подключение к вашей виртуальной машине из терминала OS X, чтобы вы могли привыкнуть к использованию ключей SSH и к мысли, что не имеет значения, является ли ваш сервер Linux это собственная машина, локальная виртуальная машина или работающая на AWS или Digital Ocean: все работает одинаково!

seumasmac
источник
Кстати, у меня будет такая же структура каталогов на виртуальной машине, как и на собственном Linux?
Утку
3
Да. Для ваших целей он точно такой же, как и для нативной установки.
seumasmac
Это самый безопасный ответ, но в зависимости от книги я бы предположил, что введение в книгу командной строки не покажет многих (если таковые имеются) различий. После взгляда на руководство единственное, что мне выпало, - это объяснение структуры каталогов.
pllee
1
@Utku Если в книге упоминается / dev / sda или / dev / hda, и вы не можете найти ее в своей установке, попробуйте поискать / dev / vda. Это единственное возможное различие, которое я могу придумать, которое будет иметь для вас значение.
Kimmax
1
Вам даже не нужно использовать виртуальную машину, использование live CD также возможно, если вы не хотите занимать много места на вашем HD. Его также можно загрузить с флешки, а создание CD / загрузочной флешки занимает очень мало времени.
Крис Cirefice
18

OS X достаточно для изучения командной строки, поскольку она является сертифицированной UNIX и соответствует POSIX. Если вы смотрите на специфическую для Linux книгу командной строки, вы должны иметь в виду, что пользовательские инструменты в OS X являются производными от BSD, в то время как инструменты для Linux являются GNU, и между ними есть некоторые тонкие (и не очень тонкие) различия.

Если вы хотите учиться с помощью инструментов GNU, вы можете установить пользовательское пространство GNU через macports или homebrew, или можете выполнить полную установку Linux на ВМ.

Casey
источник
Итак, я думаю, что нет «универсальной» книги в командной строке? Книга будет использовать инструменты GNU или BSD. Это правильно?
Утку
1
Если у вас есть книга на оболочке (например bash), она подойдет практически для любой системы, в которой она работает. Это зависит от того, когда вы начинаете использовать функции операционной системы или специальные инструменты вне оболочки.
2015 года
1
@teppic Но насколько полезна сама по себе оболочка ? AFAIK, оболочка сама по себе бесполезна, так как не имеет команды для выполнения. Даже самые простые команды вроде lsдолжны быть из GNU или BSD (пожалуйста, исправьте, если я ошибаюсь). Итак, я думаю, что это означает, что мне нужно выбрать одну цепочку инструментов (или среду) и начать там изучение командной строки. Это правильно?
Утку
@ Utku команды одинаковы (по большей части), но параметры и выходные данные могут отличаться (часто потому, что GNU реализует много расширений). Легко переключаться между инструментами BSD и GNU.
Кейси
@casey Так что я мог бы просто начать с книги по OS X. Тогда, если я столкнусь с поведением, не описанным в книге, я мог бы попробовать его в Linux или просто посмотреть вариант BSD той же команды?
Утку
9

Пока есть несколько хороших ответов, но еще одна причина держаться подальше от стандартных инструментов командной строки OS X - они очень старые версии. Например, OS X выпускается grepс 2004 года и bashс 2007 года! Причина в том , что компания Apple отказывается от корабельных инструментов под лицензией GPL3.

Если вы не хотите устанавливать Linux должным образом, вы можете вручную установить последние версии (возможно, через какую-то систему портов, такую ​​как MacPorts, Fink или Homebrew).

Sparhawk
источник
3

Первое отличие:

ls * -lah

Работает на Linux, не работает на Mac (параметры должны быть на первом месте). Используйте виртуальную машину или получите книгу для Mac OS. Вы должны изучить тот, который вы будете использовать больше позже, а затем различия.

user136809
источник
3
Вы должны сказать, что ls * -lahработает в Linux так же, как работает в Linux, и работает в OS X так же, как работает в OS X. Принцип работы в OS X является правильным в соответствии с POSIX (12. Соглашения об утилитах / 12.2 Рекомендации по синтаксису утилит / Принцип 9) : «Все параметры должны предшествовать операндам в командной строке». Как описано в getopt (3) : «Если… установлена ​​переменная окружения POSIXLY_CORRECT , тогда обработка опции останавливается, как только встречается аргумент без опции».
G-Man говорит: «Восстановите Монику»
3

Лучший способ изучить Unix - это работать с ним. Я бы сказал, что стоит столкнуться с различиями между примерами для Linux в вашей книге и версиями стандартных инструментов для Mac, просто чтобы иметь возможность работать со своими собственными файлами и данными в обычной рабочей среде (OS X).

Обнаружение различий также будет ценным обучающим опытом, даже если иногда это расстраивает.

Также полезно иметь виртуальную машину Linux (например, для потенциально опасных команд), но ничто не сравнится с практическим использованием для обучения.

саз
источник