說明解析
“.DS_Store”文件:DS_Store 是用來存儲這個文件夾的顯示屬性的:比如文件圖標(biāo)的擺放位置。刪除以后的副作用就是這些信息的失去。(當(dāng)然,這點(diǎn)副作用其實(shí)不是太大)
“.DS_Store”是Mac OS中 保存文件夾自定義屬性的隱藏文件** ,比如:文件的圖標(biāo)位置、視圖設(shè)置 或 背景色(相當(dāng)于Windows下的desktop.ini )。
盡管這些文件本來是為Finder所使用,但它們被設(shè)想作為一種更通用的有關(guān)顯示設(shè)置的元數(shù)據(jù)存儲,諸如圖標(biāo)位置和視圖設(shè)置。
例如,在Mac OS X 10.4 "Tiger"中“.DS_Store”包含了一文件夾的所有文件的Spotlight注釋。 然而,在Mac OS X 10.5 "Leopard"中這種方式又被更改了,注釋(現(xiàn)稱為關(guān)鍵字 )被改成存儲在了擴(kuò)展文件屬性 中。
讓隱藏文件 顯示出來的方式,請參考:展示Mac里面Finder的隱藏文件
網(wǎng)站上的“.DS_Store” 文件 處理
若在和別人交換文件(或你做的網(wǎng)頁需要上傳的時候),應(yīng)該把 “.DS_Store” 文件刪除比較妥當(dāng),因?yàn)槔锩姘艘恍┠悴灰欢ㄏM麆e人看見的信息(尤其是網(wǎng)站,通過 “.DS_Store” 可以知道這個目錄里面所有文件的清單,很多時候這是一個不希望出現(xiàn)的問題)
$filepath = images;
$handle = opendir($filepath);
while (false != ($file = readdir($handle))) {
if ($file != . && $file != .. && $file != .DS_Store && $file != index.html && $file != index.htm && $file != index.php) {
if ($output) $output .= |;
$output .= $file;
closedir($handle);
echo &files=$output&; //輸出遍歷此文件夾所有的內(nèi)容
?>
常見的處理:
點(diǎn)擊這個網(wǎng)址:http://asepsis.binaryage.com/ ,下載、安裝好之后,重啟mac。ASEPSIS 會把所有的“.DS_Store” 重定向到 "/usr/local/.dscage"路徑
然后可以用以下指令刪除mac上所有的“.DS_Store”:
find ~ -name ".DS_Store" -delete
// 或者
find <your path> -name ".DS_Store" -delete
對“.DS_store”的 生死操作:
1.禁止 “.DS_store”生成:
打開terminal,復(fù)制黏貼下面的命令,回車執(zhí)行,重啟Mac即可生效。
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
2.恢復(fù) “.DS_store”生成:
defaults delete com.apple.desktopservices DSDontWriteNetworkStores
3.刪除 所有目錄的“.DS_store”文件:
在terminal中輸入:
sudo find / -name ".DS_Store" -depth -exec rm {} \;
??:刪除 當(dāng)前目錄的“.DS_store”文件
find . -name '*.DS_Store' -type f -delete
項(xiàng)目工程中 處理
而在xcode中,使用 集中式的svn、分布式的git等版本管理工具 進(jìn)行管理的時候,也會多出一個“.DS_Store”文件(用于存儲當(dāng)前文件夾的一些 Meta 信息)。
而在每次提交代碼時,都需要在代碼倉庫的 “.gitignore”文件 中 聲明,忽略這類文件。
??當(dāng)然有方法可以全局性的忽略:
1.創(chuàng)建 “~/.gitignore_global” 文件,把需要全局忽略的文件類型塞到這個文件里。
# .gitignore_global
####################################
######## OS generated files ########
####################################
.DS_Store
.DS_Store?
*.swp
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
####################################
############# packages #############
####################################
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
2.在自己的 “~/.gitconfig” 中引入 “.gitignore_global”。
“.gitconfig” 文件 ??:
[user]
name = goyohol
email = xxxxx@163.com
[push]
default = matching
[core]
excludesfile = /Users/goyohol/.gitignore_global
搞定之后!在所有的文件夾下 “.DS_Store”、“.swp”、“.zip” 等文件類型會被 Git 自動忽略。
本文參考 :
知乎 : .DS_Store 文件是什么?
stackoverflow : .gitignore all the .DS_Store files in every folder and subfolder
stackoverflow : Global Git ignore
OSXDaily : What is a .DS_Store file?
github : gitignore/Global/