Есть ли способ предотвратить создание этих надоедливых файлов .DS_Store?

14

Есть ли способ (например, бинарный взлом в Finder), чтобы он не создавал .DS-хранилища на локальных томах?

Я использую Leopard, поэтому они не работают:

Кроме того, BlueHarvest замедляет мой компьютер.

kinokijuf
источник
1
См .: Запрет MacOS для создания файлов. * И ._ * - какая-то конкретная причина, почему вы не хотите этого?
Slhck
@slhck: blueharvest работает, но замедляет мой компьютер. Я ищу что-то вроде этого
kinokijuf
Я забыл, что TotalFinder работает только на ≥ 10,6, извините.
Slhck
Этот вопрос был бы слишком локализован, если бы он был специфичен для Leopard и ранее. Ответы могут просто упомянуть текущую самую низкую или самую высокую поддерживаемую версию, где это применимо.
Лри

Ответы:

3

Сторонние решения

По моему опыту, BlueHarvest является лучшим в своем классе. Технически, это не ответ на вопрос; это может удалить, но не предотвратить .DS_Storeфайлы.

Если BlueHarvest эффективен, но не подходит для вашего случая использования, становится трудно дать приемлемый ответ на ваш вопрос.

Если у вас нет приемлемого стороннего решения, вы должны работать с тем, что является неотъемлемой частью Leopard…

Без стороннего решения: ограничьте использование Finder

Избегая просмотра, которые вы не хотите сохранять, вы можете предотвратить создание .DS_Storeфайлов.

Большинству пользователей будет сложно сдерживать себя таким образом, но это верный ответ в рамках ограничений вопроса.

http://diigo.com/0qiwp для аннотированного представления http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html, где объясняет Мэтт Дитхерадж (бывший инженер Apple) .DS_Storeи другие типы файлов.

Грэм Перрин
источник
6

Я не нашел способа предотвратить их создание, но вы можете удалить их автоматически с помощью скрипта:

#!/bin/sh

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

exit 0

Запускайте его каждые X минут через launchdили cron. На моем многолетнем iMac почти не требуется времени. Он будет искать только ваш $ HOME (~), но именно там будет большинство из них. Измените ~ на /, если вы хотите удалить их по всему диску, но это займет гораздо больше времени, поэтому настройте частоту соответствующим образом.

Ти Джей Луома
источник
1
Вы также можете использовать find ~ -name .DS_Store -delete. И не забывайте -nameфлаг - без него команда будет применяться ко всем файлам в ~и ./.DS_Store.
Lri
1
Я знаю, что могу использовать сценарий, но ваш ответ не отвечает на его вопрос.
киноюф
Ответ на вопрос «нет». Нет способа остановить их создание (кроме сетевых ресурсов, о которых тоже не было и речи). Этот ответ пытается достичь того же конечного результата. Если бы у SE была категория ответа под названием «Временное решение», я бы поставил ее под это. Это, конечно, не хуже «ответа», чем демон, присоединяющийся к фреймворку (< asepsis.binaryage.com/> ), и гораздо безопаснее, чем взлом системного бинарника, и он работает на любой версии Mac OS X.
TJ Луома
За исключением того, что он не достигает того же конечного результата. Blueharvest - лучший обходной путь (тот же самый конечный результат, за исключением того факта, что компьютер работает как свинья). Также асептиком является водитель IIRC.
киноюф
1
@kinokijuf, отбрось подходящее отношение. Когда кто-то предлагает вам бесплатную помощь, вы не можете ее критиковать. Это справедливо просто состояние, когда, что это не то , что вы ищете, но оборона TJ Luoma (который вы сделали , к сожалению , это необходимо) более чем достаточно кия для вас заткнуться. Jeez.
r_alex_hall
4

Чтобы предотвратить появление этих уродливых файлов .DS_Store, существует относительно новая возможность сделать это чисто, не только для сетевых дисков, например:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

но также для томов, подключенных через USB:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

Относительно названия вопроса OPs, это лучшее решение без хаков, так как оно учитывает не только неправильное поведение сети, но и влияет на большинство подключенных дисков. И это может быть самым большим раздражением для большинства пользователей, использующих такие устройства, как USB-накопители, в разных средах. Он использует только параметры, предоставленные Apple, и никак не мешает нормальной работе.

Относительно конкретной ситуации, описанной в теле OP, она имеет ограниченную ценность, так как эта опция USB доступна только в более поздних версиях OS X / macOS. Кроме того, это все еще не решает проблему.DS_Store создания на внутренних дисках, где они также могут быть . Хотя в этом месте они действительно могут служить какой-то цели.

Более всеобъемлющее решение этой проблемы, хотя и более хакерское, которое работает на большинстве версий операционной системы Mac, заключается в следующем: полностью уничтожить это неприятное поведение на всех дисках - и с бинарным патчером / инжектором кода, подобным вопросу ОП жаждет - есть DeathToDSStore / с источником .

Обе эти опции предполагают, что кто-то все еще использует Finder ... Использование другого файлового менеджера также решило бы эту проблему. Есть множество претендентов на замену Finder для управления файлами в macOS. Двое из лучших собак в этой области - Pathfinder или XFile .

LаngLаngС
источник
2
+1 за команду USBStores (я этого не знал!), А также DeathToDSStore.
Wowfunhappy
3

Попробуйте эту команду: по умолчанию напишите com.apple.desktopservices DSDontWriteNetworkStores true в терминале. Кажется, это работает для меня.

Siriss
источник
4
Работает только для сети, а не для локальных томов.
киноюф
Ты прав. Я прошу прощения за мое замешательство.
4
Это единственный реальный случай, когда я вижу, что .DS_Stores раздражает. По умолчанию они скрыты в Mac OS и имеют решающее значение для сохранения настроек просмотра для отдельных папок
Александр - Восстановление Monica
2
Но я не хочу сохранять настройки просмотра.
киноюф
1

Я сделал более эффективный скрипт (предназначенный для непрерывной работы в качестве демона), он findвначале выполнит одно выполнение, чтобы стереть уже существующие файлы, и будет перехватывать новые файлы в режиме реального времени через fsevents. Таким образом, они будут немедленно уничтожены при создании, а использование ресурсов очень низкое. AFAIK это самый лучший способ избавиться от них без отключения SIP.
Вот оно - https://github.com/magicgoose/DS_Store-Kill

Показать имя
источник