Có cách nào để ngăn chặn các tệp .DS_Store không được tạo ra không?


14

Có cách nào (ví dụ: hack nhị phân vào Finder) để ngăn chặn nó tạo .DS-Stores trên LOCAL Volume không?

Tôi đang sử dụng Leopard, vì vậy những thứ này không hoạt động:

Ngoài ra, BlueHarvest làm chậm máy tính của tôi.


1
Xem: Ngăn MacOS tạo các tệp. * Và ._ * - bất kỳ lý do cụ thể nào khiến bạn không muốn những thứ này?
slhck

@slhck: blueharvest hoạt động, nhưng làm chậm máy tính của tôi. Tôi đang tìm kiếm một cái gì đó như thế này
kinokijuf

Tôi đã quên rằng Total Downloader chỉ hoạt động trên .6 10.6, xin lỗi.
slhck

Câu hỏi này sẽ quá cục bộ nếu nó dành riêng cho Leopard và trước đó. Câu trả lời chỉ có thể đề cập đến phiên bản thấp nhất hiện tại hoặc được hỗ trợ cao nhất nếu có.
Lri

Câu trả lời:


3

Giải pháp của bên thứ ba

Theo kinh nghiệm của tôi, BlueHarvest là tốt nhất trong lớp. Về mặt kỹ thuật, nó không phải là một câu trả lời cho câu hỏi; nó có thể loại bỏ nhưng không ngăn chặn .DS_Storecác tập tin.

Nếu BlueHarvest có hiệu quả nhưng không phù hợp với trường hợp sử dụng của bạn, việc đưa ra câu trả lời chấp nhận cho câu hỏi của bạn trở nên khó khăn.

Nếu bạn không có giải pháp bên thứ ba chấp nhận được, thì bạn phải làm việc với những gì không thể thiếu với Leopard

Nếu không có giải pháp của bên thứ ba: hãy hạn chế sử dụng Finder

Bằng cách tránh các chế độ xem mà bạn không muốn lưu, bạn có thể ngăn việc tạo .DS_Storetệp.

Hầu hết người dùng sẽ khó kiềm chế bản thân theo cách này, nhưng đó là một câu trả lời thực sự trong giới hạn của câu hỏi.

http://diigo.com/0qiwp cho chế độ xem chú thích của http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html nơi Matt Deatherage (một kỹ sư cũ của Apple) giải thích .DS_Storevà khác các loại tập tin.


6

Tôi chưa tìm thấy cách nào để giữ chúng khỏi bị tạo, nhưng bạn có thể xóa chúng tự động bằng một tập lệnh:

#!/bin/sh

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

exit 0

Chạy nó mỗi X phút qua launchdhoặc cron. Gần như không mất thời gian để chạy trên iMac vài năm tuổi của tôi. Nó sẽ chỉ tìm kiếm $ HOME (~) của bạn nhưng đó là nơi hầu hết trong số họ sẽ ở đó. Thay đổi ~ thành / nếu bạn muốn xóa chúng trên toàn bộ ổ đĩa, nhưng sẽ mất nhiều thời gian hơn để chạy, do đó điều chỉnh tần số phù hợp.


1
Bạn cũng có thể sử dụng find ~ -name .DS_Store -delete. Và đừng quên -namecờ - không có nó, lệnh sẽ áp dụng cho tất cả các tệp trong ~./.DS_Store.
Lri

1
Tôi biết rằng tôi có thể sử dụng một tập lệnh, nhưng câu trả lời của bạn không trả lời câu hỏi của anh ấy.
kinokijuf

Câu trả lời cho câu hỏi là "không." Không có cách nào để ngăn chặn chúng được tạo ra (ngoại trừ trên các chia sẻ mạng, đó cũng không phải là câu hỏi). Câu trả lời này cố gắng để đạt được kết quả cuối cùng. Nếu SE có một thể loại trả lời gọi là "Cách giải quyết" thì tôi sẽ đặt nó dưới đó. Nó chắc chắn không tệ hơn "câu trả lời" so với trình nền gắn vào khung (< asepsis.binaryage.com/> ) và an toàn hơn nhiều so với hack vào hệ thống nhị phân của hệ thống và nó chạy trên mọi phiên bản Mac OS X.
TJ Luoma

Ngoại trừ nó không đạt được kết quả cuối cùng. Blueharvest là một cách giải quyết tốt hơn (cùng kết quả cuối cùng, tiết kiệm cho thực tế là máy tính chạy loke một con lợn). Ngoài ra vô trùng là một trình điều khiển IIRC.
kinokijuf

1
@kinokijuf, bỏ thái độ có quyền. Khi ai đó giúp bạn miễn phí, bạn không được chỉ trích. Thật công bằng khi chỉ đơn giản, một lần, rằng đó không phải là thứ bạn đang tìm kiếm, nhưng sự bảo vệ của TJ Luoma (mà bạn thực sự cần thiết) là quá đủ để bạn phải im lặng. Trời ạ.
r_alex_hall

4

Để ngăn các tệp .DS_Store xấu xí đó hiển thị, dường như có một tùy chọn tương đối mới để thực hiện việc này một cách sạch sẽ, không chỉ cho các ổ đĩa mạng, như:

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

mà còn cho các khối kết nối USB:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true

Liên quan đến tiêu đề câu hỏi của OP, đây là giải pháp tốt nhất mà không bị hack, vì nó không chỉ giải quyết vấn đề về mạng mà còn ảnh hưởng đến hầu hết các đĩa được kết nối. Và đó có thể là những phiền toái lớn nhất đối với hầu hết người dùng chia sẻ các thiết bị như thẻ nhớ USB giữa các môi trường khác nhau. Nó chỉ sử dụng các tùy chọn do Apple cung cấp và không can thiệp vào hoạt động bình thường dưới bất kỳ hình thức nào.

Liên quan đến tình huống cụ thể được giải thích trong phần thân OP, nó có giá trị hạn chế, vì tùy chọn USB này chỉ có sẵn trong các phiên bản sau của OS X / macOS. Hơn nữa, điều này vẫn không giải quyết được vấn đề .DS_Storetạo trên các đĩa bên trong, nơi chúng cũng có thể gây rắc rối. Mặc dù ở nơi đó họ thực sự có thể phục vụ một số mục đích.

Một giải pháp toàn diện hơn cho vấn đề này, mặc dù là một giải pháp mạnh mẽ hơn, hoạt động trên hầu hết các phiên bản của hệ điều hành Mac như sau: Để khắc phục hoàn toàn hành vi khó chịu này trên tất cả các đĩa - và với trình vá mã nhị phân / trình tiêm mã như câu hỏi của OP khao khát - có DeathToDSStore / với nguồn .

Cả hai tùy chọn này đều cho rằng bất kỳ ai vẫn sử dụng Finder Finder Sử dụng trình quản lý tệp khác nhau cũng sẽ giải quyết được vấn đề này. Có rất nhiều ứng cử viên để thay thế Finder để quản lý tệp trên macOS. Hai trong số những con chó hàng đầu trong lĩnh vực này là Pathfinder hoặc XFile .


2
+1 cho lệnh USBStores (Tôi không biết cái đó!) Cũng như DeathToDSStore.
Wowfunhappy

3

Hãy thử lệnh này: mặc định ghi com.apple.desktopservice DSDontWriteNetworkStores true trong terminal. Nó dường như làm việc cho tôi.


4
Nó chỉ hoạt động cho mạng, không phải cho khối lượng địa phương.
kinokijuf

Bạn nói đúng. Tôi xin lỗi vì sự nhầm lẫn của tôi.

4
Đây là trường hợp thực tế duy nhất mà tôi có thể thấy .DS_Stores gây phiền nhiễu. Chúng được ẩn trên Mac OS theo mặc định và rất quan trọng để lưu cài đặt chế độ xem cho các thư mục riêng lẻ
Alexander - Phục hồi Monica

2
Nhưng tôi không muốn lưu cài đặt xem.
kinokijuf

1

Tôi đã tạo một tập lệnh hiệu quả hơn (dự định được chạy liên tục dưới dạng daemon), nó sẽ thực hiện một lần thực hiện findngay từ đầu để xóa các tệp đã có và nó sẽ bắt các tệp mới trong thời gian thực thông qua các fsevents. Vì vậy, chúng sẽ bị thu hồi ngay lập tức khi chúng được tạo ra và việc sử dụng tài nguyên rất thấp. AFAIK đây là cách tốt nhất có thể để loại bỏ chúng mà không vô hiệu hóa SIP.
Đây là - https://github.com/magicgoose/DS_Store-Kill

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.