Czy istnieje sposób, aby zapobiec tworzeniu tych nieznośnych plików .DS_Store?

14

Czy istnieje sposób (np. Binarny włamanie do Findera), aby powstrzymać go przed tworzeniem sklepów .DS w LOCAL Volumes?

Używam Leoparda, dlatego te nie działają:

Ponadto BlueHarvest spowalnia mój komputer.

kinokijuf
źródło
1
Zobacz: Zapobiegaj tworzeniu przez MacOS plików. * I ._ * - jakiś konkretny powód, dla którego ich nie chcesz?
slhck 15.11.11
@slhck: blueharvest działa, ale spowalnia mój komputer. Szukam czegoś jak ten
kinokijuf
Przepraszam, zapomniałem, że TotalFinder działa tylko na ≥ 10,6.
slhck 15.11.11
To pytanie byłoby zbyt zlokalizowane, gdyby było specyficzne dla Leoparda i wcześniejszych. W odpowiedziach można wymienić tylko bieżącą najniższą lub najwyższą obsługiwaną wersję, jeśli dotyczy.
Lri

Odpowiedzi:

3

Rozwiązania stron trzecich

Z mojego doświadczenia wynika, że ​​BlueHarvest jest najlepszy w swojej klasie. Technicznie nie jest to odpowiedź na pytanie; może usuwać pliki, ale nie zapobiegać .DS_Store.

Jeśli BlueHarvest jest skuteczny, ale nie pasuje do twojego przypadku użycia, trudno jest udzielić akceptowalnej odpowiedzi na twoje pytanie.

Jeśli nie masz akceptowalnego rozwiązania innej firmy, musisz pracować z tym, co stanowi integralną część systemu Leopard…

Bez rozwiązania innej firmy: ogranicz korzystanie z Findera

Unikając widoków, których nie chcesz zapisywać, możesz zapobiec tworzeniu .DS_Storeplików.

Większość użytkowników będzie miała trudności z powstrzymaniem się w ten sposób, ale jest to prawdziwa odpowiedź w granicach pytania.

http://diigo.com/0qiwp dla adnotowanego widoku http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html gdzie Matt Deatherage (były inżynier Apple) wyjaśnia .DS_Storei inne typy plików.

Graham Perrin
źródło
6

Nie znalazłem żadnego sposobu, aby zapobiec ich tworzeniu, ale możesz je usunąć automatycznie za pomocą skryptu:

#!/bin/sh

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

exit 0

Uruchom go co X minut za pomocą launchdlub cron. Uruchomienie mojego kilkuletniego iMaca prawie nie zajmuje czasu. Przeszukuje tylko Twój $ HOME (~), ale tam właśnie będzie większość. Zmień ~ na /, jeśli chcesz je usunąć na całym dysku, ale uruchomienie zajmie znacznie więcej czasu, więc odpowiednio dostosuj częstotliwość.

TJ Luoma
źródło
1
Możesz także użyć find ~ -name .DS_Store -delete. I nie zapomnij -nameflagi - bez niej polecenie dotyczyłoby wszystkich plików w ~i ./.DS_Store.
Lri
1
Wiem, że mogę użyć skryptu, ale twoja odpowiedź nie odpowiada na pytanie.
kinokijuf
Odpowiedź na pytanie brzmi „nie”. Nie ma sposobu, aby powstrzymać ich tworzenie (z wyjątkiem udziałów sieciowych, co również nie było pytaniem). Ta odpowiedź próbuje osiągnąć ten sam rezultat końcowy. Gdyby SE miało kategorię odpowiedzi zwaną „Obejściem”, podłożyłbym to pod to. Na pewno nie jest gorsza od „odpowiedzi” niż demon dołączający się do frameworka (< asepsis.binaryage.com/> ) i znacznie bezpieczniejszy niż włamanie się do systemowego pliku binarnego, i działa na dowolnej wersji Mac OS X.
TJ Luoma
Tyle że nie osiąga tego samego rezultatu końcowego. Blueharvest jest lepszym obejściem (ten sam wynik końcowy, z wyjątkiem faktu, że komputer uruchamia loke a hog). Aseptyka jest również czynnikiem IIRC.
kinokijuf
1
@kinokijuf, porzuć uprawnione podejście. Kiedy ktoś oferuje ci bezpłatną pomoc, nie możesz jej krytykować. Można po prostu stwierdzić raz, że nie jest to to, czego szukasz, ale obrona TJ Luomy (którą uczyniłeś niestety niezbędną) jest więcej niż wystarczającą wskazówką, aby się zamknąć. Jezu.
r_alex_hall
4

Aby zapobiec pojawianiu się tych brzydkich plików .DS_Store, wydaje się, że istnieje stosunkowo nowa opcja zrobienia tego czysto, nie tylko dla dysków sieciowych, takich jak:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

ale także w przypadku woluminów podłączonych przez USB:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

W stosunku do tytułu pytania PO jest to najlepsze rozwiązanie bez włamań, ponieważ rozwiązuje nie tylko problemy z siecią, ale dotyczy także większości podłączonych dysków. I to może być największą irytacją dla większości użytkowników udostępniających urządzenia takie jak pamięci USB między różnymi środowiskami. Korzysta tylko z opcji dostarczonych przez Apple i w żaden sposób nie zakłóca normalnej pracy.

W porównaniu z konkretną sytuacją wyjaśnioną w treści PO, ma on ograniczoną wartość, ponieważ ta opcja USB jest dostępna tylko w późniejszych wersjach OS X / macOS. Co więcej, nadal nie rozwiązuje to problemu .DS_Storetworzenia na dyskach wewnętrznych, na których mogą być również kłopotliwe. Chociaż w tym miejscu mogą faktycznie służyć jakimś celom.

Bardziej kompleksowe rozwiązanie tego problemu, aczkolwiek bardziej hackerskie, które działa na większości wersji systemu operacyjnego Mac, jest następujące: Aby całkowicie wyeliminować to nieprzyjemne zachowanie na wszystkich dyskach - i za pomocą binarnego narzędzia do wstawiania / wstawiania kodu, takiego jak pytanie OP tęskni za - istnieje DeathToDSStore / ze źródłem .

Obie te opcje zakładają, że każdy nadal używa Findera… Użycie innego menedżera plików rozwiązałoby również ten problem. Istnieje wiele pretendentów do zastąpienia Findera do zarządzania plikami w systemie macOS. Dwa z najlepszych psów w tej dziedzinie to Pathfinder lub XFile .

LаngLаngС
źródło
2
+1 dla polecenia USBStores (nie znałem tego!), A także dla DeathToDSStore.
Wowfunhappy
3

Spróbuj wykonać to polecenie: domyślnie zapisz com.apple.desktopservices DSDontWriteNetworkStores true w terminalu. Wydaje mi się, że to działa.

Siriss
źródło
4
Działa tylko dla sieci, a nie dla woluminów lokalnych.
kinokijuf
Masz rację. Przepraszam za zamieszanie.
4
To jedyny prawdziwy przypadek, w którym zauważyłem, że .DS_Stores jest denerwujący. Są domyślnie ukryte w systemie Mac OS i mają kluczowe znaczenie dla zapisywania ustawień widoku dla poszczególnych folderów
Alexander - Przywróć Monikę
2
Ale nie chcę zapisywać ustawień widoku.
kinokijuf
1

Stworzyłem bardziej wydajny skrypt (przeznaczony do ciągłego działania jako demon), wykona jedno wykonanie findna początku, aby wyczyścić już istniejące pliki i będzie przechwytywał nowe pliki w czasie rzeczywistym za pomocą fseventów. Będą więc nukane natychmiast po ich utworzeniu, a zużycie zasobów jest bardzo niskie. AFAIK to najlepszy możliwy sposób na pozbycie się ich bez wyłączania SIP.
Oto on - https://github.com/magicgoose/DS_Store-Kill

Wyświetlana nazwa
źródło