Czy ktoś zna polecenie terminalu, które daje mi model mojego komputera Mac?
Na przykład - „MacBook Pro, Retina, 13-calowy, połowa 2013 r.” Lub „MacBook Pro, koniec 2009 r.” Lub „Mac Mini, początek 2010 r.”.
Ta informacja nie istnieje w SystemProfiler ( /usr/sbin/system_profiler SPHardwareDataType
), ale w OS X 10.7 i OS X 10.8 możesz zobaczyć te informacje po kliknięciu „Więcej informacji ...” w oknie „O tym Macu”.
But in OS X 10.7 and 10.8...
zdanie? Kiedy patrzę w okno About This Mac, nie widzę niczego, co mówi o końcu 2009 roku lub czegoś podobnego.About This Mac
a następnie włączyszMore Info...
. Nie mam pojęcia, jak uzyskać te informacje w swoim terminalu.Odpowiedzi:
Możesz uzyskać te informacje pośrednio ze strony internetowej i polecenia curl. W przeszłości ten adres URL był usuwany, a stawki podlegały ograniczeniom i pozostawione za jakimś captcha, aby uniemożliwić to użycie, więc w takim przypadku może być konieczne skorzystanie z innych dróg, takich jak https://checkcoverage.apple.com/ .
W zależności od tego, czy Twój numer seryjny ma długość 11 czy 12 znaków, weź odpowiednio 3 lub 4 ostatnie znaki i umieść je pod następującym adresem URL po części ? Cc = XXXX . Jeśli twój numer seryjny miał 12 znaków i zakończył się na DJWR, wydasz następujące polecenie:
Aby uzyskać numer seryjny, użyj następującego polecenia:
Tak więc możesz mieć skomplikowane polecenie, aby wysłać zapytanie do Internetu, jeśli potrzebujesz jednego polecenia:
a następnie przeprowadź wynik przez sed, aby przejść do kluczowej części
Kiedyś znajdował się prywatny plik biblioteki z tymi mapowaniami, więc możesz zajrzeć do niego offline, ale zauważyłem, że zniknął z 10.8.3 (i być może wcześniej), więc powyższa sztuczka jest jedyną, którą znam, która działa na obecnym systemie operacyjnym bez bibliotek stron trzecich.
Niektóre fajne biblioteki stron trzecich przedstawiają to:
Należy pamiętać, że od listopada 2017 r. Apple wymusiło użycie tej opcji
https
whttp
przypadku tej usługi.źródło
sysctl -n hw.model
wymienionych poniżej,ioreg -c IOPlatformExpertDevice -d 2 | awk -F\" '/IOPlatformSerialNumber/{print $(NF-1)}'
będzie działać szybciej w celu uzyskania numeru seryjnego.Możesz użyć polecenia
w terminalu, aby uzyskać identyfikator modelu urządzenia.
Następnie możesz wprowadzić ten identyfikator na tej stronie, która będzie zawierała miesiąc i rok uruchomienia danego modelu.
Jak wspomniano w komentarzach poniżej, następujące polecenie jest znacznie szybsze:
źródło
system_profiler SPHardwareDataType | grep "Model Identifier"
działa znacznie szybciej niż pełny profiler, ale nadal nie zwraca nazwy marketingowej, o co poprosił PO. Zobacz moją odpowiedź na polecenie, które działa w części „odszukaj” twojej odpowiedzi w przyjazny dla terminalu sposób.sysctl hw.model
jest szybszy niż powyższe polecenie.W El Capitan i Sierra znajduje się plik plist w prywatnym środowisku ze szkicem informacji dla każdego identyfikatora modelu; dykt ten zawiera nazwę marketingową (która zawiera rok modelowy). Nie wiem, z jaką wersją systemu operacyjnego przyszedł ten konkretny plik, ale NIE jest on w systemie Snow Leopard (jedyne, co mam, to starszy niż El Capitan).
Więc możesz użyć tego (lub innych podobnych sztuczek dla innych wersji systemu operacyjnego po sprawdzeniu wersji systemu operacyjnego, jeśli znasz te sztuczki, których ja nie znam), a jeśli to nie miało zastosowania, zawsze możesz wrócić do tego podejścia który wymaga dostępu do Internetu.
Nie jest to dokładnie to samo, co pokazuje About This Mac, którym w moim przypadku jest
MacBook Pro (Retina, 13-calowy, początek 2015 r.),
Podczas gdy pokazuje
13 -calowy MacBook Pro z wyświetlaczem Retina (początek 2015 r.),
Ale w kategoriach czytelnych dla człowieka Myślę, że jest wystarczająco blisko.
źródło
MacBookPro12,1
), co oznacza, że zawsze twierdzi, że jesteś na początku 2015 r. 13 "Mb./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
Późno do gry, ale oto jedno podejście:
.
Ta funkcja odczytuje plik plist, szuka
CPU Names
w tym pliku:, a następnie użycie separatora
"
analizuje czwarte pole:Testowany do pracy z obecnie obsługiwanymi wersjami OS X.
źródło
defaults read ~/Library/Preferences/com.apple.SystemProfiler.plist 'CPU Names' | cut -sd '"' -f 4 | uniq
Oto jeden linijka za pomocą PlistBuddy, bez grep, sed ani awk-wardness.
zwraca to coś takiego:
15" MacBook Pro with Thunderbolt 3 and Touch ID (Mid 2017)
-
Kolejna linijka, która daje nieco inny ciąg, również przy użyciu PlistBuddy (z odrobiną awk):
MacBook Pro (15-inch, 2017)
Podziękowania dla kilku powyższych odpowiedzi.
źródło
Łącząc odpowiedź Saaru z debugowaną wersją Richarda Hamiltona otrzymuję następujące, które działają od 10.6 do 10.12 (chociaż wielkość próbki na 10.6 to tylko jedna maszyna) i prawdopodobnie wcześniej / później i nie zależy od połączenia z Internet i serwery Apple się nie zmieniają
Kilka notatek o tym, co odkryłem, aby się tu dostać:
defaults
aby działał w 10.6, i dlatego ponownie dodaj go ręcznie do-f
testów powłoki-n
flag dosysctl
środków drukuje tylko wartość, oszczędzając nam kilkased
lubawk
pracęźródło
Mamy kilka programów MBP 2019, które zwracają modele różnych lat dla dwóch jedno-liniowych opublikowanych przez tabrindle .
Jego pierwszy jednokreskowy (korzystający
sysctl -n hw.model
) zwraca 2018 dla modelu 2019:Źle: 15-calowy MacBook Pro z Thunderbolt 3 i Touch ID (połowa 2018 r.)
Ale jego druga linijka (używając
system_profiler SPHardwareDataType
) zwraca poprawną nazwę:Po prawej: MacBook Pro (15-calowy, 2019)
źródło
To powinno to zrobić:
źródło