我需要在安装后创建.plist文件,我唯一可以使用的选项是bash脚本。我要创建一个foo.plist为/Library/launchAgents
与一个bash脚本,我已经用下面的命令:使用终端或bash脚本创建并写入.plist
cd /Library/launchAgents
touch foo.plist
现在我需要将内容写入例如该文件的.plist像这样:
".plist contents" >> foo.plist
是否有一个命令可以在终端中执行此操作?
我需要在安装后创建.plist文件,我唯一可以使用的选项是bash脚本。我要创建一个foo.plist为/Library/launchAgents
与一个bash脚本,我已经用下面的命令:使用终端或bash脚本创建并写入.plist
cd /Library/launchAgents
touch foo.plist
现在我需要将内容写入例如该文件的.plist像这样:
".plist contents" >> foo.plist
是否有一个命令可以在终端中执行此操作?
你的问题没有规定得非常好,你已经得到了什么,或者为什么你需要做的是在bash
,但如果你必须这样做的,你可以做这样的:
#!/bin/bash
VERSION=2.12
cat > foo.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildAliasOf</key>
<string>ProEditor</string>
<key>BuildVersion</key>
<value>$VERSION</value>
</dict>
</plist>
EOF
所以,你把它保存在一个名为Buildplist
文件,然后这样做是为了使其可执行
chmod +x Buildplist
然后运行它通过键入以下:
./Buildplist
你可以把它直接改变第二行是这样写的plist文件到/Library/launchAgents
:
cat > /Library/launchAgents/yourApp/yourApp.plist <<EOF
你可以把它接受的参数了。所以,如果你想通过作者的第一个参数,你可以做这样的:
#!/bin/bash
VERSION=2.12
AUTHOR="$1"
cat > foo.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildAliasOf</key>
<string>ProEditor</string>
<key>BuildVersion</key>
<value>$VERSION</value>
<author>$AUTHOR</author>
</dict>
</plist>
EOF
,然后运行
./Buildplist "Freddy Frog"
通过“弗雷迪青蛙”的作者。
如果你想避免覆盖已经存在任何plist文件,你可以做这样的:
#!/bin/bash
PLISTFILE="/Library/launchAgents/yourApp/yourApp.plist"
# If plist already exists, do not overwrite, just exit quietly
[ -f "$PLISTFILE" ] && exit
cat > "$PLISTFILE" <<EOF
...
...
EOF
我把plist文件名中的变量来简化维护,避免键入它两次。
PlistBuddy是你想要的。
/usr/libexec/PlistBuddy Info.plist
File Doesn't Exist, Will Create: Info.plist
然后添加一个条目,像这样的文件,
/usr/libexec/PlistBuddy -c 'add CFBundleIdenfier string com.tencent.myapp' Info.plist
顺便说一句,man plist
,man plutil
可以对你有所帮助。
你想写入plist的plist内容在哪里?我的意思是你有一份文件列表吗?与他们相应的价值?它们是否在shell变量中?为什么你必须使用'bash',为什么你不能使用编辑器? – 2014-12-09 13:22:59
是的,我有一个工作.plist文件。我需要使用bash,因为安装程序将运行这个bash脚本。因此在安装过程中将该过程自动化为后安装步骤。 – Mubasher 2014-12-10 04:30:52