Как установить значок на файл или каталог с помощью CLI на OS X? - PullRequest
4 голосов
/ 04 декабря 2011

Чтобы установить значок для файла или каталога, прямо в диалоге «Получить информацию» в Finder.

  1. скопировать изображение с напр. Просмотр
  2. открыть «Получить информацию» по файлу или каталогу
  3. нажмите клавишу TAB, чтобы выбрать значок
  4. паста Cmd-V

Но как это сделать с помощью командной строки?

Ответы [ 2 ]

7 голосов
/ 04 декабря 2011

Вот скрипт 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
0 голосов
/ 21 июня 2018

Предполагая, что у нас уже есть 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» для самого этого файла, используя содержимое этого файла изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...