Linux chmod的替代品--OS X上的参考?
我正在尝试将一些jenkins bash脚本从Ubuntu移植到OS X。linux(我认为它最初是GNU)chmod有一个--reference选项,允许从引用文件复制模式。我正在寻找OSX的等效代码,最好不安装额外的软件包。更好的是跨平台解决方案 具体片段:Linux chmod的替代品--OS X上的参考?,linux,macos,bash,jenkins,Linux,Macos,Bash,Jenkins,我正在尝试将一些jenkins bash脚本从Ubuntu移植到OS X。linux(我认为它最初是GNU)chmod有一个--reference选项,允许从引用文件复制模式。我正在寻找OSX的等效代码,最好不安装额外的软件包。更好的是跨平台解决方案 具体片段: # expand all the templates find "$OUTPUT_PATH" -name "*.template" | while read FILE ; do sed \ -e "s/%{NAM
# 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与保存文件模式的组合是正确的,OSX上不存在stat-c,请先复制文件,然后用shell重定向进行覆盖。这将保留原始权限。如果您的OS X具有
stat
命令
# expand all the templates
find "$OUTPUT_PATH" -name "*.template" | while read FILE ; do
savemod=$(stat -c "%a" "$FILE")
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 $savemod "${FILE%.*}"
rm -f "$FILE"
done
如果没有
-c
选项,请检查“格式”下的。您可以找到类似的方法来获取文件的权限/模式。使用格式开关切换到FreeBSD stat如何:
stat -f "%p" ~/.bashrc
stat -f "%Sp" ~/.bashrc
stat -f "%u:%g:%p" ~/.bashrc
stat(1)
没有-c
选项。我认为您必须在OSX上stat-r$FILE | cut-f3-d''
才能获得八进制权限位图。-r
输出struct stat
的“原始”内容,第三列是文件模式。查看手册页,也有类似的方法与-c
相同,但我没有OSX,所以无法测试。@bavariable:我想我读得比你快:)@bash-o-logist:stat-r
和一点剪切
来切掉有趣的部分。@mu太短了。找到了你的一些其他答案来投票:)跨平台shell脚本,很好:)