Я ищу способ через терминал, чтобы изменить, отображается ли расширение конкретного файла в Finder, что-то вроде:
$ hideextension ~/music/somesong.mp3
Без необходимости открывать Get Info и менять флажок, так как это очень утомительно.
Я планирую включить его в скрипт, который я вызываю с помощью ярлыка с использованием FastScripts. Я хотел бы попытаться держаться подальше от сценариев GUI, так как это кажется нечистым, хотя любые идеи о том, как этого добиться, приветствуются.
macos
command-line
file-management
file-extension
joshua.thomas.bird
источник
источник
Ответы:
Единственный реальный способ изменить это через графический интерфейс - это щелкнуть Скрыть расширение в окне Finder Info . Проверка этого изменяет
com.apple.FinderInfo
расширенный атрибут, который вы обычно не можете редактировать - по крайней мере, не легко. Однако мы можем использовать инструмент, чтобы сделать это для нас.Чтобы работало ниже, вам, очевидно, нужно, чтобы флажок Показать все расширения файлов был отключен в настройках Finder.
Через AppleScript
AppleScript предлагает эту функцию с помощью
set extension hidden
команды. Вам, очевидно, нуженalias
файл объекта. Мы можем получить это, например, через диалог. Вот только минимальный рабочий пример.Чтобы изменить, просто обмениваться
true
сfalse
здесь. Полный вызов тогда, например:Вы также можете запустить это прямо из файла скрипта (спасибо @DanielBeck за добавление):
Сохраните это как
filename.scpt
и запустите из командной строки:С помощью
SetFile
командыЕсли у вас установлен Xcode, вы получите
SetFile(1)
бинарный файл, который делает именно то, что вам нужно (и предлагает еще несколько функций, связанных с атрибутами файла):Скрыть расширение:
Показать расширение еще раз:
источник
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
используйте какosascript filename.scpt targetfile
.SetFile
устарела с Xcode 6 . Также истек срок действия ссылки на страницу руководства.Спасибо slhck за ваш ответ, он помог мне получить то, что я хотел сделать.
Так как мне нравятся ярлыки, я создал службу «Run Shell Script» через Automator.
Затем я зашел в Finder -> Настройки служб и добавил ярлык для службы.
Надеюсь, это поможет. знак равно
источник
STATUS=
конце строки отсутствует обратная галочка. Кроме того, на моем Mac + XCode у командыGetFileInfo
есть заглавнаяСуществует еще одна опция, если вы хотите показать расширение файла, которое в данный момент скрыто: Finder сохраняет эту опцию «скрыть расширение» в
com.apple.FinderInfo
расширенном атрибуте файла. Вы можете проверить это самостоятельно, выполнив эту команду, которая перечисляет все расширенные атрибуты:Итак, чтобы показать расширение, вы можете удалить этот атрибут:
Но имейте в виду, что Finder хранит другие метаданные, такие как цвет тега, в этом атрибуте, поэтому эти метаданные будут потеряны. И, поскольку атрибут является двоичным, вы не можете легко изменить его.
источник
Для того чтобы в командной строке был только один аргумент (
$ hideextension ~/music/somesong.mp3
), вы можете превратить ваш applecript в сценарий оболочки. Можно использовать osascript в shebang (#!/usr/bin/osascript
), как в следующем коде. Продолжать :#!/usr/bin/osascript
) в начале файлаВ Терминале сделайте его исполняемым:
Теперь вы можете запустить его:
Итак, код для иллюстрации:
источник
Даже если
SetFile
он устарел с Xcode 6, он все еще доступен в XCode 11, поэтому вы можете ожидать, что он останется в инструментах командной строки в обозримом будущем ...https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_11/Command_Line_Tools_for_Xcode_11.dmg
источник