10 votes

Comment puis-je trouver le "nom convivial" du système d'exploitation depuis la coquille / Terminal / bash ?

À propos de ce Mac avec le mot 'Mojave' cerclé

Je sais que je peux utiliser sw_ver pour trouver cette information :

ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   18A353d

... et je sais que je peux trouver d'autres choses comme uname peut me donner certains types d'informations sur le système d'exploitation, et system_profiler SPSoftwareDataType peut me donner des informations supplémentaires, mais je veux trouver le nom "convivial", comme "Mojave" dans l'image ci-dessus.

Comment puis-je trouver le nom "convivial", en utilisant le shell / Terminal / bash / etc ?

Jusqu'à présent, ma recherche Google n'a pas réussi à trouver de solutions. Tous les résultats semblent renvoyer à ces commandes que j'ai mentionnées ci-dessus, mais aucune d'entre elles ne me donne la bonne information.

Il doit être quelque part... comment puis-je le trouver ?

1 votes

Faisant remarquer que la réponse correcte serait simplement de récupérer le numéro via n'importe quelle méthode et d'avoir votre propre table de recherche pour le nom.

2 votes

Je dépose un radar contre sw_ver car ce nom commercial devrait clairement être émis à partir de cette commande. J'ai fait beaucoup de spéléologie à la recherche de cela et je suppose que vous aurez besoin d'une manière très oblique pour l'obtenir à partir des mises à jour installées avec le nom.

1 votes

Pourquoi? C'est facile à déterminer, les noms sont tous connus et tout ce que vous avez à faire est d'indexer dans une liste. Je fournis ci-dessous un Applescript (mauvais).

9voto

Douglas Points 10417

Méthode hors ligne

Cette commande devrait trouver ce que vous cherchez :

awk '/SOFTWARE LICENSE AGREEMENT FOR macOS/' '/System/Library/CoreServices/Setup Assistant.app/Contents/Resources/en.lproj/OSXSoftwareLicense.rtf' | awk -F 'macOS ' '{print $NF}' | awk '{print substr($0, 0, length($0)-1)}'

Elle est basée sur la réponse trouvée ici. Elle a été testée pour fonctionner dans High Sierra et devrait fonctionner dans Mojave.

Méthode en ligne

Vous pouvez également le faire en ligne (ce qui est en réalité ce qui alimente la fenêtre "À propos de ce Mac" affichée dans la question) :

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

Cette commande interrogera le serveur d'Apple avec votre version de produit et extraira le nom du système d'exploitation de la réponse XML. Pour voir la réponse XML complète, il suffit d'omettre l'option --xpath "//root/configCode/text()" :

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

Réponse :

   Nom du processeur
   macOS High Sierra
   en_US

0 votes

Malheureusement, cela me donne "High Sierra" en sortie sur ma machine Mojave. Le mot 'Mojave' ne figure pas dans le fichier.

0 votes

Aussi, à partir de ce même lien, quelqu'un a suggéré ceci, qui ne fonctionne pas non plus (ne renvoie rien) : VER="$(sw_vers -productVersion)"; curl -s "http://support-sp.apple.com/sp/product?edid=$VER"

1 votes

C'est probablement parce qu'ils n'ont pas encore mis à jour le fichier pour Mojave. Le service en ligne semble ne plus fonctionner car je ne parviens pas à obtenir de réponse à aucune requête. Celui-ci nécessitera plus de fouilles

2voto

moodforaday Points 2633

Eh bien, j'ai finalement renoncé à chercher une solution -- peut-être en trouverons-nous une après la sortie officielle de Mojave, mais il est évident que cela ne sera pas quelque chose d'utilisable facilement sur les anciennes versions de Mac OS X / OS X / macOS.

J'ai donc créé une alternative à l'idée de Marc Wilson (ci-dessus) et j'ai créé un script shell qui peut soit afficher une liste complète de tous les numéros de version et de leurs "noms conviviaux", soit vous permettre de rechercher un nom spécifique, par exemple si vous souhaitez simplement savoir quelle version était appelée "Yosemite".

Vous pouvez trouver mon script ici : https://github.com/tjluoma/macosxnames/blob/master/macosxnames.sh

Je laisse la question ouverte au cas où nous trouverions une solution qui ne nécessiterait pas de script externe.

Mise à jour (plus d'un an plus tard)

Apple maintient désormais une page web avec tous les noms et numéros correspondants : https://support.apple.com/en-us/HT201260

Vous pouvez obtenir la liste en utilisant ceci :

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

Cela donnera cette sortie :

        macOS         Dernière version
macOS Monterey        12.4
macOS Big Sur         11.6.7
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

Encore une fois, Apple n'est pas très bon pour maintenir la documentation en ligne, cela pourrait donc disparaître dans un an ou deux.

0 votes

Merci pour cette liste. stackoverflow.com/a/72722226/1896134 J'ai mis à jour ceci et créé un script python basé sur cela pour rechercher et comparer dynamiquement les versions. Je peux maintenant obtenir le nom du système d'exploitation en python en analysant le sw_vers dans des variables et en les comparant à la liste. Github : github.com/JayRizzo/JayRizzoTools/blob/master/pyMacOsName.py

0 votes

On dirait que la mise en page de la page vient de changer. Vous devez également supprimer les marques de paragraphe de l'intérieur du tableau. Ajouter probablement -e 's#]*>##g' le fera (testé sur GNU sed d'Ubuntu)

1voto

Marc Wilson Points 3640
définir _delim sur les délimiteurs d'éléments de texte d'AppleScript
définir les délimiteurs d'éléments de texte d'AppleScript sur "."
définir os_version sur le deuxième élément de (les éléments de texte de (do shell script "sw_vers -productVersion"))
définir les délimiteurs d'éléments de texte d'AppleScript sur _delim

définir osList sur { "Puma", "Cheetah", "Jaguar", "Panther", "Tiger", "Leopard", "Snow Leopard",¬
"Lion", "Mountain Lion", "Mavericks", "Yosemite", "El Capitan", "Sierra", "High Sierra"}

renvoyer l'élément (os_version+1) de osList

C'est un exemple.

2 votes

Le script résout en effet l'objectif, mais n'est pas évolutif. Il devra être mis à jour à chaque grande sortie de macOS. L'intention semble être de trouver un mécanisme intégré à macOS (ou utilisant les informations intégrées au système d'exploitation) qui peut révéler le nom commercial de la version.

1 votes

@NimeshNeema cependant, c'est la seule solution qui donne la réponse correcte

0 votes

Tant que vous déboursez, vous pouvez utiliser ce qui suit pour remplacer les 4 premières lignes de votre script : set os_version to (do shell script "sw_vers -productVersion | awk -F. '{print $2}'")

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X