Кто-нибудь знает команду терминала, которая дает мне модель моего Mac?
Например - «MacBook Pro, Retina, 13-дюймовый, середина 2013 года» или «MacBook Pro, конец 2009 года» или «Mac Mini, начало 2010 года».
Эта информация не существует в SystemProfiler ( /usr/sbin/system_profiler SPHardwareDataType
), но в OS X 10.7 и OS X 10.8 вы можете увидеть эту информацию, когда нажимаете «Подробнее ...» в окне «Об этом Mac».
But in OS X 10.7 and 10.8...
предложением? Когда я смотрю в окне «Об этом Mac», я не вижу ничего, что бы указывало на конец 2009 года или что-то подобное.About This Mac
а затем наMore Info...
. Я понятия не имею, как получить эту информацию в вашем терминале.Ответы:
Вы можете косвенно получить эту информацию с веб-страницы и команды curl. В прошлом этот URL-адрес был удален и ограничен по скорости, а за ним скрыта какая-то капча для предотвращения такого использования, поэтому вам, возможно, придется прибегнуть к другим возможностям, таким как https://checkcoverage.apple.com/ в этом случае.
В зависимости от того, является ли ваш серийный номер длиной 11 или 12 символов, возьмите последние 3 или 4 символа соответственно и передайте его по следующему URL после части ? Cc = XXXX . Если ваш серийный номер состоял из 12 символов и заканчивался на DJWR, вы должны выполнить эту команду:
Чтобы получить серийный номер, используйте следующую команду:
Таким образом, у вас может быть сложная команда для запроса интернета, если вам нужна одна команда:
а затем запустите вывод этого через sed, чтобы сократить до ключевой части
Раньше был файл частной библиотеки с этими сопоставлениями, чтобы вы могли обращаться к нему в автономном режиме, но я заметил, что он пропал с 10.8.3 (и, возможно, ранее), так что вышеупомянутый трюк - единственный, который я знаю, который работает на текущей ОС без сторонних библиотек.
Несколько хороших библиотек сторонних производителей обеспечивают поиск этого:
Следует отметить , что по состоянию на ноябрь 2017 года, Apple была вынуждена использовать
https
за кадромhttp
для этой службы.источник
sysctl -n hw.model
указанному ниже,ioreg -c IOPlatformExpertDevice -d 2 | awk -F\" '/IOPlatformSerialNumber/{print $(NF-1)}'
будет работать быстрее для получения серийного номера.Вы можете использовать команду
в Терминале, чтобы получить идентификатор модели вашей машины.
Затем вы можете ввести этот идентификатор на этом сайте, где будет указан месяц и год выпуска конкретной модели.
Как упоминалось в комментариях ниже, следующая команда намного быстрее:
источник
system_profiler SPHardwareDataType | grep "Model Identifier"
работает намного быстрее, чем полный профилировщик, но по-прежнему не возвращает маркетинговое имя, как просил OP. Посмотрите мой ответ для команды, которая работает вокруг части «поиска» вашего ответа в терминальной дружественной манере.sysctl hw.model
быстрее, чем приведенная выше команда.В El Capitan и Sierra в частной структуре есть файл plist с информацией для каждого идентификатора модели; этот дикт включает маркетинговое название (в котором указан год выпуска). Я не знаю, с какой версией ОС пришел этот конкретный файл, но он НЕ на Snow Leopard (единственное, что у меня есть, старше, чем El Capitan).
Таким образом, вы можете использовать это (или другие подобные приемы для других версий ОС после проверки версии ОС, если вы знаете эти приемы, чего я не знаю), и если это не применимо, вы всегда можете прибегнуть к подходу Это требует доступа в Интернет.
Это не совсем то же самое, что показано в Об этом Mac, в моем случае это
MacBook Pro (Retina, 13-дюймовый, начало 2015 года), в
то время как это показывает
13 -дюймовый MacBook Pro с Retina-дисплеем (начало 2015 года),
но с точки зрения восприятия человеком. Я думаю, что это достаточно близко.
источник
MacBookPro12,1
) , что означает , что он всегда утверждает , что вы находитесь на ранней 2015 13" MBP./usr/libexec/PlistBuddy -c "print :$(sysctl hw.model | cut -f 2 -d ' '):_LOCALIZABLE_:marketingModel" /System/Library/PrivateFrameworks/ServerInformation.framework/Versions/A/Resources/English.lproj/SIMachineAttributes.plist
Поздно к игре, но вот один из подходов:
,
Эта функция читает файл plist, ищет
CPU Names
в этом файле:затем с помощью разделителя
"
анализирует четвертое поле:Протестировано для работы на поддерживаемых в настоящее время версиях OS X.
источник
defaults read ~/Library/Preferences/com.apple.SystemProfiler.plist 'CPU Names' | cut -sd '"' -f 4 | uniq
Вот один вкладыш, использующий PlistBuddy, без каких-либо grep, sed или awk-wardness.
это возвращает что-то вроде:
15" MacBook Pro with Thunderbolt 3 and Touch ID (Mid 2017)
-
Еще один лайнер, который выдает немного другую строку, также используя PlistBuddy (с небольшим количеством awk):
MacBook Pro (15-inch, 2017)
Отдайте несколько из приведенных выше ответов за это.
источник
Комбинируя ответ Саару с отлаженной версией Ричарда Гамильтона , я получаю следующее, которое работает с 10.6 по 10.12 (хотя размер выборки на 10.6 - это всего одна машина) и, возможно, раньше / позже, и не зависит от соединения с Интернет и серверы Apple не меняются
Некоторые заметки о том, что я обнаружил, чтобы получить здесь:
defaults
чтобы работать в 10.6, и поэтому заново добавить его вручную в-f
тесты оболочки-n
флагsysctl
средство печатает только значение, сэкономив нам некоторыеsed
илиawk
работуисточник
У нас есть около 2019 MBP, которые возвращают разные модели года для двух однострочников, размещенных tabrindle .
Его первая однострочная (использующая
sysctl -n hw.model
) возвращает 2018 для модели 2019:Неправильно: 15-дюймовый MacBook Pro с Thunderbolt 3 и Touch ID (середина 2018 года)
Но его вторая однострочная (с использованием
system_profiler SPHardwareDataType
) возвращает правильное имя:Справа: MacBook Pro (15 дюймов, 2019 г.)
источник
Это должно сделать это:
источник