OS X 上 chmod --reference 的替代品?
我正在尝试将一些 jenkins bash 脚本从 Ubuntu 移植到 OS X。linux(我认为它最初是 GNU)chmod 有一个 --reference 选项,允许从参考文件复制模式。我正在寻找 OS X 的等效代码,最好不安装额外的软件包。更好的是跨平台解决方案。
具体片段:
# expand all the templates
find "$OUTPUT_PATH" -name "*.template" | while read FILE ; do
sed \
-e "s/%{NAME}/$OPTION_NAME/g" \
-e "s/%{TITLE}/$OPTION_TITLE/g" \
-e "s/%{VERSION}/$OPTION_VERSION/g" \
-e "s/%{WHEN}/$OPTION_WHEN/g" \
"$FILE" > "${FILE%.*}"
chmod --reference="$FILE" "${FILE%.*}"
rm -f "$FILE"
done
[编辑] stat -r 与保存文件模式的组合是正确的组合, stat -c 在 OS X 上不存在
I'm trying to port some jenkins bash scripts from Ubuntu to OS X. The linux (and I think it is originally GNU) chmod has a --reference option that allows copying the mode from a reference file. I am looking for the equivalent code for OS X, preferably without installing extra packages. Even better would be a cross-platform solution.
The concrete snippet:
# expand all the templates
find "$OUTPUT_PATH" -name "*.template" | while read FILE ; do
sed \
-e "s/%{NAME}/$OPTION_NAME/g" \
-e "s/%{TITLE}/$OPTION_TITLE/g" \
-e "s/%{VERSION}/$OPTION_VERSION/g" \
-e "s/%{WHEN}/$OPTION_WHEN/g" \
"$FILE" > "${FILE%.*}"
chmod --reference="$FILE" "${FILE%.*}"
rm -f "$FILE"
done
[edit] The combination of stat -r with saving the file mode is the right combination, stat -c doesn't exist on OS X
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先复制文件,然后使用 shell 重定向覆盖。这应该保留原始权限。
Copy the file first and only then overwrite with a shell redirection. This should preserve the original permissions.
如何使用 FreeBSD stat 的格式切换:
How about using the format switch to FreeBSD stat:
如果您的 OS X 有
stat
命令如果没有
-c
选项,请检查 stat 的手册页 处于格式化状态。您可以找到类似的方法来获取文件的权限/模式。If your OS X has the
stat
commandIf it doesn't have
-c
option, check the man page of stat under formatting. you can find similar ways to get the permission/mode of the file.