나는 VM웨어와 함께 테스트하지 않아도, 그래서 내가 대신 iTunes
를 사용합니다.
간단한 방법
기본적으로, 다음 쉼표로 두 필드 사이의 NUL를 음역 tr
를 사용하여 모든 외부 물건을 없애 mdls
에서 원시 출력을 지정하고있다. 이것은 간단하지만 나중에 공간을 제공하지는 않지만 충분할 수 있습니다.
mdls -name kMDItemFSName -name kMDItemVersion -raw /Applications/iTunes.app | tr '\0' ','
iTunes.app,12.4.1
약간 세게, 더 정확한
tr
으로 NUL을 교체하는 것은 괜찮습니다,하지만 당신은 쉼표와 tr
만 "일대일" 교체 않기 때문에 공간을 모두 얻을 수 없다 . sed
은 단일 NUL을 쉼표와 공백으로 바꿀 수 있지만 OSX에서는 sed
이 아닌 GNU 버전에서는 그리 쉽지 않으므로 대신 perl
을 사용합니다.
mdls -name kMDItemFSName -name kMDItemVersion -raw /Applications/Textedit.app | perl -pe 's/\x0/, /'
TextEdit.app, 1.11
와일드 카드 버전
또는 와일드 카드를 사용하려는 경우, 내가 awk
mdls -name kMDItemFSName -name kMDItemVersion /Applications/*.app | awk -F'"' '/kMDItemFSName/{n=$2} /kMDItemVersion/{print n, $2}' OFS=', '
출력
App Store.app, 2.1
Automator.app, 2.6
Calculator.app, 10.8
Calendar.app, 8.0
Carbon Copy Cloner.app, 4.1.9
Chess.app, 3.13
Contacts.app, 9.0
...
Sonos.app, 6.2.2
Stickies.app, 10.0
System Preferences.app, 14.0
TextEdit.app, 1.11
TextWrangler.app, 5.0.2
Time Machine.app, 1.3
VirtualBox.app, 5.0.24
Xcode.app, 7.3
iBooks.app, 1.5
iMovie.app, 10.1.2
iTunes.app, 12.4.1
으로 갈 것 awk
명령은 기본적으로 입력 필드 구분 기호를 "
으로 설정 한 다음 kMDItemFSName
을 볼 때마다 두 번째 필드 (앱 이름)를 으로 저장합니다. 그런 다음 kMDItemVersion
이 나타날 때마다 저장된 이름과 두 번째 필드 (버전)를 출력합니다. OFS (출력 필드 분리 기호)는 쉼표와 공백으로 설정됩니다.
awk를 사용하는 와일드 카드 버전은 의도 한 용도에 필요한 응용 프로그램, 쉼표, 공백 및 줄 바꿈을 제공합니다. 다른 두 옵션은 "AppName, AppVersion"의 출력을 제공 한 후에 줄 바꿈을하지 않습니다. – ordepmod