使用"获取信息"直接在文件或目录上设置图标。 Finder中的对话框。
但是如何使用命令行执行此操作?
答案 0 :(得分:7)
这是一个bash脚本“setIcon.sh”
#!/bin/sh
# Sets an icon on file or directory
# Usage setIcon.sh iconimage.jpg /path/to/[file|folder]
iconSource=$1
iconDestination=$2
icon=/tmp/`basename $iconSource`
rsrc=/tmp/icon.rsrc
# Create icon from the iconSource
cp $iconSource $icon
# Add icon to image file, meaning use itself as the icon
sips -i $icon
# Take that icon and put it into a rsrc file
DeRez -only icns $icon > $rsrc
# Apply the rsrc file to
SetFile -a C $iconDestination
if [ -f $iconDestination ]; then
# Destination is a file
Rez -append $rsrc -o $iconDestination
elif [ -d $iconDestination ]; then
# Destination is a directory
# Create the magical Icon\r file
touch $iconDestination/$'Icon\r'
Rez -append $rsrc -o $iconDestination/Icon?
SetFile -a V $iconDestination/Icon?
fi
# Sometimes Finder needs to be reactivated
#osascript -e 'tell application "Finder" to quit'
#osascript -e 'delay 2'
#osascript -e 'tell application "Finder" to activate'
rm $rsrc $icon
答案 1 :(得分:0)
假设我们已经有icns文件。创建指向icns文件的临时资源文件:
$ echo "read 'icns' (-16455) \"Icon.icns\";" >> Icon.rsrc
将资源文件作为扩展属性“ com.apple.ResourceFork”的值附加到文件:
$ Rez -a Icon.rsrc -o FileName.ext
显示文件图标:
$ SetFile -a C FileName.ext
将资源文件作为扩展属性“ com.apple.ResourceFork”的值附加到当前文件夹内的魔术图标文件中:
$ Rez -a Icon.rsrc -o Icon$'\r'
显示当前文件夹的图标:
$ SetFile -a C .
将魔术图标文件隐藏在当前文件夹中(按⇧⌘。以显示/隐藏Finder中的隐藏文件):
$ SetFile -a V Icon$'\r'
图标数据存储为扩展属性“ com.apple.ResourceFork”的值(终端命令“ xattr -p com.apple.ResourceFork FileName.ext”输出该值)。对于文件夹,文件夹内有一个魔术文件(为空且隐藏)Icon$'\r'
。要将扩展属性“ com.apple.ResourceFork”中的图标数据提取到纯文本资源文件(从中我们知道正确的icns类型标识符“ -16455”):
$ DeRez -only icns FileWithIcon.ext > Icon.rsrc
$ DeRez -only icns /Folder/With/Icon/Icon$'\r' > Icon.rsrc
在macOS 10.13的High Sierra命令$ sips -i ImageFile.icns/png/jpg
下生成错误--addIcon is no longer supported
。切换-i
意味着使用该图像文件的内容将“ --addIcon”作为扩展属性“ com.apple.ResourceFork”扩展到该文件本身。