我正在安装一些带有shell模块的应用程序。我想编写不同版本的通用脚本。
- 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
现在我正在使用attach / mount,但问题是当我安装多个版本时,每个版本都有自己的不同名称的文件夹结构,我必须单独创建脚本来复制它。
hdiutil mount --name common
cp -R /Volumes/common/myapp.app destination
如果我得到常见的文件夹名称,我可以将common / * app复制到目的地。 如何安装具有特定名称的dmg文件?
答案 0 :(得分:1)
这是一种非常简单的附加/安装.dmg
的方式,我能够提出:
var=$(ls | egrep -m1 ".*Sub.*dmg"); yes y | hdiutil attach $var
该命令尝试在名称.dmg
中找到并装入包含“Sub”的任何内容。如果出现,则yes y
使用{1}}接受协议通知。如果你认为你不会遇到类似的东西,你可以随时删除它。
cp -R /Volumes/*Sub*/*.app ~/Path/To/Destination
下一个命令搜索包含单词“Sub”作为卷名的任何已装入或已附加的卷;然后将.app复制到目标。如果您有多个.dmg
文件要挂载/附加并将文件复制到目标,则可以使用递归find
:
yes y | find . -regex ".*Sub.*dmg" -exec hdiutil attach {} \;
find /Volumes/*Sub*/* -regex ".*\.app" -exec cp -R {} ~/Path/To/Destination \;
这应该找到包含“Sub”的任何 .dmgs,将它们 all 挂载并将.app
从每个卷复制到目标。 谨慎使用 - 它会在没有警告的情况下复制目的地中同名文件。