Wie kann ich das Symbol für eine Datei oder einen Ordner im Terminal ändern oder festlegen, muss ich eine Skriptsprache verwenden?
script
icon
command-line
ocodo
quelle
quelle
Antworten:
Sie müssen die Entwicklertools installiert haben, und dann funktioniert möglicherweise Folgendes. Dies nimmt die Grafik auf
icon.png
und wendet sie anfile.ext
.quelle
Rez -append
beim Arbeiten mit.avi
Dateien.### Rez - Fatal error trying to open the resource file "Video.avi" for writing.
Irgendwelche Ideen?$PATH
(Stubs/usr/bin
, die wissen, wo sich die eigentlichen Tools befinden) und nicht/Developer/Tools
mehr in befinden. Sie sollten sie daher nur über ihre Dateinamen aufrufen. dh im vorliegenden Fall als gerechtRez
undDeRez
.Mit dem Vorteil einer mehrjährigen Rückschau:
user588 Antwort und Antwort der koiyu Arbeit gut, aber sie verlassen sich auf Dienstprogramme (
Rez
,DeRez
, undSetFile
) , dass:Rez
undDeRez
, weil sie sich auf Kohlenstoff beziehen)osxiconutils sehen interessant aus, werden aber nicht mehr kompiliert (ab OSX 10.10.4) .
Daher habe ich eine CLI
fileicon
erstellt , die auf einem makellosen OSX-Computer funktionieren sollte (keine Voraussetzungen) . es ist ein Bash - Skript in erster Linie auf der Grundlagexattr
,xxd
und ein eingebetteter Python - Skript , das Cocoa, mit freundlicher Genehmigung von nennt diese hilfreichen Antwort .Es ermöglicht das Setzen / Entfernen / Extrahieren von benutzerdefinierten Symbolen für / aus Dateien oder Ordnern , einschließlich auf APFS-Volumes unter macOS 10.13 (High Sierra).
Sie können es wie folgt installieren:
[sudo] npm install -g fileicon
fileicon
(dieser Link bleibt aktuell).chmod +x fileicon
.$PATH
, z. B./usr/local/bin
(erfordertsudo
).Hier sind die Nutzungsinformationen. Vollständige Informationen finden Sie im Handbuch :
quelle
fileicon --man
).curl -L http://git.io/n-install | bash
.fileicon
, das immer noch funktioniert (und tatsächlich erstellt wurde, weil esosxiconutils
nicht mehr funktioniert). Ich habe die Antwort aktualisiert, um dies klarer zu machen .Ich fast ein Kopfgeld auf diese begann, weil ich nicht das Symbol eines ändern schaffte Ordner mit @ mankoff ‚s Antwort . Aber ich habe eine Lösung gefunden.
Um das Ordnersymbol zu ändern, zeigen Sie nicht
Rez -append tmp.rsrc
auf den Ordner, sondern auf eine spezielleIcon\r
Datei im Ordner. Wenn Sie dem Ordner noch kein benutzerdefiniertes Symbol zugewiesen haben, ist die Datei wahrscheinlich nicht vorhanden,Rez
erstellt sie jedoch sofort. Wenn Sie dieIcon\r
Datei löschen , wird das benutzerdefinierte Symbol entfernt. Um Unfälle zu vermeiden, sollten Sie es ausblenden.Dies sind die Änderungen an der Antwort des Mankoff:
quelle
Zusätzlich zu Ruby gibt es hier eine Python-Version:
./set-image.py image.png myfile
In Python, das unter Mac OS vorinstalliert ist, ist PyObjC bereits vorhanden, sodass Sie keine Pakete installieren müssen.
quelle
Check out
setfileicon
(Quellcode) , ein Dienstprogramm, das von Damien Bobillot erstellt wurde.Laden Sie die Binärdatei hier herunter: http://maxao.free.fr/telechargements/setfileicon.gz
Machen Sie die Datei nach dem Entpacken ausführbar:
Dann können Sie es wie folgt verwenden:
quelle
Ich habe ein Github-Projekt, in dem ich AppleScript- "Droplets" aus [Shell / Bash, Python, Perl, Ruby usw.] -Skripten erstelle, die Dateipfade als Argumente verwenden. Ich habe diese Bash-Funktion geschrieben, um das Symbol eines Ordners zu ändern (da AppleScript-Bundles Ordner mit der Erweiterung .app sind).
Einmal definiert, rufen Sie die Funktion mit 2 Argumenten auf:
oder
Wie Sie sehen, kann das zweite Argument ein Bild auf Ihrem System oder eine URL sein.
HINWEIS: Das verrückte Aussehen
$'/Icon\r'
, das ich mache, ist, weil der Name der Icon-Datei mit einem wörtlichen Wagenrücklauf endet\r
. Überzeugen Sie sich selbst mit:quelle
Vorausgesetzt, wir haben bereits eine icns-Datei. Erstellen Sie eine temporäre Ressourcendatei, die auf icns-file verweist:
Hängen Sie die Ressourcendatei als Wert des erweiterten Attributs "com.apple.ResourceFork" an eine Datei an:
Zeigen Sie das Symbol der Datei an:
Hänge die Ressourcendatei als Wert des erweiterten Attributs "com.apple.ResourceFork" an eine magische Symboldatei im aktuellen Ordner an:
Zeigt das Symbol des aktuellen Ordners an:
Verstecke die magische Symboldatei im aktuellen Ordner (drücke ⇧⌘., Um versteckte Dateien im Finder anzuzeigen / auszublenden):
Zusätzliche Details
Symboldaten werden als Wert des erweiterten Attributs "com.apple.ResourceFork" gespeichert (Terminalbefehl "xattr -p com.apple.ResourceFork FileName.ext" gibt den Wert aus). Für einen Ordner gibt es eine magische (leere und versteckte) Datei
Icon$'\r'
im Ordner. So extrahieren Sie Symboldaten aus dem erweiterten Attribut "com.apple.ResourceFork" in eine Nur-Text-Ressourcendatei (aus der die korrekte ICNS-Typ-ID "-16455" bekannt ist):Unter macOS
$ sips -i ImageFile.icns/png/jpg
10.13 erzeugt der Befehl High Sierra den Fehler "--addIcon wird nicht mehr unterstützt". Schalter "-i" bedeutet "--addIcon" als erweitertes Attribut "com.apple.ResourceFork" für diese Datei selbst unter Verwendung des Inhalts dieser Bilddatei.quelle
Eine andere Option ist die Verwendung von MacRuby:
/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'
Sie können ein Installationsprogramm für MacRuby von http://macruby.org herunterladen .
quelle
Seltsamerweise scheint die beste Lösung nicht die Verwendung von Apples eigenen Tools zu sein, sondern des Python-Codes, da er verschiedene Vorteile bietet, die nicht durch Folgendes eingeschränkt werden:
(funktioniert bis 1024x1024)
(versucht mit ICNS und PNG)
(als Funktion definieren)
Aktualisieren
Jetzt (unter macOS Sierra) scheint die Antwort von @ koiyu zu funktionieren. Sie können also diesen Doppelliner verwenden, um das Symbol aus einem Quellordner in Ihren Zielordner zu kopieren:
quelle
In der aktuellen MacOS-Version (10.14)
sips -i icon.png
wird ein--addIcon is no longer supported
Fehler angezeigt.Außerdem mussten Entwicklertools installiert sein. Dies nimmt die Grafik auf
Icon.png
und wendet sie anfile.ext
, genau wie die Antwort von user588 :quelle
Ähnlich wie bei der Python-Lösung mit PyObjC kann sie nur mit AppleScript ausgeführt werden (das in 10.15 Catalina im Gegensatz zu Python und anderen Skriptsprachen nicht veraltet ist).
Ich habe hier ein Beispiel dafür auf GitHub gefunden:
AppleScript ist nicht einfach zu lesen, aber anscheinend ist es möglich, über das AppKit-Framework auf den Objective-C-Code zuzugreifen.
quelle