Монтирование диска с определенным именем в Mac с помощью hdiutil

Я устанавливаю некоторые приложения с модулем оболочки в ansible. Я хочу писать сценарии, которые являются общими для разных версий.

- name: Installing Sublime Text
  shell: "{{ item }}"
  with_items:
  - hdiutil mount "{{download_location}}/sublime.dmg"
  - cp -R /Volumes/Sublime\ Text\ 2/Sublime\ Text\ 2.app "{{applications_location}}/Sublime Text.app"
  - hdiutil unmount /Volumes/Sublime\ Text\ 2

Прямо сейчас я использую присоединение / монтирование, но проблема в том, что когда я устанавливаю несколько версий, каждая из которых имеет свою собственную структуру папок с разными именами, мне нужно создавать сценарии отдельно для копирования для этого.

hdiutil mount --name common
cp -R /Volumes/common/myapp.app destination

если я получу имя папки common, я смогу скопировать common/*app в место назначения. Как смонтировать файл dmg с определенным именем?


person Dineshkumar    schedule 29.07.2015    source источник
comment
Re: каждый из них имеет свою собственную структуру папок с разными именами, что означает, что .dmg имеет другое имя или структура каталогов на нем имеет другое имя? Покажите два примера, чтобы мы знали, на что вы смотрите.   -  person l'L'l    schedule 29.07.2015
comment
разные имена, а также разная структура папок. например: /Volumes/Sublime Text 2/Sublime Text 2.app и /Volumes/Sublime Text/Sublime Text.app   -  person Dineshkumar    schedule 30.07.2015
comment
Является ли destination присоединенным/подключенным томом, и почему в первом примере вы используете mount, а во втором — attach?   -  person l'L'l    schedule 31.07.2015
comment
attach и mount дает мне ту же функциональность. место назначения - какая-то другая папка. источник — это приложения, которые находятся внутри смонтированной папки.   -  person Dineshkumar    schedule 31.07.2015


Ответы (1)


hdiutil прикрепить/монтировать

Вот довольно простой способ крепления/установки .dmg, который мне удалось придумать:

var=$(ls | egrep -m1 ".*Sub.*dmg"); yes y | hdiutil attach $var

Команда пытается найти и смонтировать все, что содержит «Sub» в имени, которое является .dmg. Использование yes y принимает уведомление о соглашении, если оно представлено. Если вы не думаете, что столкнетесь с чем-то подобным, вы всегда можете удалить его.

кп до места назначения:

cp -R /Volumes/*Sub*/*.app ~/Path/To/Destination

Следующая команда ищет любые подключенные или подключенные тома, содержащие слово «Sub» в качестве имени тома; затем .app копируется в место назначения. Если у вас есть несколько файлов .dmg, которые вы хотите смонтировать/присоединить и скопировать файлы в место назначения, можно использовать рекурсивный find:

рекурсивный hdiutil/mount + cp

yes y | find . -regex ".*Sub.*dmg" -exec hdiutil attach {} \;
find /Volumes/*Sub*/* -regex ".*\.app" -exec cp -R {} ~/Path/To/Destination \;

Это должно найти любой .dmg, содержащий «Sub», смонтировать их все и скопировать .app из каждого тома в место назначения. Использовать с осторожностью: файлы с одинаковыми именами будут скопированы в место назначения без предупреждения.

person l'L'l    schedule 31.07.2015