如何通过Bash/Zsh脚本从文件xattr提取生成ICNS图标?
从文件扩展属性自动提取ICNS图标
直接通过命令链完成十六进制到二进制ICNS文件的转换,无需手动操作十六进制编辑器:
# 提取资源分支十六进制,定位ICNS魔数后转二进制输出为icon.icns xattr -px com.apple.ResourceFork "file" | grep -o "69 63 6E 73.*" | xxd -r -p > icon.icns
分步解释:
xattr -px com.apple.ResourceFork "file":以十六进制格式输出目标文件的com.apple.ResourceFork扩展属性内容grep -o "69 63 6E 73.*":匹配并提取从ICNS魔数69 63 6E 73开始的所有十六进制内容(自动保留魔数,无需手动补回)xxd -r -p:将纯十六进制文本转换为二进制数据(-r表示反向转换,-p表示忽略行格式)> icon.icns:将二进制数据写入目标ICNS文件
如果要兼容你之前的变量处理逻辑,也可以写成:
var="$(xattr -px com.apple.ResourceFork "file")" var="69 63 6E 73${var#*69 63 6E 73}" echo "$var" | xxd -r -p > icon.icns
这样生成的icon.icns就是直接可用的二进制图标文件,无需额外手动操作。
内容的提问来源于stack exchange,提问作者asamahy
相关产品推荐
相关产品推荐

