Kennt jemand einen Terminalbefehl, der mir das Modell meines Mac gibt?
Zum Beispiel - "MacBook Pro, Retina, 13-Zoll, Mitte 2013" oder "MacBook Pro, Ende 2009" oder "Mac Mini, Anfang 2010".
Diese Informationen sind im SystemProfiler ( /usr/sbin/system_profiler SPHardwareDataType
) nicht vorhanden , aber in OS X 10.7 und OS X 10.8 können Sie diese Informationen sehen, wenn Sie im Fenster "About This Mac" auf "More Info ..." klicken.
But in OS X 10.7 and 10.8...
Satz? Wenn ich in das Fenster "Über diesen Mac" schaue, sehe ich nichts, was Ende 2009 oder ähnliches aussagt.About This Mac
und dann auf klickenMore Info...
. Ich habe keine Ahnung, wie ich diese Informationen in Ihr Terminal bekommen kann.Antworten:
Sie können diese Informationen indirekt über eine Webseite und den Befehl curl abrufen. In der Vergangenheit wurde diese URL heruntergenommen und auf bestimmte Raten begrenzt und hinter eine Art Captcha gestellt, um diese Verwendung zu verhindern. In diesem Fall müssen Sie möglicherweise auf andere Wege wie https://checkcoverage.apple.com/ zurückgreifen .
Je nachdem, ob Ihre Seriennummer 11 oder 12 Zeichen lang ist, nehmen Sie die letzten 3 bzw. 4 Zeichen und geben Sie diese nach dem Teil ? Cc = XXXX an die folgende URL weiter . Wenn Ihre Seriennummer aus 12 Zeichen besteht und mit DJWR endet, geben Sie den folgenden Befehl aus:
Verwenden Sie den folgenden Befehl, um Ihre Seriennummer abzurufen:
Sie könnten also einen komplizierten Befehl zum Abfragen des Internets haben, wenn Sie einen einzelnen Befehl benötigen:
und dann die Ausgabe davon durch sed laufen lassen, um zum Schlüsselteil zu schneiden
Früher gab es eine private Bibliotheksdatei mit diesen Zuordnungen, so dass Sie sie offline abrufen konnten, aber ich habe festgestellt, dass sie seit 10.8.3 (und möglicherweise früher) nicht mehr vorhanden ist. Daher ist der oben genannte Trick der einzige, den ich kenne und der auf dem aktuellen Betriebssystem funktioniert ohne Bibliotheken von Drittanbietern.
Einige nette Bibliotheken von Drittanbietern bieten einen Blick darauf:
Beachten Sie, dass Apple ab November 2017 die Verwendung von
https
overhttp
für diesen Dienst erzwungen hat .quelle
sysctl -n hw.model
unten beschrieben,ioreg -c IOPlatformExpertDevice -d 2 | awk -F\" '/IOPlatformSerialNumber/{print $(NF-1)}'
funktioniert das Abrufen der Seriennummer schneller.Sie können den Befehl verwenden
im Terminal, um die Modell-ID Ihres Computers abzurufen.
Dann können Sie diese ID auf dieser Site eingeben, die den Monat und das Jahr auflistet, in dem das jeweilige Modell gestartet wurde.
Wie in den Kommentaren unten erwähnt, ist der folgende Befehl viel schneller:
quelle
system_profiler SPHardwareDataType | grep "Model Identifier"
Läuft viel schneller als der vollständige Profiler, gibt jedoch den Marketingnamen nicht zurück, wie vom OP angefordert. In meiner Antwort finden Sie einen Befehl, mit dem Sie den Teil Ihrer Antwort terminalfreundlich nachschlagen können.sysctl hw.model
schneller als der obige Befehl.Auf El Capitan und Sierra gibt es eine Plist-Datei in einem privaten Framework mit einem Diktat von Informationen für jede Modellkennung. Dieses Gebot enthält den Markennamen (der das Modelljahr enthält). Ich weiß nicht, mit welcher Betriebssystemversion diese bestimmte Datei geliefert wurde, aber sie ist NICHT auf Snow Leopard (das einzige, was ich habe, ist älter als El Capitan).
Sie könnten das also verwenden (oder ähnliche Tricks für andere Betriebssystemversionen, nachdem Sie die Betriebssystemversion überprüft haben, wenn Sie diese Tricks kennen, die ich nicht kenne), und wenn dies nicht zutreffend wäre, könnten Sie immer auf den Ansatz zurückgreifen das erfordert einen Internetzugang.
Dies ist nicht genau das Gleiche wie "Über diesen Mac", in meinem Fall "
MacBook Pro" (Retina, 13-Zoll, Anfang 2015),
während
"13" MacBook Pro "mit Retina-Display (Anfang 2015) angezeigt wird,
jedoch in lesbarer Form Ich denke, es ist nah genug.
quelle
MacBookPro12,1
), was bedeutet, dass Sie immer auf einem 13-/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
Spät zum Spiel, aber hier ist ein Ansatz:
.
Diese Funktion liest eine plist-Datei und sucht
CPU Names
in dieser Datei nach:und dann mit dem Trennzeichen
"
das vierte Feld auslesen:Getestet, um auf den aktuell unterstützten Versionen von OS X zu funktionieren.
quelle
defaults read ~/Library/Preferences/com.apple.SystemProfiler.plist 'CPU Names' | cut -sd '"' -f 4 | uniq
Hier ist ein Einzeiler mit PlistBuddy, ohne Grep, Sed oder awk-wardness.
das ergibt so etwas wie:
15" MacBook Pro with Thunderbolt 3 and Touch ID (Mid 2017)
-
Ein weiterer Liner, der eine etwas andere Saite ergibt, ebenfalls mit PlistBuddy (mit etwas awk):
MacBook Pro (15-inch, 2017)
Dies verdanken wir mehreren der oben genannten Antworten.
quelle
Kombiniert man Saarus Antwort mit einer debuggten Version von Richard Hamiltons , so erhält man die folgende, die von 10.6 bis 10.12 funktioniert (obwohl die Stichprobengröße bei 10.6 nur eine Maschine ist) und möglicherweise früher / später und nicht von einer Verbindung zu abhängig ist Das Internet und Apples Server ändern sich nicht
Einige Anmerkungen zu dem, was ich hier gefunden habe:
defaults
, um in 10.6 arbeiten zu können, und es daher manuell zu den Shell--f
Tests hinzufügen-n
Markierungsysctl
bedeutet, dass nur der Wert gedruckt wird, was uns etwassed
oderawk
Arbeit erspartquelle
Wir haben einige 2019 MBPs die Rückkehr anderes Jahr Modelle für die beiden Einzeiler veröffentlicht von tabrindle .
Sein erster Einzeiler (mit
sysctl -n hw.model
) gibt 2018 für ein Modell von 2019 zurück:Falsch: 15 "MacBook Pro mit Thunderbolt 3 und Touch ID (Mitte 2018)
Aber sein zweiter Einzeiler (mit
system_profiler SPHardwareDataType
) gibt den korrekten Namen zurück:Rechts: MacBook Pro (15 Zoll, 2019)
quelle
Das sollte es tun:
quelle