Frage:
Wie kann ich den "Anzeigenamen" des Betriebssystems in der Shell / im Terminal / in der Bash finden?
TJ Luoma
2018-08-12 00:32:11 UTC
view on stackexchange narkive permalink

About this Mac with the word 'Mojave' circled

Ich weiß, dass ich sw_ver verwenden kann, um diese Informationen zu finden:

  Produktname: Mac OS X.
Produktversion: 10.14
BuildVersion: 18A353d
 

… und ich weiß, dass ich andere Dinge finden kann, wie uname mir einige Arten von Informationen über das Betriebssystem geben kann, und system_profiler SPSoftwareDataType kann mir zusätzliche Informationen geben, aber ichIch möchte den "freundlichen" Namen wie "Mojave" im oben gezeigten Bild finden.

Wie finde ich den "freundlichen" Namen mithilfe der Shell / Terminal / bash / etc?

Bisher konnte mein Google Fu keine Lösungen finden.Alle Ergebnisse scheinen auf die oben genannten Befehle zurückzuführen zu sein, aber keiner von diesen gibt mir die richtigen Informationen.

Es muss irgendwo drin sein ... wie kann ich es finden?

Weisen Sie darauf hin, dass die richtige Antwort darin besteht, die Nummer mit einer beliebigen Methode abzurufen und eine eigene Nachschlagetabelle für den Namen zu erstellen.
Ich melde ein Radar gegen "sw_ver" an, da dieser Marketingname eindeutig von diesem Befehl ausgehen sollte.Ich habe viel Höhlenforschung betrieben und ich vermute, dass Sie einen sehr schrägen Weg benötigen, um dies aus installierten Updates mit dem Namen zu erhalten.
Warum?Es ist leicht zu bestimmen, die Namen sind alle bekannt und alles, was Sie tun müssen, ist in eine Liste zu indizieren.Ich stelle unten ein (schlechtes) Applescript zur Verfügung.
Drei antworten:
Allan
2018-08-12 06:30:01 UTC
view on stackexchange narkive permalink

Offline-Methode

Dieser Befehl sollte finden, wonach Sie suchen:

  awk '/ SOFTWARE-LIZENZVEREINBARUNG FÜR macOS /' '/ System / Library / CoreServices / Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'macOS' '{print $ NF}' | awk '{print substr ($ 0, 0, Länge ($ 0) -1)}'
 

Es basiert auf der Antwort hier. Es wurde getestet, um in High Sierra zu arbeiten und sollte in Mojave funktionieren.

Online-Methode

Sie können dies auch online tun (was tatsächlich das in der Frage gezeigte Dialogfeld "Über diesen Mac" ausfüllt):

  curl -s https://support-sp.apple.com/sp/product?edid=$ (sw_vers -productVersion) | xmllint --format -xpath "// root / configCode / text ()" -
 

Dieser Befehl fragt den Apple-Server mit Ihrer Produktversion ab und extrahiert den Betriebssystemnamen aus der XML-Antwort. Um die vollständige XML-Antwort anzuzeigen, lassen Sie einfach die Option --xpath "// root / configCode / text ()" weg:

  curl -s https://support-sp.apple.com/sp/product?edid=$ (sw_vers -productVersion) | xmllint --format -
 

Antwort:

  <? xml version = "1.0" encoding = "utf-8"? >
<root>
   <name>CPU Name< / name>
   <configCode>macOS High Sierra< / configCode>
   <locale>en_US< / locale>
< / root>
 
Leider gibt es mir "High Sierra" als Ausgabe auf meiner Mojave-Maschine.Das Wort 'Mojave' erscheint nicht in der Datei.
Außerdem hat jemand über denselben Link dies vorgeschlagen, was ebenfalls nicht funktioniert (gibt nichts zurück): `VER =" $ (sw_vers -productVersion) ";curl -s "http://support-sp.apple.com/sp/product?edid=$VER" `
Es ist wahrscheinlich, weil sie die Datei für Mojave noch nicht aktualisiert haben.Der Onlinedienst scheint nicht mehr zu funktionieren, da ich ihn nicht dazu bringen kann, auf eine Anfrage zu antworten.Dieser wird mehr Graben brauchen
Ich konnte den zweiten zum Laufen bringen.Sie benötigen "https", da Apple Nicht-SSL-Verbindungen ignoriert.Ich habe auch den Filter "xmllint" hinzugefügt, um die gesuchten Daten zu extrahieren.
Ich habe keine Pre-Sierra-Maschine zum Überprüfen, aber würde die oben beschriebene "Offline" -Methode nicht fehlschlagen, Pre-Sierra?Es hat sich vorher nicht "macOS" genannt.Ich bin kein Fan von Lösungen, bei denen die Maschine über eine Internetverbindung verfügen muss.
@MarcWilson - Diese Antwort wurde unter Berücksichtigung des neuen MacOS und höher geschrieben.Wenn Sie El Capitan und früher möchten, ändern Sie es in "OS X".
Ich erhalte die Fehlermeldung '0900': $ curl -s https://support-sp.apple.com/sp/product?edid=$ (sw_vers -productVersion) ` kehrt zurück ` 0900 en_US ` am 10.13.6 (und jeden anderen Wert, den ich dort benutze)
@johnnyB - Ich habe es gerade getestet und es funktioniert gut auf meiner Seite.Verwenden Sie vielleicht einen Hackintosh?
also 10.13.6 funktioniert nicht!`$ curl -s" https://support-sp.apple.com/sp/product?edid=10.13.6 "` schlägt fehl, aber `curl -s" https://support-sp.apple.com/sp/Produkt? edid = 10.12.6 "` funktioniert !!!
@Allan Die Online-Methode ist nicht konsistent.Siehe meine neuen Fragen unter https://apple.stackexchange.com/questions/341551/online-way-to-get-macos-friendly-name
TJ Luoma
2018-08-21 21:57:11 UTC
view on stackexchange narkive permalink

Nun, ich habe es endlich aufgegeben, nach einer Lösung zu suchen - vielleicht finden wir eine, nachdem Mojave seine endgültige Version erreicht hat, aber es wird offensichtlich nicht einfach sein, es auf älteren Versionen von Mac OS X / OS X zu verwenden / macOS.

Also habe ich eine Alternative zu Marc Wilsons Idee (oben) gemacht und ein Shell-Skript erstellt, das entweder eine vollständige Liste von allen Versionsnummern und deren “ Anzeigenamen “oder ermöglicht Ihnen die Suche nach einem bestimmten Namen, wenn Sie beispielsweise nur wissen möchten, welche Version„ Yosemite “heißt.

Mein Skript finden Sie hier: https://github.com/tjluoma/macosxnames/blob/master/macosxnames.sh

Ich lasse die Frage offen, falls wir eine Lösung finden, für die kein externes Skript erforderlich ist.

Update (über ein Jahr später)

Apple unterhält jetzt eine Webseite mit allen Namen und entsprechenden Nummern: https://support.apple.com/en-us/HT201260

Sie können die Liste folgendermaßen abrufen:

  (Echo "<table>"; curl -sfLS "https://support.apple.com/en-us/HT201260" \
| tidy --tidy-mark nein --char-encoding utf8 --wrap 0 --show-error 0 --show-warnings nein --clean yes --force-output yes --output-xhtml yes --quiet yes \
| sed -e '1, / <table / d; / < \ / table> /, $ d '-es # <br / > ## g'; echo "< / table>") \
| lynx -dump -nomargins -width = '10000' -assume_charset = UTF-8 -pseudo_inlines -stdin -nonumbers -nolist
 

Gibt diese Ausgabe aus:

  macOS Neueste Version
macOS Catalina 10.15.2
macOS Mojave 10.14.6
macOS High Sierra 10.13.6
macOS Sierra 10.12.6
OS X El Capitan 10.11.6
OS X Yosemite 10.10.5
OS X Mavericks 10.9.5
OS X Mountain Lion 10.8.5
OS X Lion 10.7.5
Mac OS X Snow Leopard 10.6.8
Mac OS X Leopard 10.5.8
Mac OS X Tiger 10.4.11
Mac OS X Panther 10.3.9
Mac OS X Jaguar 10.2.8
Mac OS X Puma 10.1.5
Mac OS X Cheetah 10.0.4
 

Andererseits ist Apple nicht besonders gut darin, die Dokumentation online zu halten, sodass sie möglicherweise in ein oder zwei Jahren verschwunden ist.

Marc Wilson
2018-08-12 05:50:45 UTC
view on stackexchange narkive permalink
  setzt _delim auf die Textelementbegrenzer von AppleScript
Setzen Sie die Textelementbegrenzer von AppleScript auf "."
setze os_version auf das zweite Element von (die Textelemente von (mache das Shell-Skript "sw_vers -productVersion"))
Setzen Sie die Textelementbegrenzer von AppleScript auf _delim

setze osList auf {"Puma", "Cheetah", "Jaguar", "Panther", "Tiger", "Leopard", "Schneeleopard", ¬
                "Löwe", "Berglöwe", "Außenseiter", "Yosemite", "El Capitan", "Sierra", "High Sierra"}

Rückgabeelement (os_version + 1) von osList
 

Das ist ein Beispiel.

Das Skript löst zwar den Zweck, ist aber nicht skalierbar.Es muss mit jeder Hauptversion von macOS aktualisiert werden.Die Absicht scheint darin zu bestehen, einen in macOS integrierten Mechanismus (oder die Verwendung der in OS integrierten Informationen) zu finden, der den Marketingnamen der Version enthüllen kann.
@NimeshNeema ist jedoch die einzige Lösung, die die richtige Antwort gibt
Solange Sie loslegen, können Sie die ersten 4 Zeilen Ihres Skripts wie folgt ersetzen: `setze os_version auf (mache das Shell-Skript" sw_vers -productVersion | awk -F. '{Print $ 2}' ")`
Wirklich, wenn ich das tun würde, würde ich das Ganze in awk machen.:) Ich mag awk.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...