Estou procurando uma maneira, via terminal, de alterar se a extensão de um arquivo específico é ou não mostrada no Finder, algo como:
$ hideextension ~/music/somesong.mp3
Sem precisar abrir a opção Obter informações e alterar a caixa de seleção, pois é extremamente tedioso.
Pretendo incorporá-lo em um script que estou chamando através de um atalho usando o FastScripts. Eu gostaria de tentar ficar longe dos scripts da GUI, pois isso parece sujo, embora sejam bem-vindas quaisquer idéias sobre como fazer isso.
macos
command-line
file-management
file-extension
joshua.thomas.bird
fonte
fonte
Respostas:
A única maneira real de mudar isso via GUI é clicar em Ocultar extensão na janela Informações do Finder . Marcar essa opção altera o
com.apple.FinderInfo
atributo estendido, que você normalmente não pode editar - pelo menos não facilmente. No entanto, podemos usar uma ferramenta para fazer isso por nós.Para que o procedimento abaixo funcione, você obviamente precisa ter a opção Mostrar todas as extensões de arquivo desmarcada nas preferências do Finder.
Através do AppleScript
AppleScript oferece essa funcionalidade com o
set extension hidden
comando Você obviamente precisaalias
de um objeto de arquivo. Podemos entender isso, por exemplo, através de um diálogo. Aqui está apenas um exemplo de trabalho mínimo.Para reverter, basta trocar
true
comfalse
aqui. A chamada completa é então, por exemplo:Você também pode executar isso diretamente de um arquivo de script (obrigado @DanielBeck pela adição):
Salve isso como
filename.scpt
e execute-o na linha de comando com:Com o
SetFile
comandoSe você tiver o Xcode instalado, receberá o
SetFile(1)
binário, que faz exatamente o que deseja (e oferece mais algumas funções relacionadas aos atributos do arquivo):Ocultar extensão:
Mostrar extensão novamente:
fonte
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
use asosascript filename.scpt targetfile
.SetFile
está obsoleto desde o Xcode 6 . Também o link para a página do manual expirou.Obrigado slhck pela sua resposta, isso me ajudou muito a conseguir o que queria.
Portanto, como gosto de atalhos, criei um serviço "Executar script de shell" no Automator.
Depois fui ao Finder -> Services Preferences e adicionei um atalho ao Service.
Espero que ajude. =)
fonte
STATUS=
linha está faltando um back-tick no final. Além disso, no meu Mac + XCode, o comandoGetFileInfo
tem um capital G.Há mais uma opção se você deseja mostrar a extensão do arquivo oculta no momento: O Finder armazena essa opção "ocultar extensão" no
com.apple.FinderInfo
atributo de arquivo estendido. Você pode verificar você mesmo executando este comando que lista todos os atributos estendidos:Portanto, para mostrar a extensão, você pode remover esse atributo:
Mas lembre-se de que o Finder armazena outros metadados , como a cor da tag nesse atributo, para que esses metadados sejam perdidos. E, como o atributo é binário, você não pode modificá-lo facilmente.
fonte
Para ter apenas um argumento na linha de comando (
$ hideextension ~/music/somesong.mp3
), você pode transformar seu AppleScriptScript em um shell script. É possível usar o osascript no shebang (#!/usr/bin/osascript
) como no código a seguir. Para prosseguir:#!/usr/bin/osascript
) no início do arquivoNo Terminal, torne-o executável:
Agora você pode executá-lo:
Então, o código para ilustrar:
fonte
Mesmo que
SetFile
seja descontinuado desde o Xcode 6, ele ainda está disponível no XCode 11, portanto, você pode esperar que ele permaneça nas Ferramentas de Linha de Comando no futuro previsível ...https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_11/Command_Line_Tools_for_Xcode_11.dmg
fonte