쉘 / 터미널 / bash에서 운영 체제의 "친숙한 이름"을 어떻게 찾을 수 있습니까?


4

'Mojave'라는 단어가있는 Mac에 관하여

정보 sw_ver를 찾는 데 사용할 수 있음을 알고 있습니다 .

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

… 저는 unameOS에 대한 몇 가지 유형의 정보를 system_profiler SPSoftwareDataType제공 하고 추가 정보를 제공 할 수 있는 것과 같은 다른 것들을 찾을 수 있다는 것을 알고 있지만 위의 이미지에서 "Mojave"와 같은 "친숙한"이름을 찾고 싶습니다.

쉘 / 터미널 / bash / etc를 사용하여“친숙한”이름을 어떻게 찾을 수 있습니까?

지금까지 Google fu가 솔루션을 설정하지 못했습니다. 모든 결과는 위에서 언급 한 명령으로 돌아 오는 것처럼 보이지만 올바른 정보를 제공하는 것은 없습니다.

어딘가에 있어야하는데 ... 어떻게 찾을 수 있습니까?


1
정답은 모든 방법을 통해 숫자를 검색하고 이름에 대한 고유 한 조회 테이블을 갖습니다.
Marc Wilson

1
sw_ver이 마케팅 이름이 해당 명령에서 명확하게 나오 므로 레이더를 제출하고 있습니다. 나는 이것을 찾고 많은 spelunking을했고 이름으로 설치된 업데이트에서 이것을 얻을 수있는 매우 비스듬한 방법이 필요하다고 생각합니다.
bmike

1
왜? 쉽게 결정할 수 있고 이름이 모두 알려져 있으며 목록으로 색인하기 만하면됩니다. 아래에 (나쁜) Applescript를 제공합니다.
Marc Wilson

답변:


3

오프라인 방법

이 명령은 찾고있는 것을 찾아야합니다.

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)}'

여기에 있는 답변을 기반으로합니다 . High Sierra에서 작동하도록 테스트되었으며 Mojave에서 작동해야합니다.

온라인 방법

온라인에서이 작업을 수행 할 수도 있습니다 (실제로 질문에 표시된 "Mac 정보"대화 상자가 표시됨).

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

이 명령은 사용자의 poduct 버전으로 Apple 서버를 조회하고 XML 응답에서 OS 이름을 추출합니다. 전체 XML 응답을 보려면 다음 --xpath "//root/configCode/text()"옵션을 생략하십시오 .

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

응답:

<?xml version="1.0" encoding="utf-8"?>
<root>
   <name>CPU Name</name>
   <configCode>macOS High Sierra</configCode>
   <locale>en_US</locale>
</root>

불행히도 그것은 Mojave 머신에서 출력으로“High Sierra”를 제공합니다. 파일에 'Mojave'라는 단어가 나타나지 않습니다.
TJ Luoma 1

또한 같은 링크에서 누군가가 이것을 제안했지만 작동하지 않습니다 (아무 것도 반환하지 않음). VER="$(sw_vers -productVersion)"; curl -s "http://support-sp.apple.com/sp/product?edid=$VER"
TJ Luoma

1
아마 모하비 파일을 아직 업데이트하지 않았기 때문일 수 있습니다. 쿼리에 응답 할 수 없어 온라인 서비스가 더 이상 작동하지 않는 것 같습니다. 그 중 하나는 더 파고들 것입니다
Allan

나는 두 번째 기능을 얻을 수있었습니다. httpsApple은 비 SSL 연결을 무시 하므로 필요 합니다. 또한 xmllint원하는 데이터를 추출하기 위해 필터를 추가 했습니다.
Allan

1
확인할 시에라 이전 시스템이 없지만 위의 "오프라인"방법이 실패하지 않습니까? 시에라 이전? 그 전에는 "macOS"라고 부르지 않았습니다. 나는 기계가 인터넷에 연결되어 있어야하는 솔루션의 팬이 아닙니다.
Marc Wilson

1
set _delim to AppleScript's text item delimiters
set AppleScript's text item delimiters to "."
set os_version to the second item of (the text items of (do shell script "sw_vers -productVersion"))
set AppleScript's text item delimiters to _delim

set osList to { "Puma", "Cheetah", "Jaguar", "Panther", "Tiger", "Leopard", "Snow Leopard",¬
                "Lion", "Mountain Lion", "Mavericks", "Yosemite", "El Capitan", "Sierra", "High Sierra"}

return item (os_version+1) of osList

그게 예입니다.


2
스크립트는 실제로 목적을 해결하지만 확장 할 수는 없습니다. macOS의 각 주요 릴리스로 업데이트해야합니다. 의도는 릴리스의 마케팅 이름을 밝힐 수있는 macOS에 빌드 된 메커니즘 (또는 OS에 내장 된 정보를 사용)을 파악하는 것 같습니다.
Nimesh Neema 1

1
@NimeshNeema 그러나 정답을주는 유일한 솔루션입니다
Mark

set os_version to (do shell script "sw_vers -productVersion | awk -F. '{print $2}'")

실제로 내가 그렇게한다면, 모든 일을 어색하게 할 것입니다. :) 나는 awk를 좋아한다.
Marc Wilson

0

글쎄, 나는 마침내 해결책을 찾기를 포기했다. 아마도 모하비가 최종 릴리스에 도달 한 후에 하나를 찾을 수 있지만, 이전 버전의 Mac OS X / OS X / macOS에서는 쉽게 사용되지 않을 것입니다.

따라서 Marc Wilson의 아이디어 (위)를 대신하여 모든 버전 번호와 "친숙한 이름" 의 전체 목록을 출력 하거나 특정 이름을 검색 할 수있는 쉘 스크립트를 만들었습니다. "Yosemite"라는 버전을 알고 싶다면

내 스크립트는 https://github.com/tjluoma/macosxnames/blob/master/macosxnames.sh 에서 찾을 수 있습니다.

외부 스크립트가 필요없는 솔루션을 찾을 수 있도록 질문을 열어 두겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.