禁止 .DS_store 生成
禁止.DS_store生成

image.png
.DS_Store,英文全稱 Desktop Services Store,是Mac OS中儲存資料夾自定義屬性的隱藏檔案,目的在於存貯資料夾的自定義屬性,例如檔案圖示位置、檢視設定,或背景色等,相當於 Windows 下的 desktop.ini 。.DS_Store 預設放在每個資料夾的下面,這給我們帶來了諸多不便,例如:
- 壓縮包裡每個資料夾都帶有.DS_Store檔案,在windows系統裡面成了垃圾檔案;
- git、svn之類的版本管理工具要額外的對這種檔案進行忽略處理;
- 如果是要釋出到伺服器的資料夾,可能會形成 ofollow,noindex">檔案洩露漏洞 。
在 macOS High Sierra 之後,我們看到蘋果對此做出了優化,即使你在finder中使用快捷鍵 Shift + Command (⌘) + .
來顯示隱藏檔案 ,finder也不再顯示隱藏的.DS_Store檔案,但是在終端中,我們還是可以用 ll
命令看到它的身影,蘋果這是要掩耳盜鈴嗎?
那我們有什麼辦法來禁止.DS_Store的生成呢?網上流傳的禁止.DS_Store生成方法是使用命令:
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
但是這個命令只有在網路共享的時候有效,也就是在本地無效。比如拖動一下圖示的位置或者標記一下就會自動生成了,不是我們所理想的禁止生成,所以還是需要針對本地進行處理。
是時候出動 Asepsis 這把瑞士軍刀了!
一直以來,Asepsis 都是我在mac OS 上必裝工具之一,它會阻止Finder將.DS_Store檔案寫入資料夾。 Asepsis的工作原理是攔截所有.DS_Store檔案的建立或寫入,並將它們重定向到 /usr/local/.dscage
。 這樣 Finder 如常工作,且不會有這種無用檔案汙染檔案系統。
不幸的是,在 OS X 10.11 El Capitan 釋出之後,Apple 啟用了 System Integrity Protection (SIP) ,它會阻止 Asepsis 的安裝和正常執行。Asepsis 的作者已經放棄了對它的後續支援,因為他不希望使用者為了使用這個工具而禁用系統關鍵安全服務。
那有什麼辦法呢?
事實上我們可以在保持SIP啟用的情況安裝 Asepsis !
1) 安裝 Asepsis
首先,開啟終端並執行以下命令:
$ touch ~/.no-asepsis-os-restriction $ touch ~/.asepsis-suppress-update-errors
目的是繞過Asepsis的內建相容性檢查,因為它不能識別 El Capitan 之後的版本。
現在 你可以從 官網 安裝最新版本的Asepsis(截至2016年2月為 1.5.2 )。 執行安裝程式,它提示你重新啟動,這時SIP會阻止工具的執行。
2) 進入恢復模式並禁用 SIP
重啟電腦,按住 Command (⌘) + R
鍵進入 恢復模式
。
看到 macOS 實用工具
屏幕後,轉到螢幕頂部的 實用工具
下拉選單,然後選擇 終端
,輸入:
$ csrutil disable; reboot
等待電腦重啟。
3) 安裝 Asepsis
返回非恢復模式後,開啟終端並執行以下命令安裝Asepsis
$ asepsisctl install
如果發現警告 wrapper already existing
,有可能之前已經安裝過Asepsis,此時嘗試執行 asepsisctl uninstall_wrapper
然後重新執行 asepsisctl install
。
4) 重新啟用 SIP
重啟並按住 Command (⌘) + R 進入恢復模式,執行命令:
$ csrutil enable; reboot
5) 驗證 Asepsis 是否工作
重啟後執行命令:
$ asepsisctl diagnose
如果正常的話你會看到: Your Asepsis installation seems to be OK .
贈送命令:
# 刪除系統所有.DS_Store檔案 $ sudo find / -name ".DS_Store" -depth -exec rm **{}** \; # 刪除當前目錄以及子目錄的DS_Store檔案 $ find . -name ".DS_Store" -delete