Szukam sposobu, poprzez terminal, aby zmienić, czy określone rozszerzenie pliku jest wyświetlane w Finderze, coś w stylu:
$ hideextension ~/music/somesong.mp3
Bez konieczności otwierania Uzyskaj informacje i zmiany pola wyboru, ponieważ jest to bardzo uciążliwe.
Planuję włączyć go do skryptu, który wywołuję za pomocą skrótu za pomocą FastScripts. Chciałbym trzymać się z dala od skryptów GUI, ponieważ wydaje się to nieczyste, chociaż wszelkie pomysły na to, jak to osiągnąć, są mile widziane.
macos
command-line
file-management
file-extension
joshua.thomas.bird
źródło
źródło
Odpowiedzi:
Jedynym prawdziwym sposobem na zmianę tego za pomocą GUI jest kliknięcie Ukryj rozszerzenie w oknie Informacje o Finderze . Zaznaczenie tego powoduje zmianę
com.apple.FinderInfo
atrybutu rozszerzonego, którego normalnie nie można edytować - przynajmniej nie łatwo. Możemy jednak użyć do tego narzędzia.Aby poniższe czynności działały, oczywiście musisz odznaczyć Pokaż wszystkie rozszerzenia plików w preferencjach Findera.
Poprzez AppleScript
AppleScript oferuje tę funkcjonalność za pomocą
set extension hidden
polecenia. Oczywiście potrzebujeszalias
obiektu pliku. Możemy to uzyskać na przykład poprzez okno dialogowe. Oto tylko minimalny działający przykład.Aby odwrócić, tak wymieniać
true
zfalse
tutaj. Pełne połączenie to na przykład:Możesz również uruchomić to bezpośrednio z pliku skryptu (dzięki @DanielBeck za dodanie):
Zapisz to jako
filename.scpt
i uruchom z wiersza poleceń za pomocą:Za pomocą
SetFile
poleceniaJeśli masz zainstalowany Xcode, otrzymasz
SetFile(1)
plik binarny, który robi dokładnie to, co chcesz (i oferuje kilka dodatkowych funkcji związanych z atrybutami plików):Ukryj rozszerzenie:
Pokaż rozszerzenie ponownie:
źródło
on run argv [newline] tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true [newline] end run
użyj jakoosascript filename.scpt targetfile
.SetFile
jest przestarzałe od Xcode 6 . Wygasł również link do strony podręcznika.Dzięki slhck za twoją odpowiedź, pomogło mi to zrobić to, co chciałem zrobić.
Ponieważ lubię skróty, stworzyłem usługę „Uruchom skrypt powłoki” za pośrednictwem Automatora.
Potem poszedłem do Findera -> Preferencje usług i dodałem skrót do usługi.
Mam nadzieję, że to pomoże. =)
źródło
STATUS=
końcu linii brakuje zaznaczenia wstecz. Ponadto na moim Macu + XCode polecenieGetFileInfo
ma wielkąJest jeszcze jedna opcja, jeśli chcesz pokazać rozszerzenie pliku, które jest obecnie ukryte: Finder przechowuje tę opcję „ukryj rozszerzenie” w
com.apple.FinderInfo
atrybucie rozszerzonego pliku. Możesz to sprawdzić samodzielnie, uruchamiając to polecenie, które wyświetla wszystkie rozszerzone atrybuty:Aby wyświetlić rozszerzenie, możesz usunąć ten atrybut:
Pamiętaj jednak, że Finder przechowuje w tym atrybucie inne metadane, takie jak kolor znacznika, więc te metadane zostaną utracone. Ponieważ atrybut jest binarny, nie można go łatwo modyfikować.
źródło
Aby mieć tylko jeden argument w wierszu poleceń (
$ hideextension ~/music/somesong.mp3
), możesz zmienić swój skrypt AppleScript w skrypt powłoki. Możliwe jest użycie osascript w shebang (#!/usr/bin/osascript
) jak w poniższym kodzie. Kontynuować :#!/usr/bin/osascript
) na początku plikuW Terminalu ustaw, aby był wykonywalny:
Teraz możesz go uruchomić:
Tak więc kod ilustrujący:
źródło
Nawet jeśli
SetFile
jest przestarzałe od Xcode 6, nadal jest dostępny w XCode 11, więc możesz spodziewać się, że pozostanie w Narzędziach wiersza poleceń w przewidywalnej przyszłości ...https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_11/Command_Line_Tools_for_Xcode_11.dmg
źródło