Frage

Wie kann ich das Symbol für eine Datei oder einen Ordner im Terminal ändern oder festlegen. Muss ich eine Skriptsprache verwenden?

War es hilfreich?

Lösung

Sie benötigen die Entwickler -Tools installiert, und dann kann das folgende funktionieren. Dies nimmt die Grafik ein icon.png und wendet es auf file.ext.

# Take an image and make the image its own icon:
sips -i icon.png

# Extract the icon to its own resource file:
/Developer/Tools/DeRez -only icns icon.png > tmpicns.rsrc

# append this resource to the file you want to icon-ize.
/Developer/Tools/Rez -append tmpicns.rsrc -o file.ext

# Use the resource to set the icon.
/Developer/Tools/SetFile -a C file.ext

# clean up.
rm tmpicns.rsrc
# rm icon.png # probably want to keep this for re-use.

Andere Tipps

Mit mehreren Jahren im Nachhinein:

Antwort von User588 und Koiyus Antwort Arbeit gut, aber sie verlassen sich auf Versorgungsunternehmen (Rez, DeRez, und SetFile) das:

  • Sie sind nicht standardmäßig installiert (sie werden entweder mit Xcode oder den Entwickler-Befehlszeilen-Dienstprogrammen geliefert)
  • sind jetzt veraltet (Rez und DeRez, weil sie sich auf Kohlenstoff beziehen)

Osxiconutils Sieh interessant aus, aber aber wird nicht mehr kompilieren (ab OSX 10.10.4).


Deshalb habe ich geschaffen Cli fileicon, die Sollte an einer unberührten OSX -Maschine arbeiten (keine Voraussetzungen); Es ist ein Bash -Skript, das hauptsächlich auf xattr, xxd und ein eingebettetes Python -Drehbuch, das Kakao nennt, mit freundlicher Genehmigung von Diese hilfreiche Antwort.

Es erlaubt Festlegen/Entfernen/Extrahieren benutzerdefinierter Symbole für/aus Dateien oder Ordnern, einschließlich auf APFS -Bänden auf macOS 10.13 (High Sierra).

Sie können es wie folgt installieren:

  • Wenn Sie node.js installiert haben, aus dem NPM -Register, mit
    [sudo] npm install -g fileicon
  • Andernfalls:
    • Download Die CLI wie fileicon (Dieser Link bleibt aktuell).
    • Machen es ausführbar mit chmod +x fileicon.
    • Bewegen Sie es oder symlink es in einen Ordner in Ihrem $PATH, wie zum Beispiel /usr/local/bin (erfordert sudo).

Hier sind die Nutzungsinformationen; Ausführliche Informationen finden Sie in der Handbuch:

$ fileicon -h

Set a custom icon for a file or folder:

    fileicon set      <fileOrFolder> <imageFile>

 Remove a custom icon from a file or folder:

    fileicon rm       <fileOrFolder>

 Get a file or folder's custom icon:

    fileicon get [-f] <fileOrFolder> [<iconOutputFile>]

 Test if a file or folder has a custom icon:

    fileicon test     <fileOrFolder>

 -q ...  silence status output

 Standard options: --help, --man, --version, --home

ich fast begann ein Kopfgeld dazu, weil ich es nicht geschafft habe, das Symbol von a zu ändern Mappe use @Mankoff's Antworten. Aber ich fand eine Lösung.


Um das Symbol des Ordners zu ändern, zeigen Sie nicht Rez -append tmp.rsrc zum Ordner, aber ein besonderes Icon r Datei im Ordner. Wenn Sie ein benutzerdefiniertes Symbol für den Ordner noch nicht festgelegt haben, wird die Datei wahrscheinlich nicht existieren, aber Rez erstellt es auf die Fliege. Löschen des Icon\r Die Datei entfernen das benutzerdefinierte Symbol. Um Unfälle zu verhindern, ist es gut, versteckt zu sein.

Dies sind die Modifikationen zur Antwort des Mankoffs:

# Append a resource to the folder you want to icon-ize.
Rez -append tmpicns.rsrc -o $'myfolder/Icon\r'

# Use the resource to set the icon.
SetFile -a C myfolder/

# Hide the Icon\r file from Finder.
SetFile -a V $'myfolder/Icon\r'

Zusätzlich zu Ruby finden Sie hier eine Python -Version:

#!/usr/bin/env python
import Cocoa
import sys

Cocoa.NSWorkspace.sharedWorkspace().setIcon_forFile_options_(Cocoa.NSImage.alloc().initWithContentsOfFile_(sys.argv[1].decode('utf-8')), sys.argv[2].decode('utf-8'), 0) or sys.exit("Unable to set file icon")

./set-image.py image.png myfile

Python, das in Mac OS vorinstalliert wurde, hat bereits Pyobjc, sodass Sie keine Pakete installieren müssen.

Kasse setfileicon (Quellcode), ein von Damien Bobillot erstellter Versorgungsunternehmen.

Laden Sie die Binärdatei hier herunter: http://maxao.free.fr/telechargements/setfileicon.gz

Machen Sie nach dem Auspacken der Datei sie ausführbar:

chmod +x setfileicon

Dann können Sie es wie folgt verwenden:

./setfileicon "my-icon.icns" "my-file-or-directory"

Ich habe ein Github -Projekt Wo ich appleScript "Tröpfchen" aus [Shell/Bash, Python, Perl, Ruby usw.] erstelle, die Dateipfade als Argumente aufnehmen. Ich habe diese Bash -Funktion geschrieben, um das Symbol eines Ordners zu ändern (da Apfelkriptbündel Ordner mit einer .App -Erweiterung sind).

replace_icon(){
    droplet="$1"
    icon="$2"
    if [[ "$icon" =~ ^https?:// ]]; then
        curl -sLo /tmp/icon "$icon"
        icon=/tmp/icon
    fi
    rm -rf "$droplet"$'/Icon\r'
    sips -i "$icon" >/dev/null
    DeRez -only icns "$icon" > /tmp/icns.rsrc
    Rez -append /tmp/icns.rsrc -o "$droplet"$'/Icon\r'
    SetFile -a C "$droplet"
    SetFile -a V "$droplet"$'/Icon\r'
}

Einmal definiert, rufen Sie die Funktion mit 2 Argumenten auf:

replace_icon /path/to/AppleScript.app /path/to/icon.png

oder

replace_icon /path/to/AppleScript.app http://i.imgur.com/LmUvWqB.png

Wie Sie sehen können, kann das zweite Argument ein Bild auf Ihrem System oder eine URL sein.

HINWEIS: Dieser verrückt aussehende $'/Icon\r' Was ich tue, ist, weil der Name der Icon -Datei mit a endet wörtlich Kutschenrückkehr \r. Überzeugen Sie sich selbst mit:

find my-applescript.app -maxdepth 1 | less -U

Angenommen, wir haben bereits ICNS-File. Erstellen Sie die Temporce-Datei, die auf ICNS-File hinweist:

$ echo "read 'icns' (-16455) \"Icon.icns\";" >> Icon.rsrc

Gehen Sie die Ressourcendatei als Wert des erweiterten Attributs "com.apple.resourcefork" an eine Datei an:

$ Rez -a Icon.rsrc -o FileName.ext

Zeigen Sie das Symbol der Datei an:

$ SetFile -a C FileName.ext

Gehen Sie die Ressourcendatei als Wert des erweiterten Attributs "com.apple.resourcefork" an eine magische Symboldatei im aktuellen Ordner an:

$ Rez -a Icon.rsrc -o Icon$'\r'

Zeigen Sie das Symbol des aktuellen Ordners an:

$ SetFile -a C .

Verstecken Sie die Magic -Symboldatei im aktuellen Ordner (drücken Sie ⇧⌘. Um versteckte Dateien im Finder anzuzeigen/auszublenden):

$ SetFile -a V Icon$'\r'

Weitere Details

Die ICON -Daten werden als Wert des erweiterten Attributs "com.apple.resourcefork" gespeichert (Terminalbefehl "xattr -p com.apple.resourcefork Dateiname.Ext" druckt den Wert). Für einen Ordner gibt es Magie (die leer und versteckt ist) Datei Icon$'\r' im Ordner. Um Symboldaten aus dem erweiterten Attribut "com.apple.resourcefork" in die Ressourcendatei "Com.apple.Resourcefork" zu extrahieren (aus der wir korrekt korrekte ICNS-Typ-Kennung "-16455" kennen)):

$ DeRez -only icns FileWithIcon.ext > Icon.rsrc
$ DeRez -only icns /Folder/With/Icon/Icon$'\r' > Icon.rsrc

Unter macOS 10.13 High Sierra Command $ sips -i ImageFile.icns/png/jpg Erzeugt Fehler "--addicon wird nicht mehr unterstützt". Switch "-i" bedeutet "--addicon" als erweitertes Attribut "com.apple.resourcefork" auf diese Datei selbst mit dem Inhalt dieser Bilddatei.

Eine andere Option ist die Verwendung von Makruby:

/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'

Sie können einen Installateur für Macruby herunterladen http://macruby.org.

Seltsamerweise scheint die beste Lösung nicht darin zu sein, die eigenen Tools von Apple zu verwenden, sondern den Python -Code, da er verschiedene Vorteile hat, die nicht begrenzt sind durch:

  • Ausgabedateiauflösung
    (Es funktioniert bis 1024x1024)
  • Eingabedateiformat
    (Proben mit ICNS und PNG)
  • Berechtigungen zu installieren
    (definieren Sie es als Funktion)

Aktualisieren

Nun (auf Macos Sierra) @Koiyus Antwort scheint zu funktionieren, sodass Sie diesen Zwei-Liner verwenden können, um das Symbol aus einem Quellordner in Ihren Zielordner zu kopieren:

#!/bin/sh

DeRez -only icns $1/Icon$'\r' > icon.rsrc; Rez -a icon.rsrc -o $2/Icon$'\r'
SetFile -a C $2; SetFile -a V $2/Icon$'\r'; rm icon.rsrc

In der letzten MacOS -Version (10.14), sips -i icon.png wird a bekommen --addIcon is no longer supported Error.

Es wurden auch Entwicklerwerkzeuge installiert. Dies nimmt die Grafik ein Icon.png und wendet es auf file.ext, so wie Antwort von User588:

# Covert Icon.png to tempicons.icns:
sips -s format icns Icon.png --out tmpicns.icns

# Create temp resource file which points to tempicons.icns:
echo "read 'icns' (-16455) \"tmpicns.icns\";" >> tmpicns.rsrc

# append this resource to the file you want to icon-ize.
Rez -a tmpicns.rsrc -o file.ext

# Use the resource to set the icon.
SetFile -a C file.ext

# Clean up
rm tempicons.icns && rm tmpicns.rsrc
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit apple.stackexchange
scroll top