Existe uma maneira de impedir que esses arquivos irritantes .DS_Store sejam criados?

14

Existe uma maneira (por exemplo, um hack binário no Finder) de impedir a criação de .DS-Stores em LOCAL Volumes?

Estou usando o Leopard, portanto, estes não funcionam:

Além disso, o BlueHarvest torna meu computador lento.

kinokijuf
fonte
1
Consulte: Impedir que o MacOS crie arquivos. * E ._ * - algum motivo específico para você não os querer?
slhck
@slhck: blueharvest funciona, mas diminui a velocidade do meu computador. Estou procurando algo parecido com isto
kinokijuf 15/11
Esqueci que o TotalFinder só funciona em ≥ 10.6, desculpe.
slhck
Essa pergunta seria muito localizada se fosse específica do Leopard e anterior. As respostas podem apenas mencionar a versão atual mais baixa ou mais alta, quando aplicável.
Lri

Respostas:

3

Soluções de terceiros

Na minha experiência, o BlueHarvest é o melhor da classe. Tecnicamente, não é uma resposta para a pergunta; ele pode remover, mas não impedir, .DS_Storearquivos.

Se o BlueHarvest for eficaz, mas não se adequar ao seu caso de uso, fica difícil dar uma resposta aceitável à sua pergunta.

Se você não possui uma solução aceitável de terceiros, deve trabalhar com o que é essencial para o Leopard…

Sem uma solução de terceiros: restrinja o uso do Finder

Ao evitar as visualizações que você não deseja salvar, você pode impedir a criação de .DS_Storearquivos.

A maioria dos usuários achará difícil se controlar dessa maneira, mas é uma resposta verdadeira dentro das limitações da pergunta.

http://diigo.com/0qiwp para uma visualização anotada de http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html onde Matt Deatherage (ex-engenheiro da Apple) explica .DS_Storee outros tipos de arquivo.

Graham Perrin
fonte
6

Não encontrei nenhuma maneira de impedir que eles fossem criados, mas você pode excluí-los automaticamente com um script:

#!/bin/sh

find ~ -name .DS_Store -exec /bin/rm -f -- {} \;

exit 0

Execute-o a cada X minutos via launchdou cron. Não leva quase tempo para rodar no meu iMac de vários anos. Ele pesquisará apenas seu $ HOME (~), mas é onde a maioria deles estará. Altere ~ para / se desejar excluí-los em toda a unidade, mas isso levará muito mais tempo para ser executado; portanto, ajuste a frequência de acordo.

TJ Luoma
fonte
1
Você também pode usar find ~ -name .DS_Store -delete. E não esqueça a -namebandeira - sem ela o comando se aplicaria a todos os arquivos em ~e ./.DS_Store.
Lri
1
Eu sei que posso usar um script, mas sua resposta não responde à pergunta.
kinokijuf
A resposta para a pergunta é "não". Não há como impedir que eles sejam criados (exceto em compartilhamentos de rede, o que também não era a questão). Esta resposta tenta alcançar o mesmo resultado final. Se o SE tivesse uma categoria de resposta chamada "Solução alternativa", eu a colocaria sob isso. Certamente não é pior como uma "resposta" do que um daemon anexado a uma estrutura (< asepsis.binaryage.com/> ), e muito mais seguro do que invadir um binário de sistema e é executado em qualquer versão do Mac OS X.
TJ Luoma
Exceto que não alcança o mesmo resultado final. Blueharvest é uma solução alternativa melhor (mesmo resultado final, exceto pelo fato de o computador ser executado como um porco). Também a assepsia é um motorista do IIRC.
kinokijuf
1
@kinokijuf, abandone a atitude autorizada. Quando alguém lhe oferece ajuda gratuita, você não pode criticá-la. É justo afirmar, uma vez, que não é o que você está procurando, mas a defesa de TJ Luoma (que você fez tristemente necessária) é mais do que suficiente para você calar a boca. Eita.
r_alex_hall
4

Para impedir que esses arquivos feios .DS_Store apareçam, parece haver uma opção relativamente nova para fazer isso de forma limpa, não apenas para unidades de rede, como:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

mas também para volumes conectados por USB:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

Em relação ao título da pergunta dos OPs, esta é a melhor solução sem hacks, pois aborda não apenas o mau comportamento da rede, mas também é efetuada para a maioria dos discos conectados. E esse pode ser o maior incômodo para a maioria dos usuários que compartilham dispositivos como pen drives entre diferentes ambientes. Ele usa apenas as opções fornecidas pela Apple e não interfere na operação normal de forma alguma.

Em relação à situação concreta explicada no corpo dos OPs, é de valor limitado, pois essa opção USB está disponível apenas nas versões posteriores do OS X / macOS. Além disso, isso ainda não trata do problema da .DS_Storecriação em discos internos, onde eles também podem ser um aborrecimento. Embora naquele lugar eles possam realmente servir a algum tipo de propósito.

Uma solução mais abrangente para esse problema, embora mais hackish, que funcione na maioria das versões do sistema operacional Mac é a seguinte: Para destruir completamente esse comportamento desagradável em todos os discos - e com um patificador / injetor de código binário, como a questão de o OP anseia - existe DeathToDSStore / com fonte .

Ambas as opções assumem que alguém ainda usa o Finder ... Usar um gerenciador de arquivos diferente também resolveria esse problema. Existem vários concorrentes para substituir o Finder pelo gerenciamento de arquivos no macOS. Dois dos principais cães nesse campo são o Pathfinder ou o XFile .

LÁngLаngС
fonte
2
+1 para o comando USBStores (eu não o conhecia!), Bem como para o DeathToDSStore.
Wowfunhappy
3

Tente este comando: os padrões gravam com.apple.desktopservices DSDontWriteNetworkStores true no terminal. Parece funcionar para mim.

Siriss
fonte
4
Funciona apenas para rede, não para volumes locais.
kinokijuf
Você está certo. Peço desculpas pela minha confusão.
4
Este é o único caso real em que eu pude ver .DS_Stores sendo irritante. Eles estão escondidos em Mac OS por padrão, e são cruciais para salvar configurações de exibição para pastas individuais
Alexander - Reintegrar Monica
2
Mas não quero salvar as configurações de exibição.
kinokijuf
1

Eu criei um script mais eficiente (destinado a ser executado continuamente como daemon), ele executará uma execução findno início para limpar os arquivos já existentes e capturará novos arquivos em tempo real via fsevents. Portanto, eles serão desativados imediatamente à medida que são criados, e o uso de recursos é muito baixo. AFAIK, é a melhor maneira possível de se livrar deles sem desativar o SIP.
Aqui está - https://github.com/magicgoose/DS_Store-Kill

Nome em Exibição
fonte