.DS_Store的说明

     今天清理电脑时,突然发现好像有文件的地方都会出现一个.DS_Store文件,今天有时间,索性就查了一下,并做总结发表一篇吧,怕有什么影响,并未真正实施,仅仅供自己收藏,仅供大家参考。

     DS_Store 是用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。删除以后的副作用就是这些信息的失去。(当然,这点副作用其实不是太大)。
尽管这些文件本来是为 Finder所使用,但它们被设想作为一种更通用的有关显示设置的 元数据存储,诸如图标位置和视图设置。 例如,在 Mac OS X 10.4 "Tiger "中.DS_Store包含了一文件夹的所有文件的 Spotlight注释。然而,在 Mac OS X 10.5 "Leopard"中这种方式又被更改了,注释(现称为关键字)被改成存储在了扩展 文件属性中。
和别人交换文件(或你做的网页需要上传的时候)应该把 .DS_Store 文件删除比较妥当,因为里面包含了一些你不一定希望别人看见的信息(尤其是网站,通过 .DS_Store 可以知道这个目录里面所有文件的清单,很多时候这是一个不希望出现的问题)。
     这个是苹果机上的文件,如果文件有这个后缀,证明这些文件曾经在苹果MAC OS的系统上存储过,一般来说删除就行了,影响不大.
1.
terminal中输入:
sudo find / -name ".DS_Store" -depth -exec rm {} \;
删除所有.DS_Store文件。
 
2,禁止.DS_store生成:
打开 “终端” ,复制黏贴下面的命令,回车执行,重启Mac即可生效。
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE 
3,恢复.DS_store生成:
defaults delete com.apple.desktopservices DSDontWriteNetworkStores 

 

转载于:https://www.cnblogs.com/AnnieBabygn/p/6005016.html

解释分析细致讲解一下这段代码int ncds_file_editconfig_internal (struct ncds_ds *ds, NC_DATASTORE target, char config) { struct ncds_ds_file * file_ds = (struct ncds_ds_file )ds; xmlDocPtr config_doc, datastore_doc; xmlNodePtr target_ds, tmp_target_ds, aux_node, root; int retval = EXIT_SUCCESS, ret; char aux = NULL; const char configp; LOCK(file_ds,ret); if (ret) { return EXIT_FAILURE; } DBG("enter %s/%d\n", func,LINE); if(file_fill_dsnodes(file_ds)) { UNLOCK(file_ds); ERROR("%s: file_ds->running_all/startup_all/candidate_all is NULL\n", func); return EXIT_FAILURE; } DBG("%s step1\n", func); file_rollback_store(file_ds); switch(target) { case NC_DATASTORE_RUNNING: target_ds = file_ds->running; break; case NC_DATASTORE_STARTUP: target_ds = file_ds->startup; break; case NC_DATASTORE_CANDIDATE: target_ds = file_ds->candidate; break; default: UNLOCK(file_ds); ERROR("%s: invalid target.", func); return EXIT_FAILURE; break; } if (strncmp(config, "<?xml", 5) == 0) { if ((configp = strchr(config, '>')) == NULL) { UNLOCK(file_ds); ERROR("%s: invalid config.", func); return EXIT_FAILURE; } ++configp; while (*configp == ' ' || *configp == '\n' || configp == '\t') { ++configp; } } else { configp = config; } if (asprintf(&aux, "<config>%s</config>", configp) == -1) { UNLOCK(file_ds); ERROR("asprintf() failed (%s:%d).", FILE, LINE); return EXIT_FAILURE; } if ((config_doc = xmlReadMemory (aux, strlen(aux), NULL, NULL, NC_XMLREAD_OPTIONS)) == NULL) { UNLOCK(file_ds); free(aux); ERROR("%s: Reading xml data failed!", func); return EXIT_FAILURE; } free(aux); root = xmlDocGetRootElement(config_doc); for (aux_node = root->children; aux_node != NULL; aux_node = root->children) { xmlUnlinkNode(aux_node); xmlAddNextSibling(config_doc->last, aux_node); } aux_node = root->next; xmlUnlinkNode(root); xmlFreeNode(root); datastore_doc = xmlNewDoc (BAD_CAST "1.0"); xmlDocSetRootElement(datastore_doc, xmlCopyNode(target_ds->children, 1)); if (target_ds->children) { for (root = target_ds->children->next; root != NULL; root = aux_node) { aux_node = root->next; xmlAddNextSibling(datastore_doc->last, xmlCopyNode(root, 1)); } } retval = edit_config_internal(datastore_doc, config_doc, (struct ncds_ds)file_ds, NC_EDIT_DEFOP_NOTSET); if (EXIT_SUCCESS == retval) { #if 1 while ((aux_node = target_ds->children) != NULL) { xmlUnlinkNode(aux_node); xmlFreeNode(aux_node); } xmlAddChildList(target_ds, xmlCopyNodeList(datastore_doc->children)); if (file_sync(file_ds)) { retval = EXIT_FAILURE; } #endif } else { retval = EXIT_FAILURE; } UNLOCK(file_ds); xmlFreeDoc (datastore_doc); xmlFreeDoc (config_doc); return retval; }
06-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值