Informacje te są przechowywane w rozwidleniu zasobów pliku ( Wikipedia ). Te widelce zasobów są widoczne jako atrybuty rozszerzone ( Wikipedia ):
$ ls -l@ somefile.txt
-rw-r--r-- 1 danielbeck staff 0 18 Mär 19:00 somefile.txt
# setting non-default application using Finder
$ ls -l@ somefile.txt
-rw-r--r--@ 1 danielbeck staff 0 18 Mär 19:01 somefile.txt
com.apple.ResourceFork 1338
Edycja od podstaw jest prawdopodobnie dość bolesna - wiele danych binarnych:
$ xattr -p com.apple.ResourceFork somefile.txt
00 00 01 00 00 00 05 08 00 00 04 08 00 00 00 32
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 04 04 00 00 00 32 2F 55 73 65 72 73 2F 64
61 6E 69 65 6C 62 65 63 6B 2F 41 70 70 6C 69 63
61 74 69 6F 6E 73 2F 53 75 62 6C 69 6D 65 20 54
65 78 74 20 32 2E 61 70 70 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 01 00 00 00 05 08
00 00 04 08 00 00 00 32 0C 00 00 00 C0 05 00 00
00 1C 00 32 00 00 75 73 72 6F 00 00 00 0A 00 00
FF FF 00 00 00 00 19 00 00 00
Ale możesz traktować te rozwidlenia zasobów jak pliki. Na przykład:
$ open somefile.txt # opens in Sublime 2
$ cp somefile.txt/..namedfork/rsrc openInSublime2rsrc
$ open otherfile.txt # opens in TextEdit
$ cp openInSublime2rsrc otherfile.txt/..namedfork/rsrc
$ open otherfile.txt # opens in Sublime 2
/..namedfork/rsrc
jest to, w jaki sposób rozwidlenie zasobów jest narażone na aplikacje POSIX (tj. prawdopodobnie wszystko, co robisz w Terminalu).
Musisz tylko utworzyć jeden plik „szablonu” z istniejącego rozwidlenia zasobów (w tym przykładzie openInSublime2rsrc
), a następnie możesz skopiować go do innych plików.
somefile.txt/..namedfork/rsrc
zamiast tego.somefile.txt/rsrc
został wycofany jakiś czas temu.Biorąc pod uwagę powyższą odpowiedź Daniela Becka, informacje te są rzeczywiście przechowywane w rozwidleniu zasobów pliku. Apple udostępnia dwa narzędzia zwane „Rez” i „DeRez” z narzędziami programistycznymi, które pozwalają manipulować widłami zasobów. W szczególności możesz wepchnąć rozwidlenie zasobów do pliku za pomocą Rez.
Aby zmienić powiązanie pojedynczego pliku z wiersza polecenia, najpierw utwórz plik odpowiedniego typu i ręcznie zmień jego powiązanie z aplikacją, w której chcesz go otworzyć. Spowoduje to utworzenie rozwidlenia zasobów w pliku - jeśli nie Aby to zrobić, nie będzie żadnych informacji do skopiowania. Następnie wyciągnij rozwidlenie zasobów za pomocą DeRez, podobnie jak to (zakładając, że plik foo.txt i że aplikacja, której chcesz użyć, to Firefox.app).
Spowoduje to utworzenie pliku o nazwie foo.r, który jest zdekompilowanym rozwidleniem zasobów jako plik tekstowy. Będzie to wyglądać mniej więcej tak:
Możesz go edytować, jeśli chcesz utworzyć go od zera, ale musisz uzyskać właściwy format , inaczej nie zadziała. To tylko znaki w kodzie szesnastkowym opisujące ścieżkę do żądanego pakietu aplikacji, zakończone zerem.
Może zostać wyświetlony komunikat informujący, że rozwidlenie zasobów jest puste i niezainicjowane. Jeśli tak, nie zmieniłeś powiązania między plikami w pliku źródłowym, więc musisz to zrobić, a następnie ponownie uruchomić polecenie DeRez.
Gdy to zrobisz, możesz wypchnąć to do innego pliku w następujący sposób (zakładając, że istnieje plik bar.txt):
To aktualizuje plik bar.txt w miejscu dzięki rozwidleniu zasobów z foo.r.
Aby sprawdzić, czy działa OK, ponieważ ani Rez, ani DeRez nie drukują komunikatów o błędach, po prostu wykonaj następujące czynności:
Powinieneś zobaczyć te same informacje, co wcześniej. Po tym wszystkim po prostu otwórz plik bar.txt, jak zwykle, i powinien on otworzyć się we właściwej aplikacji, a nie domyślnej.
Aby dokonać zmiany wsadowej, po utworzeniu pliku .r można użyć standardowego rozszerzenia symboli zastępczych, takiego jak to:
Spowoduje to wykonanie wszystkich plików pasujących do znaku wieloznacznego.
Zrobiłem to w wersji 10.7, ale rozumiem, że działa to również na wcześniejszych komputerach.
źródło
..namedfork/rsrc
nie robi, prawda? Handlujesz wymagającą wiedzy na temat (pół) wewnętrznych dla wiedzy na temat konkretnych narzędzi - nie jestem przekonany, że to jest lepsze.Zrobiłem to przy użyciu xattr (działa idealnie na wolumenie APFS)
Zobacz ten temat, jeśli potrzebujesz więcej
źródło
Mówisz, że chcesz „zmienić partię” aplikacji powiązanej z danym (pod) zestawem plików danego typu. podzestaw, ponieważ nie chcesz zmieniać wszystkich instancji tego typu pliku na nową aplikację.
Nie ma jednak łatwego sposobu na zrobienie tego. Sposób, w jaki LaunchServices wyszukuje, która aplikacja powinna zostać poproszona o otwarcie pliku, jest procesem wieloetapowym i zależy od ustawień o różnych zakresach (użytkownik, system itp.).
Ale - możesz użyć
open
w wierszu polecenia i powiedzieć mu, aby tym razem używał określonej aplikacji. Nie zmieni to żadnego powiązania, ale osiągnie to, co chcesz, a mianowicie otworzy zestaw plików w konkretnej aplikacji:open -a <appbundle> <somefile> <anotherfile>
lubić
i całkowicie odchodząc od wiersza poleceń: spójrz na to narzędzie: http://michelf.com/software/magic-launch/
źródło
open -a TextWrangler *
byłoby jeszcze szybciej.