禁止.DS_store生成
.DS_Store师逸,英文全稱 Desktop Services Store伸刃,是Mac OS中保存文件夾自定義屬性的隱藏文件恨憎,目的在于存貯文件夾的自定義屬性撼港,例如文件圖標(biāo)位置督弓、視圖設(shè)置塘幅,或背景色等昔案,相當(dāng)于Windows下的 desktop.ini。.DS_Store 默認(rèn)放在每個(gè)文件夾的下面电媳,這給我們帶來(lái)了諸多不便踏揣,例如:
- 壓縮包里每個(gè)文件夾都帶有.DS_Store文件,在windows系統(tǒng)里面成了垃圾文件匾乓;
- git捞稿、svn之類的版本管理工具要額外的對(duì)這種文件進(jìn)行忽略處理;
- 如果是要發(fā)布到服務(wù)器的文件夾,可能會(huì)形成文件泄露漏洞娱局。
在 macOS High Sierra 之后彰亥,我們看到蘋(píng)果對(duì)此做出了優(yōu)化,即使你在finder中使用快捷鍵 Shift + Command (?) + .
來(lái)顯示隱藏文件 衰齐,finder也不再顯示隱藏的.DS_Store文件任斋,但是在終端中,我們還是可以用 ll
命令看到它的身影耻涛,蘋(píng)果這是要掩耳盜鈴嗎废酷?
那我們有什么辦法來(lái)禁止.DS_Store的生成呢?網(wǎng)上流傳的禁止.DS_Store生成方法是使用命令:
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
但是這個(gè)命令只有在網(wǎng)絡(luò)共享的時(shí)候有效抹缕,也就是在本地?zé)o效澈蟆。比如拖動(dòng)一下圖標(biāo)的位置或者標(biāo)記一下就會(huì)自動(dòng)生成了,不是我們所理想的禁止生成歉嗓,所以還是需要針對(duì)本地進(jìn)行處理丰介。
是時(shí)候出動(dòng) Asepsis 這把瑞士軍刀了背蟆!
一直以來(lái)鉴分,Asepsis 都是我在mac OS 上必裝工具之一,它會(huì)阻止Finder將.DS_Store文件寫(xiě)入文件夾带膀。 Asepsis的工作原理是攔截所有.DS_Store文件的創(chuàng)建或?qū)懭胫菊洌⑺鼈冎囟ㄏ虻?/usr/local/.dscage
。 這樣 Finder 如常工作垛叨,且不會(huì)有這種無(wú)用文件污染文件系統(tǒng)伦糯。
不幸的是,在 OS X 10.11 El Capitan 發(fā)布之后嗽元,Apple 啟用了 System Integrity Protection (SIP)敛纲,它會(huì)阻止 Asepsis 的安裝和正常運(yùn)行。Asepsis 的作者已經(jīng)放棄了對(duì)它的后續(xù)支持剂癌,因?yàn)樗幌M脩魹榱耸褂眠@個(gè)工具而禁用系統(tǒng)關(guān)鍵安全服務(wù)淤翔。
那有什么辦法呢?
事實(shí)上我們可以在保持SIP啟用的情況安裝 Asepsis 佩谷!
1) 安裝 Asepsis
首先旁壮,打開(kāi)終端并運(yùn)行以下命令:
$ touch ~/.no-asepsis-os-restriction
$ touch ~/.asepsis-suppress-update-errors
目的是繞過(guò)Asepsis的內(nèi)置兼容性檢查,因?yàn)樗荒茏R(shí)別 El Capitan 之后的版本谐檀。
現(xiàn)在 你可以從官網(wǎng)安裝最新版本的Asepsis(截至2016年2月為1.5.2)抡谐。 運(yùn)行安裝程序,它提示你重新啟動(dòng)桐猬,這時(shí)SIP會(huì)阻止工具的運(yùn)行麦撵。
2) 進(jìn)入恢復(fù)模式并禁用 SIP
重啟電腦,按住 Command (?) + R
鍵進(jìn)入 恢復(fù)模式
。
看到 macOS 實(shí)用工具
屏幕后免胃,轉(zhuǎn)到屏幕頂部的 實(shí)用工具
下拉菜單五垮,然后選擇 終端
,輸入:
$ csrutil disable; reboot
等待電腦重啟杜秸。
3) 安裝 Asepsis
返回非恢復(fù)模式后放仗,打開(kāi)終端并運(yùn)行以下命令安裝Asepsis
$ asepsisctl install
如果發(fā)現(xiàn)警告
wrapper already existing
,有可能之前已經(jīng)安裝過(guò)Asepsis撬碟,此時(shí)嘗試運(yùn)行asepsisctl uninstall_wrapper
然后重新運(yùn)行asepsisctl install
诞挨。
4) 重新啟用 SIP
重啟并按住 Command (?) + R 進(jìn)入恢復(fù)模式,運(yùn)行命令:
$ csrutil enable; reboot
5) 驗(yàn)證 Asepsis 是否工作
重啟后運(yùn)行命令:
$ asepsisctl diagnose
如果正常的話你會(huì)看到:Your Asepsis installation seems to be OK.
贈(zèng)送命令:
# 刪除系統(tǒng)所有.DS_Store文件
$ sudo find / -name ".DS_Store" -depth -exec rm **{}** \;
# 刪除當(dāng)前目錄以及子目錄的DS_Store文件
$ find . -name ".DS_Store" -delete